YouTube的API调用播放器的功能玩家initated后(Youtube API calling

2019-07-30 04:47发布

这是我第一次使用YouTube API的,我发现很难理解的文档。 基本上我有在页面上多部影片,当你点击一个它在灯箱广告弹出并播放正确的视频。 所有这一切工作正常。

客户现在希望所有的视频是在启动时自动静音,一旦你完成的视频,他们需要的帧跳到正确的地方。

如果我使用YouTube的iframe API我似乎无法能够在所有更新VideoID的。 下面是我的代码:

var player;
function onYouTubePlayerAPIReady() {
    player = new YT.Player('player', {
        height: '323',
        width: '576',
        videoId: 'Fy7Li0dMRSY',
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    });
}

function onPlayerReady(event) {
    event.target.mute(); // this does not do anything
    event.target.playVideo();
}

var done = false;
function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.PLAYING && !done) {
        //setTimeout(stopVideo, 6000);
        done = true;
    }
}
function stopVideo() {
    player.stopVideo();
}


function loadVid(vidID, title){
    // loads youtube video with video title & youtube video ID
    $('.lightbox .title').html(title);
    $('.lightbox iframe').prop('src','https://www.youtube.com/embed/'+vidID+'?rel=0&wmode=transparent&enablejsapi=1');  
    //player.mute() does not work here  
    showLightbox(); 
}

我的问题是试图调用播放器功能于loadVid函数内部静音,它抛出回一个错误(任意函数抛出同样的错误),我无法弄清楚如何使用功能,如播放器。

该错误是player.stopVideo不是一个函数

所以,我怎么能静音上开始播放视频? 将它添加到onPlayerReady也不起作用。

Answer 1:

移动event.target.mute(); 像这样的onPlayerStateChange功能:

var done = false;
function onPlayerStateChange(event) {
    event.target.mute();
    if (event.data == YT.PlayerState.PLAYING && !done) {
        //setTimeout(stopVideo, 6000);
        done = true;
    }
}


Answer 2:

当你在页面上的多个视频,你还是要呼吁onYouTubePlayerAPIReady的每一个。 您可以同时装在里面的所有您的播放器处理,但是这取决于你如何要做到这一点,这是不可能的。 相反,你要搞清楚的方式来欺骗API。 看看这里我的答案加载与YouTube API多个视频播放器



文章来源: Youtube API calling player functions after player is initated