2012-03-25 106 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