2012-03-25 69 views
3

我有一個無色的YouTube播放器,我正試圖加載視頻,但只有一些視頻可以使用 - 並非全部。如果我沒有弄錯,那些沒有加載的是由於侵犯版權(例如,一部卡通片段不能加載,但是一個孩子做後空翻的家庭電影)。我想要做的是要麼發現這些視頻是否可以加載,無論是在我們嘗試加載它們還是之前。在嘗試加載YouTube視頻之前,如何判斷YouTube視頻是否可嵌入?

舉一個例子,下面是Nataly Dawn的兩個視頻。一個加載,另一個不加載。

// loads and plays the video 
ytplayer.loadVideoById("GhDGdT33K0k"); 

// doesn't load/play the video 
ytplayer.loadVideoById("-KYUPJIzCyM"); 

通過觀察兩個the working videonon-working video的數據,我似乎無法看到任何將表明,後者是不可嵌入。 [我在尋找<yt:accessControl>標籤或丟失yt:format='5'(參見How do I use the Youtube API to check if a video is embeddable?),但無濟於事。]

從我在控制檯已經試過,loadVideoById總是回報undefined,無論是否不是視頻實際加載。我似乎無法找到一種API方法來確定視頻是否已經這樣做。

+0

你提到的兩個視頻似乎是加載和播放。例如,使用:http://code.google.com/apis/ajax/playground/#change_the_playing_video – mjhm 2012-03-25 15:08:01

+0

谷歌遊樂場有時播放不可嵌入的視頻,如qvr6K02dglc。您可以嘗試將其嵌入到磁盤上的本地HTML文件中。 – 2013-01-31 07:59:02

回答

3

你提到的兩個視頻似乎都可以加載和播放。例如使用:google code playground並將您的視頻插入到HTML的選項標籤中。

雖然這裏有一些提示。

+0

來自博客文章「偶爾會有更微妙的限制,但並不是所有這些限制都可以通過API進行查詢,例如,某些視頻只能在特定的一組域上播放,如上所述,只有知道用戶是否有權觀看視頻的萬無一失的方法是讓他們嘗試觀看視頻。「那麼我會看看你最後的選擇。:) – 2012-03-26 20:02:03

+0

我最終發現,如果視頻加載的話,我無法預知;然而,在爲onError事件添加處理程序後,我能夠得到它返回錯誤代碼'150',「當請求的視頻不允許在嵌入式播放器中播放時播放」。爲什麼這加載在代碼操場上,而不是在我的特定代碼中,誰知道。 – 2012-03-27 06:25:41

+0

顯然有一些視頻不允許嵌入,但在操場上你可以觀看它們,比如qvr6K02dglc – 2013-01-31 07:57:53

0

現在,您可以連接嵌入式api的onError事件並檢查錯誤代碼101和150(它們是相同的),以確定視頻是否被嵌入式播放阻止。此外,以這種方式進行此操作將允許您在發生其他錯誤(錯誤請求,html 5問題等)的情況下采取不同的行爲。

function onError(event){ 
    switch(event.data){ 
     case 2: 
      console.log('request contains an invalid parameter value') 
      break 
     case 5: 
      console.log('The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.') 
      break 
     case 100: 
      console.log('The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.') 
      break 
     case 101: 
     case 150: 
      console.log('Uploader has blocked this content from embedded playback') 
      break 
     default: 
      console.log('error code: '+event.data) 

    } 
} 

如果你只是想嵌入視頻結果由搜索API返回,包括videoEmbeddable:"true"request