Необходимо обновить страницу, чтобы увидеть только что начавшееся событие на 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);
Другие вопросы по тегам