【问题标题】:YouTube JS API: Detect "embedding has been disabled"YouTube JS API:检测“嵌入已被禁用”
【发布时间】:2010-10-25 22:46:57
【问题描述】:

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

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

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

现有解决方法:

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

有没有更好的方法?

谢谢!
-罗伯

【问题讨论】:

    标签: youtube youtube-api


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      videoEmbeddable

      videoEmbeddable 参数可让您将搜索限制为仅可嵌入网页的视频。如果为该参数指定值,则还必须将 type 参数的值设置为 video。

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

      视频联合

      videoSyndicated 参数可让您将搜索限制为仅可在 youtube.com 之外播放的视频。如果为该参数指定值,则还必须将 type 参数的值设置为 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}
      

      【讨论】:

        【解决方案3】:

        我知道这不是直接的问题,但如果有人使用 PHP 偶然发现这个问题,Zend_Gdata_YouTube_VideoEntry 中有一个方法 getNoEmbed()

        取自文档:

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

        【讨论】:

          猜你喜欢
          • 2018-05-25
          • 2019-03-24
          • 2016-10-02
          • 1970-01-01
          • 2018-04-18
          • 2014-11-17
          • 2021-06-29
          • 1970-01-01
          • 2012-08-22
          相关资源
          最近更新 更多