YouTube iOS SDK:正确的 GTLQueryYouTube 参数以过滤出无法在移动设备上播放的视频?
Posted
技术标签:
【中文标题】YouTube iOS SDK:正确的 GTLQueryYouTube 参数以过滤出无法在移动设备上播放的视频?【英文标题】:YouTube iOS SDK: correct GTLQueryYouTube parameters to filter out videos which can't be played on mobile? 【发布时间】:2013-06-27 09:28:22 【问题描述】:我正在尝试找到正确的 GTLQueryYouTube 参数来过滤出无法在移动设备上播放的视频(在 ios UIWebView 中)。 videoEmbeddable 和 videoSyndicated 参数过于严格(它们会过滤掉所有 VEVO 视频)。
在我们的 iOS 应用中,我们通过 GTLQueryYouTube 搜索 YouTube 视频,将 videoEmbeddable 和 videoSyndicated 参数留空。
这将返回通常可在 UIWebView 中播放的 Vevo 视频。例如“Rihanna - Diamonds” (lWA2pjMjpBs) 是可播放的。无法在嵌入式视图中播放。
但有些视频无法播放。例如“Lana Del Rey - Gods and Monsters” (3BwfuFuYOWE) 无法在 UIWebView 中播放。 YouTube 页面加载,但我没有播放视频,而是看到一条错误消息“内容所有者尚未在移动设备上提供此视频。”
我们希望在搜索时过滤掉这些不可播放的视频。 GTLQueryYouTube API 仅支持过滤“videoEmbeddable”和“videoSyndicated”,它们都不能正确滤除 Lana Del Rey 视频,但保留 Rihanna 视频。
似乎缺少过滤器参数来过滤掉这些类型的视频。检查metadata 并没有发现蕾哈娜和拉娜·德雷的视频之间有任何明显的区别。
想法?
【问题讨论】:
【参考方案1】:一种可能的解决方案(诚然,不是很优雅)是进行两次GTLQueryYouTube
调用:
videoSyndicated
off(或设置为all
):在GTLYouTubeSearchResultSnippet
的描述字段中搜索关键字“VEVO”,返回顶部搜索结果
videoSyndicated
on(设置为true
):最佳搜索结果(您选择的适当过滤器)。
如果第一个查询返回空结果,那么您假设没有 VEVO 视频,并且您使用下一个最佳可播放视频 (2)。
【讨论】:
【参考方案2】:遗憾的是,通常无法使用 API 确定所有播放限制。我们在这里有 API v2 的指南:http://apiblog.youtube.com/2011/12/understanding-playback-restrictions.html 但还没有类似的 v3 资源。
我建议使用(videoEmbeddable 和 videoSyndicated)搜索限制,因为这是它们的设计目的。一种方法是将用户带到 m.youtube.com 以播放受第三方应用程序限制的视频。或者,您可以尝试联系内容所有者并说服他们更改内容的配置(因为这是 YouTube 强制执行但未配置的内容)。
关于您具体列出的视频:
-
lWA2pjMjpBs 已禁用自动播放,这可能解释了您看到的问题:http://gdata.youtube.com/feeds/api/videos/lWA2pjMjpBs?v=2&prettyprint=true。我们尚未在 v3 响应中返回自动播放限制,但会就此与团队进行跟进。
3BwfuFuYOWE 已禁用联合。在 v2 中,您可以在此处看到它:http://gdata.youtube.com/feeds/api/videos/3BwfuFuYOWE?v=2&prettyprint=true,但在 v3 中,我们仅通过搜索限制公开它。我也会就此与团队跟进,以便在videos.list 响应中更容易看到。
【讨论】:
我可以通过 iOS SDK 限制联合视频(例如`GTLQueryYouTube.videoSyndicated = kGTLYouTubeVideoSyndicatedTrue`)。但是,这会过滤掉两个示例视频,即使它不应该这样做。我觉得“内容所有者没有在移动设备上制作此视频”消息是除了 videoEmbeddable 和 videoSyndicated 之外的第三种过滤器? 你能在这里举一个例子,你是如何在代码中做到这一点的吗?以上是关于YouTube iOS SDK:正确的 GTLQueryYouTube 参数以过滤出无法在移动设备上播放的视频?的主要内容,如果未能解决你的问题,请参考以下文章
在没有 NSNotificationCenter 的情况下,在 iOS 8 中正确强制或允许 Youtube 嵌入视频的横向模式
来自 YouTube 的嵌入式 360 度视频无法在 iOS 浏览器上正确播放
是否有适用于 iOS 的 RESTful YouTube API?
如何从本机 ios 应用程序实时流式传输到 youtube 帐户