您的项目是否有名为 的控制器MainViewController
,该控制器应该有问题YTPlayerView
,请在您的视图控制器中检查此视图。
在大多数情况下,它不会在您直接在代码中使用的类中定义
在您的代码中搜索问题时,我发现了 UIWebview 的一个属性,它可以帮助您在线播放视频setAllowsInlineMediaPlayback
借助此功能,您可以直接在 webview 中播放 youtube 视频,这是可用于播放 youtube 视频的代码示例
NSString *strVideoId = @"M7lc1UVf-VE";
NSString *videoURL = [NSString stringWithFormat:@"https://www.youtube.com/embed/%@?feature=player_detailpage&playsinline=1",strVideoId];
NSString* embedHTML = [NSString stringWithFormat:@"\
<html><head>\
<style type=\"text/css\">\
iframe {position:absolute; top:50%%; margin-top:-130px;}\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
<iframe width=\"100%%\" height=\"240px\" src=\"%@\" frameborder=\"0\"></iframe>\
</body></html>",videoURL];
[self.mainwebview setAllowsInlineMediaPlayback:true];
[self.view addSubview:self.mainwebview];
[self.mainwebview loadHTMLString:embedHTML baseURL:nil];
在此代码中,您可以传递您在loadWithVideoId
YTPlayerView中传递的任何视频 ID
要更改宽度/高度,您可以width=\"100%%\" height=\"240px\"
在 iframe 的部分中进行更改
它在 iPhone 中也适用于我,看起来像这样:
iframe youtube 在 iPhone 中播放
另一个在 iPhone 中setAllowsInlineMediaPlayback
工作的参考:https ://stackoverflow.com/a/15189889/4557505
您在屏幕截图中显示的图像看起来像特定的视频问题
注意此代码不需要YTPlayerView
,因此如果此代码适用于您,您可以YTPlayerView
从您的项目中删除如果它没有在其他任何地方使用
更新一些视频没有播放:我认为这个问题与具体实现无关,因为对我来说它在浏览器中不起作用(我们在 iFrame 中设置的嵌入 Url)或 YTPlayerview
但直到我检查并可能找到实施中的一些问题,正如你所提到的:
是的,所有视频都可以在 YTPlayerView 上播放。这些视频在正常全屏模式下工作,但不适用于嵌入式播放器
如果要在 YTPlayerview 中实现,可以查看以下代码:
NSString *strVideoId = @"3bMYgo_S0Kc";
self.playerView = [[YTPlayerView alloc]init];
self.playerView.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height/2);
[self.playerView loadWithVideoId:strVideoId playerVars:@{@"playsinline":@1}];
[_mainwebview addSubview:self.playerView];
[self.mainwebview setAllowsInlineMediaPlayback:true];
[self.view addSubview:self.mainwebview];
在loadWithVideoId
我们可以提供可以解决全屏问题的内联参数,这也可能适用于您在 iPhone 上
请注意,此视频不适用于我的 YTPlayer 或浏览器(嵌入式 url),但根据您的评论,您可以试试这个