2012-07-02 163 views
0

这是我第一次使用YouTube的API,我发现很难理解文档。基本上我在页面上有多个视频,当你点击一个它弹出在灯箱并播放正确的视频。所有这些工作正常。播放器启动后的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也不起作用。

回答

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; 
    } 
} 
0

当你在页面上的多个视频,你还是要呼吁onYouTubePlayerAPIReady的每一个。您可以同时将所有玩家处理程序包装在其中,但取决于您如何执行此操作,这是不可能的。相反,你必须想办法欺骗API。看看我的答案loading multiple video players with youtube api

相关问题