2011-11-20 36 views
4

刪除這是我的工作網站: http://t3kno.dewpixel.net/的Youtube API - 處理的視頻已被YouTube

正如你可以看到有歌曲的運行列表(歌曲YouTube視頻)。我實現了一個功能,一旦一首歌完成播放,列表中的下一個將自動開始播放。

當我試圖加載的視頻已被YouTube的版權內容刪除時,我遇到了問題。目前,我正在通過以下方式檢查歌曲的狀態:

player.getPlayerState() 

並等待狀態返回0(結束)。一旦歌曲結束,我嘗試加載下一首歌曲。一旦這首歌已經加載,我打電話給:

player.playVideo() 

但是,如果那首歌已被刪除,我的運氣不好。我想嘗試找到一種方法來捕捉該事件並跳到下一首歌曲。但是,當我嘗試播放已刪除的歌曲時,沒有任何狀態變化。含義:

function onytplayerStateChange(newState) { 
//do stuff 
} 

永遠不會執行。我如何檢測此事件並正確處理?

+0

如果一個視頻無效,爲什麼不getPlayerState立即返回0? –

+0

我不確定。每次youtube視頻改變狀態時,都會執行onytplayerStateChange()。當視頻無效時它從不改變狀態......不知道爲什麼 – CHawk

回答

6

而不是使用onStateChange嘗試使用OnError事件偵聽器。如果它返回100,那麼這意味着視頻已被刪除或轉向私人。這裏指的官方文檔上的onError聽衆: https://code.google.com/apis/youtube/flash_api_reference.html#Adding_event_listener

所以,你會想要做的東西沿着這些路線:

ytplayer.addEventListener("onError", "onPlayerError"); 

function onPlayerError(errorCode) { 
    if(errorCode == 100) 
    { 
     //play next video 
    } 
} 

您可以使用API​​惹周圍,確定最佳的方式來捕獲錯誤去這裏: https://code.google.com/apis/ajax/playground/?exp=youtube#polling_the_player

+1

完美。 Code Playground非常有用,您的解決方案完美無瑕。享受yar賞金,matey! – CHawk