-1

我正在开发浏览器应用程序,我希望当用户在 youtube.com 上搜索任何视频时,视频会全屏播放,但我希望视频在固定大小的小框架上打开,比如手机屏幕大小的一半。

我有视频网址和视频 ID。我已经集成了 YOUTube API,但只要我点击 youtube 播放器上的播放按钮,它就会全屏播放。

请找到集成的代码库

self.playerView = [[YTPlayerView alloc]init];
self.playerView.frame = webView.frame;
[self.playerView loadWithVideoId:str];

[webView.superview addSubview:self.playerView];

请在添加 youtube 播放器点击播放按钮后找到截图

帮助将不胜感激。

4

2 回答 2

1

您的项目是否有名为 的控制器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];

在此代码中,您可以传递您在loadWithVideoIdYTPlayerView中传递的任何视频 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),但根据您的评论,您可以试试这个

于 2016-03-26T08:51:07.867 回答
1

@Pyro

setAllowsInlineMediaPlayback 仅适用于 ipad,我已经启用它。它现在确实有效,它不允许播放视频。

实施后的图像

于 2016-03-27T17:19:26.547 回答