如何嵌入永久的YouTube直播聊天室?

13

频道直播的嵌入式URL为:

https://www.youtube.com/embed/live_stream?channel=CHANNEL_ID

它是可以工作的,但如果我想在它附近嵌入一个YouTube直播聊天室以供当前流媒体使用,那么我使用的嵌入URL是:

https://www.youtube.com/live_chat?v=VIDEOID&embed_domain=DOMAINURL 
问题在于:每次新的直播流程,视频ID都会发生更改。因此嵌入代码不再有效,下一次直播将无法显示聊天内容。我希望有一个永久的URL直播聊天有效,适用于我所有的YouTube流程,而不需要每次手动更改视频ID。如何解决?也许可以使用PHP或JavaScript脚本读取当前的YouTube URL,并在聊天嵌入URL中替换视频ID?谢谢
2个回答

10
您可以使用以下PHP代码获取视频ID:
<?php

try {
    $videoId = getLiveVideoID('CHANNEL_ID');

    // Output the Chat URL
    echo "The Chat URL is https://www.youtube.com/live_chat?v=".$videoId;
} catch(Exception $e) {
    // Echo the generated error
    echo "ERROR: ".$e->getMessage();
}

// The method which finds the video ID
function getLiveVideoID($channelId)
{
    $videoId = null;

    // Fetch the livestream page
    if($data = file_get_contents('https://www.youtube.com/embed/live_stream?channel='.$channelId))
    {
        // Find the video ID in there
        if(preg_match('/\'VIDEO_ID\': \"(.*?)\"/', $data, $matches))
            $videoId = $matches[1];
        else
            throw new Exception('Couldn\'t find video ID');
    }
    else
        throw new Exception('Couldn\'t fetch data');

    return $videoId;
}

1
哇,这比试图弄清楚Google过于复杂的https://developers.google.com/youtube/v3/live/registering_an_application with OAuth 2要容易得多。请注意,这仅适用于公共视频。 - Ryan

4
你应该能够使用 YouTube直播流API获取id并将直播流数据用于任何需要的地方。
事实上,其中一种用例是:
  • 关联视频流和广播。
此页面上,您可以找到一个PHP示例,演示如何“检索频道的视频流”。在那段代码中,$streamItem是一个 LiveStream,其中包含直播流的id,您可以利用它。

相关的是,API 还允许您使用现场直播,其中包含引用snippet.liveChatId 的链接,以将其链接到实时聊天消息。后者允许您以任何格式处理消息。也许,这会更适合您的需求。前一页示例代码还有一个很好的示例,说明了如何“检索频道的广播”。

我可以在这里复制代码,但我认为最好的工作示例已经在 API 的参考文档中得到充分的记录 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接