使用 YTPlayerView 在 iOS 中播放嵌入式 YouTube 视频失败,出现限制错误
Using YTPlayerView to play embedded YouTube video in iOS failed with restriction error
我想使用 https://developers.google.com/youtube/v3/guides/ios_youtube_helper
提供的 YTPlayerView 在 iOS 应用中播放嵌入式 YouTube 视频
当我尝试播放 ID = "Ri7-vnrJD3k" (https://www.youtube.com/embed/Ri7-vnrJD3k) 的视频时,收到错误消息 "This video contains content from VEVO. It is restricted from playback on certain sites. Watch on 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"))
YTPlayerView 反过来使用 iframe 播放 youtube 视频。
您不能使用 iframe 播放受版权保护的 youtube 视频,您可以使用 uiwebView 来播放此视频
通过在我的 playerVars
中设置 origin
属性,我能够播放嵌入的视频。
let playerVars = [
"playsinline" : 1,
"showinfo" : 0,
"rel" : 0,
"modestbranding" : 1,
"controls" : 1,
"origin" : "https://www.example.com"
]
然后照常调用 loadWithVideoId::
。
NSDictionary *playerVars = @{
@"origin" : @"http://www.youtube.com",
};
[self.playerView loadWithVideoId:@"videoId" playerVars:playerVars];`
这个 Objective-C 版本适合我。
Swift 5.0
@IBOutlet weak var videoPlayer: YTPlayerView!
self.videoPlayer.load(withVideoId: "M7lc1UVf-VE", playerVars: ["origin": "http://www.youtube.com"])
我想使用 https://developers.google.com/youtube/v3/guides/ios_youtube_helper
提供的 YTPlayerView 在 iOS 应用中播放嵌入式 YouTube 视频当我尝试播放 ID = "Ri7-vnrJD3k" (https://www.youtube.com/embed/Ri7-vnrJD3k) 的视频时,收到错误消息 "This video contains content from VEVO. It is restricted from playback on certain sites. Watch on 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"))
YTPlayerView 反过来使用 iframe 播放 youtube 视频。 您不能使用 iframe 播放受版权保护的 youtube 视频,您可以使用 uiwebView 来播放此视频
通过在我的 playerVars
中设置 origin
属性,我能够播放嵌入的视频。
let playerVars = [
"playsinline" : 1,
"showinfo" : 0,
"rel" : 0,
"modestbranding" : 1,
"controls" : 1,
"origin" : "https://www.example.com"
]
然后照常调用 loadWithVideoId::
。
NSDictionary *playerVars = @{
@"origin" : @"http://www.youtube.com",
};
[self.playerView loadWithVideoId:@"videoId" playerVars:playerVars];`
这个 Objective-C 版本适合我。
Swift 5.0
@IBOutlet weak var videoPlayer: YTPlayerView!
self.videoPlayer.load(withVideoId: "M7lc1UVf-VE", playerVars: ["origin": "http://www.youtube.com"])