我正在使用https://github.com/gilesvangruisen/Swift-YouTube-Player在我的应用程序中阅读 YouTube 视频,例如:https://www.youtube.com/watch?v=Bw0tjdBgKBY
使用 WEB 浏览器时效果很好,但使用该库时,会出现一条消息:
This video is unavailable
我可以在播放视频之前看到视频预览,但当视频开始时,消息会出现在我的应用中。
使用此类库时是否有被youtube锁定的视频内容? FIFATV 发布的每个视频似乎都无法使用此库...
我正在 youtubePlayer 中设置视频:
youtubePlayerView.loadVideoURL(URL(string: "https://www.youtube.com/watch?v=PBTFz-9bozc"))
非 FIFATV 的其他视频也可以使用。
关于这个问题有什么想法吗?
最佳答案
要了解流式传输发生了什么,您应该添加另一个参数,因此遵循 Swift-YouTube-Player示例更正此部分,添加 origin
参数:
Swift-YouTube-Player/YouTubePlayerExample/YouTubePlayerExample/ViewController.swift
@IBAction func loadVideo(sender: UIButton) {
playerView.playerVars = [
"playsinline": "1",
"controls": "0",
"showinfo": "0",
"origin": "https://www.youtube.com"
]
playerView.loadVideoID("wQg3bXrVLtg")
}
如果您添加此参数,框架会避免使用空白页面作为流的源来源并使用您的值,事实上,如果您查看官方来源:
YTPlayerView.m
if (![playerVars objectForKey:@"origin"]) {
self.originURL = [NSURL URLWithString:@"about:blank"];
} else {
self.originURL = [NSURL URLWithString: [playerVars objectForKey:@"origin"]];
}
现在您应该收到如下消息:
“该视频包含来自 FIFA 的内容,FIFA 已阻止该视频在此网站或应用程序上显示。在 YouTube 上观看”
阅读Youtube API docs您还可以将 http://example.com
作为值:
在哪里搜索enablejsapi
,您会发现:
不幸的是,谈到 YT iOS 框架,您可以搜索此参数,但您会发现在文件 player.js 中它已设置为 1,并且如果您尝试将其设置在 playerVars
内,但不会发生任何情况。
所以它仍然是(目前..)一个 Youtube iOS 框架错误,可能不完全是一个错误,但 YT 工作人员应该在他们的政策中添加另一条针对 iOS 内容变化的规则,同样的事情VEVO 和 UMG 内容的一部分(如果我记得的话)(还有其他尚未解决的错误..)
关于Swift-YouTube-播放器 : Not able to read available videos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51344422/