【问题标题】:YouTube API: How do I get the liveChatId?YouTube API:如何获取 liveChatId?
【发布时间】:2016-08-09 14:16:26
【问题描述】:

文档说:

“liveChatId 参数指定将返回其消息的聊天 ID。与广播关联的实时聊天 ID 在 liveBroadcast 资源的 sn-p.liveChatId 属性中返回。”

但是当使用 APIs Explorer 和 youtube.liveBroadcasts.list 获取 liveBroadcast 的 sn-p 时,返回的结果中没有 liveChatId 属性。

我正在使用以下 URI(省略键):

https://www.googleapis.com/youtube/v3/liveBroadcasts?part=snippet&mine=true

我做错了什么?

这是响应(一些值替换为...):

{
 "kind": "youtube#liveBroadcastListResponse",
 "etag": "...",
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 5
 },
 "items": [
  {
   "kind": "youtube#liveBroadcast",
   "etag": "...",
   "id": "...",
   "snippet": {
    "publishedAt": "2016-04-18T17:04:24.000Z",
    "channelId": "...",
    "title": "...",
    "description": "...",
    "thumbnails": {
     "default": {
      "url": "...",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "...",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "...",
      "width": 480,
      "height": 360
     },
     "standard": {
      "url": "...",
      "width": 640,
      "height": 480
     },
     "maxres": {
      "url": "...",
      "width": 1280,
      "height": 720
     }
    },
    "scheduledStartTime": "1970-01-01T00:00:00.000Z",
    "actualStartTime": "2016-04-18T17:04:24.250Z",
    "isDefaultBroadcast": false
   }
  }
 ]
}

在请求时,流上还发生了一个活跃的对话。

显然,使用“Stream now”创建的直播不包含 liveChatId,即使它们包含实时聊天。

有没有办法为“立即直播”直播获取 liveChatId?

【问题讨论】:

  • 您能否发布从 YouTube 获得的示例回复?您确定您列出的活动已实际开始并具有有效的聊天室/ID?
  • 用请求的信息更新了帖子。直播正在流式传输,并且聊天室在请求时处于活动状态。如果我没有流式传输,则响应中没有项目,正如预期的那样。
  • 你说的是liveBroadcast的liveChatId还是用户的liveChatId(用于禁止或删除)?
  • liveBroadcast 的 liveChatId,所以我可以阅读流的聊天内容。
  • 基本上,我只需要知道从哪里获取 youtube.liveChatMessages.list 的 liveChatId,因为文档不正确。

标签: youtube youtube-api youtube-livestreaming-api


【解决方案1】:

这是一篇相当老的帖子,但是看到我在互联网上搜索了一个答案但找不到答案,我希望有人觉得这很有帮助。

要获取属于您的直播活动的 liveChatId,您可以执行以下操作:

首先,获取videoId

response.items[0].id.videoId

然后获取 liveStreamingDetails

buildApiRequest('GET',
        '/youtube/v3/videos', {
            'id': videoID,
            'part': 'snippet,contentDetails,statistics,liveStreamingDetails'
        });

现在您可以通过以下方式从上述响应中获取 liveChatId:

response.items[0].liveStreamingDetails.activeLiveChatId

【讨论】:

    【解决方案2】:

    有没有办法为“立即直播”直播获取 liveChatId?

    是的,你可以。我有一个自动化系统,它只使用这种设置来进行“立即流式传输”流。

    据我所知,我所做的唯一不同的事情是在 API URI 中指定 broadcastType=allbroadcastType=persistent

    您会注意到我的流是默认流,但并非必须如此。事实上,基本上LiveStream 端点唯一有用的方面就是.status.configurationIssues 信息。 (甚至 streamName 摄取地址都不匹配)

    这就是我将两个端点关联起来的方式。也许您可以使用此模板填写一些空白。 (所有字符串随机化,thumbnails 部分已删除)

    直播

    URI:https://www.googleapis.com/youtube/v3/liveStreams/?part=status,sn-p&default=true

    回应:

    { "kind": "youtube#liveStreamListResponse", "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/rqgpDvaMrWOPqUrLPxJd4XUFoKg\"", “页面信息”:{ “总结果”:1, “结果每页”:5 }, “项目”: [ { "kind": "youtube#liveStream", "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/SRutyOE9apA9K1qAdh2s9ZYE-Dp\"", "id": "e5LT2xEURi9BQzf2rLe5eB3325081929219850", “sn-p”:{ “发布时间”:“2016-09-05T23:21:33.000Z”, "channelId": "QIr0IE1wRTRj2SUku4eFj0mK", "title": "默认流", “描述”: ””, “isDefaultStream”:真 }, “状态”: { "streamStatus": "活动", “健康状况”: { “状态”:“好” } } } ] }

    直播:

    URI:https://www.googleapis.com/youtube/v3/liveBroadcasts/?part=status,contentDetails,sn-p,id&broadcastStatus=active&broadcastType=persistent

    回应:

    { "kind": "youtube#liveBroadcastListResponse", "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/MFvQunCBDdqlkhPMness6LN1zao\"", “页面信息”:{ “总结果”:1, “结果每页”:5 }, “项目”: [ { "kind": "youtube#liveBroadcast", "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/mK_CAQ9rrVulNXbKbeIveFnQPd8\"", "id": "eXrevq9RzVQ", “sn-p”:{ “发布时间”:“2017-05-07T16:58:05.000Z”, "channelId": "QIr0IE1wRTRj2SUku4eFj0mK", "title": "514306-pgju", “描述”: ””, “scheduledStartTime”:“1970-01-01T00:00:00.000Z”, "actualStartTime": "2017-05-08T01:21:45.000Z", “isDefaultBroadcast”:真, "liveChatId": "NiHXTCKPfAyCJrPgREDRnvMSL0N5LBiVUlZoLSULA9vqyoR" }, “状态”: { "lifeCycleStatus": "生活", "privacyStatus": "未列出", “录音状态”:“录音” }, “内容详细信息”:{ "boundStreamId": "e5LT2xEURi9BQzf2rLe5eB3325081929219850", "boundStreamLastUpdateTimeMs": "2016-09-05T23:21:33.749Z", “监控流”:{ “启用监视器流”:假 }, “启用嵌入”:是的, “enableDvr”:是的, “启用内容加密”:假, “startWithSlate”:假, “recordFromStart”:真, “enableClosedCaptions”:假, "closedCaptionsType": "closedCaptionsDisabled", “启用LowLatency”:假, “投影”:“矩形” } } ] }

    请注意,正如您在一定程度上注意到的那样,通过 API 处理“Stream Now”事件,不仅仅是特定于 liveChatId,还有一些配置设置会更改使用默认参数返回结果的方式,有时他们可以更改流程中涉及的顺序和步骤。我什至发现实际上有一些参数可用于未记录的LiveStream 端点,LiveBroadcast 端点也是如此。 另外还有一些bug。

    【讨论】:

      【解决方案3】:

      YouTube 目前不支持将 API 调用与“立即直播”混合使用以及通过 API 创建事件。无法从“Stream Now”广播中获取聊天消息,只能使用完全使用 API 创建的广播。

      如果您认为这是 API 缺陷,我建议您打开增强或缺陷票 here

      【讨论】:

      • 这并不完全正确。您可以手动创建实时事件并从该流中获取聊天消息。但是您对“立即流式传输”是正确的。谢谢。 :)
      • @C.Olimar :可以确认手动创建事件有效。谢谢:)
      • @AvindraGoolcharan 你能提供代码提示如何做到这一点吗?
      • @KMX 根据我的评论,我“手动”创建了该事件 - 即不涉及任何代码。只需使用 YouTube 的用户界面
      猜你喜欢
      • 1970-01-01
      • 2019-02-28
      • 2017-10-24
      • 2020-07-21
      • 2020-12-08
      • 2019-12-29
      • 2014-03-14
      • 2017-05-29
      • 2014-07-19
      相关资源
      最近更新 更多