チャンネルのライブストリームの埋め込みURLは次のとおりです。
https://www.youtube.com/embed/live_stream?channel=CHANNEL_ID
それは機能しますが、近くに埋め込みたい場合は、埋め込みに使用するURLを現在のストリーミング用にYouTubeライブチャットにします。
https://www.youtube.com/live_chat?v=VIDEOID&embed_domain=DOMAINURL
問題はこれです。新しいライブストリームごとにビデオIDが変更されます。埋め込みコードが無効になり、次のストリーミングでチャットが表示されないようにするため、毎回手動でビデオIDを変更せずに、すべてのYouTubeストリーミングで有効な永続的なURLライブチャットが必要です。解決するには?おそらくPHPまたはJavaScriptのスクリプトで、現在のYouTube URLを読み取り、チャットの埋め込みURLのビデオIDを置き換えるJavaScriptを使用しますか?
次のように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;
}
YouTubeライブストリーミングAPI を使用してIDを取得し、必要に応じてライブストリームデータを使用できる必要があります。
実際、ユースケースの1つは次のとおりです。
このページ には、「チャネルのビデオストリームを取得する」方法のPHPの例があります。そのコードでは、$ streamItemは LiveStream 、これはライブストリームのIDを含み、それを活用できます。
関連するメモとして、APIを使用すると、 LiveBroadcasts を操作できます。これには、参照_snippet.liveChatId
_を含み、 LiveChatMessages 。後者を使用すると、必要な任意の形式でメッセージを操作できます。おそらく、これはあなたのニーズによりよく合うでしょう。前のページにはサンプルコードがあり、「チャンネルのブロードキャストを取得する」方法の良い例もあります。
ここでコードをコピーすることもできますが、最も効果的な例はAPIのリファレンスに詳しく記載されていると思います:)