如何永久嵌入带有 url 的 Youtube 实时聊天?

Posted

技术标签:

【中文标题】如何永久嵌入带有 url 的 Youtube 实时聊天?【英文标题】:How to embed Youtube live chat with url permanent? 【发布时间】:2017-11-05 08:52:35 【问题描述】:

频道直播的嵌入网址是:

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。 如何解决?也许使用 phpjavascript 中的脚本读取当前 YouTube URL 并替换聊天嵌入 URL 中的视频 ID? 谢谢

【问题讨论】:

【参考方案1】:

您可以像这样使用 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;

【讨论】:

哇,这比尝试使用 OAuth 2 找出 Google 过于复杂的 developers.google.com/youtube/v3/live/… 要容易得多。请注意,这仅适用于公共视频。【参考方案2】:

您应该能够使用YouTube Live Streaming API 获取 id 并使用直播数据来满足您的任何需求。

确实,其中一个用例是:

关联视频流和广播。

在this page,您有一个关于如何“检索频道的视频流”的 PHP 示例。在该代码中,$streamItem 是 LiveStream,其中包含直播流的 id,您可以利用它。

在相关说明中,API 还允许您使用 LiveBroadcasts,其中包含引用 snippet.liveChatId 以将其链接到 LiveChatMessages。后者也允许您以任何您想要的格式处理消息。也许,这会更好地满足您的需求。上一页的示例代码,也有一个很好的例子来说明如何“检索频道的广播”。

我可以在这里复制代码,但我认为最好的工作示例在 API 参考中有很好的记录:)

【讨论】:

以上是关于如何永久嵌入带有 url 的 Youtube 实时聊天?的主要内容,如果未能解决你的问题,请参考以下文章

YouTube Vimeo 视频 ID 来自嵌入代码或来自带有 PHP 正则表达式 RegEx 的 URL

如何在括号中修复我的 YouTube 嵌入式代码,以便实时预览能够正常工作?

如何在 tvOS 上使用 Youtube API 嵌入实时流

如何嵌入带有 4000 多个视频的缩略图的 youtube 频道

如何将 youtube 视频嵌入为带有自动播放、循环和隐藏观看、分享、Youtube 徽标和视频标题的标题?

如何将 youtube 频道嵌入网站?