Необходимо обновить страницу, чтобы увидеть только что начавшееся событие на YouTube
Я использую YT.player для показа живых событий на сайте: http://www.solarimpulse.com/rtw
Поскольку YouTube изменяет отображение живого события, обратный отсчет на YT.player больше не является динамическим. Мне нужно перезагрузить страницу, чтобы увидеть обратный отсчет. И что еще хуже, когда я запускаю прямую трансляцию, ничего не добавляется в проигрыватель, мне нужно перезагрузить страницу, чтобы увидеть видео.
В прошлом году отсчет и проигрыватель работали нормально, с тех пор я не менял код:
var player = {
playVideo: function (container, videoId) {
if (typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined') {
window.onYouTubePlayerAPIReady = function () {
player.loadPlayer(container, videoId);
};
$.getScript('//www.youtube.com/player_api');
} else {
player.loadPlayer(container, videoId);
}
},
loadPlayer: function (container, videoId) {
youtubePlayerSatcom = new YT.Player(container, {
playerVars: {
controls: 1,
rel: 0,
autoplay: 1,
playsinline: 1,
modestbranding: 1, // disable watch on youtube
fs: 1, // fullscreen
cc_load_policy: 0,
iv_load_policy: 3, // annotations
showinfo: 0 // don't show loading
},
height: '100%',
width: '100%',
videoId: videoId,
events: {
'onStateChange': function (event) {
if (event.data === 0) {
youtubePlayerSatcom.loadVideoById(videoId, 0);
}
}
}
});
}
};
player.playVideo('satcom-player', videoId);
Как я могу это исправить?
Спасибо за помощь.
1 ответ
Я сделал небольшое исправление, чтобы перезагрузить видео, если оно еще не началось. Это не очень чисто, так как плеер становится черным и загружается снова, но это работает. Обратный отсчет становится таким динамичным.
$.doTimeout('youtube_notplaying', 20*1000, function () {
if (typeof youtubePlayerSatcom != 'undefined') {
if (youtubePlayerSatcom.getPlayerState() == -1) {
if (debug_interface) console.log('load '+videoId);
youtubePlayerSatcom.loadVideoById(videoId);
} else if (youtubePlayerSatcom.getPlayerState() != -1) {
return false; // stop timeout
}
}
return true; // repeat
}, true);