使用Youtube Javascript API检查剩余时间

时间:2014-06-22 21:13:03

标签: javascript youtube chromecast youtube-javascript-api

我正在嵌入Youtube视频并使用YT JS API。建议用户使用他们的Chromecast查看嵌入的视频。但是,当使用播放器中的按钮投射视频时,player.getCurrentTime()player.getPlayerState()会被冻结,onStateChange事件不会触发。

我可以做些什么来解决这些问题,或者只有youtube可以解决这个问题?谢谢!

我的代码:

var player;
function onYouTubeIframeAPIReady() {
    player = new YT.Player('ytplayer', {
        events:{
            'onStateChange': onPlayerStateChange
        }
    });
}
function onPlayerStateChange(event){
    console.log('Player StateChange: '+event.data); //This never runs when casting a video.
}

1 个答案:

答案 0 :(得分:-2)

enter image description here

这是代码

var tag = document.createElement('script');

        tag.src = "https://www.youtube.com/iframe_api";
        var firstScriptTag = document.getElementsByTagName('script')[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);


        var player;

        //execute as soon as the player API code downloads
        function onYouTubeIframeAPIReady() {
            player = new YT.Player('player', {
                height: '390',
                width: '640',
                videoId: 'M7lc1UVf-VE',
                events: {
                    'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange
                }
            });
        }

        // execute when the onReady event fires
        //starts video
        function onPlayerReady(event) {

            console.log("onPlayerReady");
            console.log(event);

            var duration = event.target.getDuration();

            console.log("Duration:" + duration);

            fillPlaybackRates();
        }

        //  when the onStateChange event fires
        function onPlayerStateChange(event) {

            console.log("onPlayerStateChange")
            console.log(event)

            if (event.data == YT.PlayerState.PLAYING) {
                console.log(YT);
            }
        }


        var pause = $("#pause"),
            start = $("#start"),
            mute =  $("#mute");

        pause.on('click', function () {
            player.pauseVideo();
        });

        start.on('click', function () {
            player.playVideo();
        });       


        var fillPlaybackRates = function () {

            var playbackDropdownMenu = $(".dropdown-menu");
            var playbackRates = player.getAvailablePlaybackRates();

            console.log(playbackRates);

            for (var i = 0; i < playbackRates.length; i++) {

                playbackDropdownMenu.append('<li role="presentation"><a role="menuitem" tabindex="-1" href="#">' + playbackRates[i] + '</a></li>');
            }          
        }


        var playbackRatesButton = $("#playback-rates");
        $(document).on('click','.dropdown-menu > li > a', function () {

            var option = $(this).text();
            playbackRatesButton.text(option);

            player.setPlaybackRate(option);
        });

以下是完整的要点: iFrameYouTubeApi.html

您还可以在此处查看:Continuing with Chromecast: Embedding YouTube into Custom Receivers