2017-06-04 45 views
11

爲通道的實時流的嵌入網址是:如何嵌入Youtube實時聊天與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網址並在聊天嵌入網址中替換視頻ID? 感謝

回答

6

你可以使用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; 
} 
2

你應該能夠使用YouTube Live Streaming API來獲取ID和使用Live流數據,您有什麼需求。

事實上,一個用例是:

  • 副視頻流和廣播。

this page上,您有關於如何「檢索頻道的視頻流」的PHP示例。在該代碼上,$ streamItem是一個LiveStream,其中包含實時流的ID,您可以利用它。

在相關說明中,API還允許您使用LiveBroadcasts,其中包含參考snippet.liveChatId以將其鏈接到LiveChatMessages。後者將允許您以任何您想要的格式處理郵件。也許,這會更好地滿足你的需求。帶有示例代碼的上一頁,如何「檢索頻道的廣播」也有一個很好的例子。

我可以在這裏複製代碼,但我認爲最好的工作示例在API參考文獻中有詳細記錄:)