需要刷新页面才能看到刚刚开始的YouTube直播活动

时间:2016-04-21 12:45:24

标签: javascript youtube youtube-api ytplayer

我正在使用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 个答案:

答案 0 :(得分:0)

我做了一个小修补程序,重新加载视频,如果还没有开始。它不是很干净,因为玩家变黑并再次加载但是它有效。倒计时会变得像这样动态。

  $.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);