YouTube JS API:检测“嵌入已被禁用”

时间:2009-05-13 17:29:29

标签: youtube youtube-api

使用youtube javascript api(http://code.google.com/apis/youtube/js_api_reference.html),我试图允许用户将视频嵌入到我在应用中创建的某些内容中。我已经完成了所有工作,除了能够检测和处理视频不允许嵌入的情况。

目前,播放器加载并显示不允许视频的缩略图,并且只有在用户尝试播放时才会出现错误。这很糟糕,因为用户可能在保存/发送其内容之前不播放视频。我想先发制人地检测到不允许嵌入视频,并向用户显示有用的消息。

我能看到的唯一解决方案是实际播放它(以编程方式)并处理此时引发的错误。

现有解决方法:

  1. 嵌入播放器(embedSWF)
  2. onYouTubePlayerReady():在onStateChange事件侦听器上添加onError。
  3. onStateChange(newState):视频完成加载后,尝试播放。
      例如if(newState == 5 / * CUED * /){player.mute(); player.playVideo(); player.stopVideo(); player.unMute(); }
  4. onError(错误):如果视频无法在onStateChange中播放,则会在此处收到错误。

有更好的方法吗?

谢谢!
-Rob

3 个答案:

答案 0 :(得分:6)

您可以在嵌入之前获取该视频条目的JSON Feed,并查看是否存在“yt $ format”:5,即嵌入SWF。如果禁用嵌入,它将不存在。

http://gdata.youtube.com/feeds/api/videos/video_id?v=2&alt=json-in-script

答案 1 :(得分:0)

我知道这不是直接针对这个问题,但是如果有人使用PHP会遇到这个问题,那么getNoEmbed()中就会有Zend_Gdata_YouTube_VideoEntry方法。

取自文档:

  

如果返回值是Zend_Gdata_YouTube_Extension_NoEmbed的实例,则无法嵌入此视频。

答案 2 :(得分:0)

我认为您可能正在寻找videoSyndicatedvideoEmbeddable参数。 API文档说:

videoEmbeddable

  

videoEmbeddable参数使您可以将搜索限制为仅可嵌入网页的视频。如果您为此参数指定一个值,则还必须将类型参数的值设置为video。

参考:https://developers.google.com/youtube/v3/docs/search/list#videoEmbeddable

videoSyndicated

  

videoSyndicated参数可让您将搜索限制为仅可在youtube.com外部播放的视频。如果您为此参数指定一个值,则还必须将类型参数的值设置为video。

参考:https://developers.google.com/youtube/v3/docs/search/list#videoSyndicated

示例通话

同时使用:

GET https://www.googleapis.com/youtube/v3/search?&part=snippet,statistics&videoSyndicated=true&videoEmbeddable=true&key=${yourKey}