YouTube iOS SDK:更正 GTLQueryYouTube 参数以过滤掉无法在移动设备上播放的视频?



我正在努力找到正确的GTLQueryYouTube参数,以筛选出无法在手机上播放的视频(在iOS UIWebView中)。videoEmbeddable和videoSyndicated参数限制性太强(它们会过滤掉所有VEVO视频)。

在我们的iOS应用程序中,我们通过GTLQueryYouTube搜索YouTube视频,将videoEmbeddable和videoSyndicated参数留空。

这将返回通常可在UIWebView中播放的Vevo视频。例如"蕾哈娜-钻石"(lWA2pjMjpBs)是可播放的。它不能在嵌入式视图中播放。

但是,有些视频无法播放。例如"Lana Del Rey-众神与怪物"(3BwfuFuYOWE)不能在UIWebView中播放。YouTube页面加载,但我没有播放视频,而是看到一个错误"内容所有者没有在手机上提供此视频。"

我们希望在搜索时过滤掉这些不可播放的视频。GTLQueryYouTube API仅支持"视频嵌入"one_answers"视频联合"的过滤,这两种过滤都不能正确地过滤掉Lana Del Rey视频,但留在Rihanna视频中。

似乎缺少一个过滤参数来过滤掉这些类型的视频。检查元数据并没有发现蕾哈娜和拉娜的视频之间有任何明显的差异。

想法?

不幸的是,通常无法使用API确定所有播放限制。我们这里有API v2指南:http://apiblog.youtube.com/2011/12/understanding-playback-restrictions.html但是v3还没有类似的资源。

我建议使用(videoEmbeddable和videoSyndicated)搜索限制,因为这就是它们的设计目的。一种方法是将用户带到m.youtube.com,播放受第三方应用程序限制的视频。或者,你可以尝试联系内容所有者,说服他们更改内容的配置(因为这是YouTube强制执行但没有配置的内容)。

关于你特别列出的视频:

  1. lWA2pjMjpBs已禁用自动播放,这可能解释了您所看到的问题:http://gdata.youtube.com/feeds/api/videos/lWA2pjMjpBs?v=2&prettyprint=true。我们还没有在v3响应中返回自动播放限制,但会与团队跟进
  2. 3wfuFuYOWE已禁用联合。在v2中,您可以在此处看到它:http://gdata.youtube.com/feeds/api/videos/3BwfuFuYOWE?v=2&prettyprint=true,但在v3中,我们只通过搜索限制来公开它。我也会和团队跟进,这样在视频列表的回复中更容易看到这一点

一个可能的解决方案(诚然,不是很优雅)是进行两个GTLQueryYouTube调用:

  1. videoSyndicated off(或设置为all):在GTLYouTubeSearchResultSnippet的描述字段中搜索关键字"VEVO",返回搜索结果

  2. videoSyndicated打开(设置为true):最佳搜索结果(使用您选择的适当过滤器)。

如果第一个查询返回空结果,则假设没有VEVO视频,并使用下一个最佳可播放视频(2)。

最新更新