2012-07-02 162 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

相關問題