web-dev-qa-db-ja.com

YouTubeライブチャットをURLパーマネントで埋め込むには?

チャンネルのライブストリームの埋め込み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を使用しますか?

12
grigione

次のように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;
}
7
RoelVB

YouTubeライブストリーミングAPI を使用してIDを取得し、必要に応じてライブストリームデータを使用できる必要があります。

実際、ユースケースの1つは次のとおりです。

  • ビデオストリームとブロードキャストを関連付けます。

このページ には、「チャネルのビデオストリームを取得する」方法のPHPの例があります。そのコードでは、$ streamItemは LiveStream 、これはライブストリームのIDを含み、それを活用できます。

関連するメモとして、APIを使用すると、 LiveBroadcasts を操作できます。これには、参照_snippet.liveChatId_を含み、 LiveChatMessages 。後者を使用すると、必要な任意の形式でメッセージを操作できます。おそらく、これはあなたのニーズによりよく合うでしょう。前のページにはサンプルコードがあり、「チャンネルのブロードキャストを取得する」方法の良い例もあります。

ここでコードをコピーすることもできますが、最も効果的な例はAPIのリファレンスに詳しく記載されていると思います:)

2
nitobuendia