9

我想使用https://developers.google.com/youtube/v3/guides/ios_youtube_helper提供的 YTPlayerView 在 iOS 应用程序中播放嵌入的 YouTube 视频

当我尝试使用 ID = "Ri7-vnrJD3k" ( https://www.youtube.com/embed/Ri7-vnrJD3k ) 播放此视频时,我收到错误消息“此视频包含来自 VEVO 的内容。它受到限制在某些网站上播放。在 YouTube 上观看”。请注意,播放其他一些视频时没有这样的问题。

有没有办法解决上述问题?

我可以使用 iframe 使用下面的示例 swift 代码成功地播放视频。但我不知道如何跟踪用户何时开始播放视频以及视频何时完成,因为我想根据这些信息执行其他自定义操作。如果您知道任何解决方案,请告诉我吗?

let frame = CGRectMake(0,0, self.view.frame.size.width, 240)
playerView = UIWebView(frame: frame)
playerView.allowsInlineMediaPlayback = true

var embedHTML = NSString(format: "<html><head><style type=\"text/css\"> body { background-color: transparent; color: white; margin:0; width:100%%; height:100%% } </style> </head><body style=\"margin:0\"> <iframe width=100%% height=100%% src=\"%@?feature=player_detailpage&playsinline=1\" frameborder=\"0\" ></iframe> </body></html>", self.url.text)

self.view.addSubview(playerView)
playerView.loadHTMLString(embedHTML as String, baseURL: NSURL(string: "http://www.youtube.com"))
4

4 回答 4

26

通过设置我的origin属性,我playerVars可以播放嵌入的视频。

let playerVars = [
                     "playsinline" : 1,
                     "showinfo" : 0,
                     "rel" : 0,
                     "modestbranding" : 1,
                     "controls" : 1,
                     "origin" : "https://www.example.com"
                 ]

然后loadWithVideoId::像往常一样打电话。

YouTube

于 2015-06-22T22:01:32.867 回答
8
NSDictionary *playerVars = @{
                             @"origin" : @"http://www.youtube.com",
                             };
[self.playerView loadWithVideoId:@"videoId" playerVars:playerVars];`

这个 Objective-C 版本对我有用。

于 2017-02-03T12:51:54.633 回答
1

YTPlayerView 反过来使用 iframe 播放 youtube 视频。您不能使用 iframe 播放受版权保护的 youtube 视频,您可以使用 uiwebView 来播放它作为替代

于 2015-06-22T04:31:16.347 回答
1

斯威夫特 5.0

@IBOutlet weak var videoPlayer: YTPlayerView!

 self.videoPlayer.load(withVideoId: "M7lc1UVf-VE", playerVars: ["origin": "http://www.youtube.com"])
于 2019-08-08T04:21:34.530 回答