Как встраивать Live-чат Youtube с постоянным URL-адресом?
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
без изменения идентификатора видео вручную каждый раз.
Как разрешить? Возможно, с помощью script в PHP или javascript, которые читают текущий URL-адрес YouTube и заменяют идентификатор видео в URL-адресе чата?
спасибо
Ответы
Ответ 1
Вы можете получить идентификатор видео с помощью PHP следующим образом:
<?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, чтобы получить идентификатор и использовать данные Live Stream для любых ваших нужд.
Действительно, один из вариантов использования:
- Связать видеопотоки и трансляции.
В на этой странице у вас есть пример PHP о том, как "Получить канальные видеопотоки". В этом коде $streamItem является LiveStream, который содержит идентификатор прямого потока, и вы можете использовать это.
В соответствующей заметке API также позволяет вам работать с LiveBroadcasts, который содержит ссылку snippet.liveChatId
, чтобы связать ее LiveChatMessages. Последний позволит вам работать с сообщениями в любом формате, который вы хотите. Возможно, это лучше всего соответствовало бы вашим потребностям. На предыдущей странице с примерами кодов также есть хороший пример того, как "Получить трансляцию каналов".
Я мог бы скопировать коды здесь, но я думаю, что лучший рабочий пример хорошо документирован по ссылке API:)