0

我正在使用 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);

我该如何解决?

谢谢您的帮助。

4

1 回答 1

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);
于 2016-04-22T12:45:09.570 回答