如何在Objective C中以非全屏方式从浏览器应用播放Youtube Video

素比盖尔

我正在使用浏览器应用程序,我希望当用户在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播放器,并在播放按钮后,自来水

帮助将不胜感激。

哈迪克·DG

您的项目是否命名为Controller MainViewController,该控制器应该存在问题YTPlayerView,请在您的视图控制器中检查该视图。
在大多数情况下,它不会在您直接在代码中使用的类中定义


在您的代码中搜索问题,我找到了UIWebview的属性,该属性将帮助您内联播放视频 setAllowsInlineMediaPlayback

有了这个,您可以直接在网络视图中播放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中也对我有用,它看起来像这样:在iPhone中使用iframe youtube播放在iPhone中使用另一个参考setAllowsInlineMediaPlaybackhttps : //stackoverflow.com/a/15189889/4557505

屏幕快照中显示的图像看起来像是特定的视频问题。注意此代码不是必需的,YTPlayerView因此,如果此代码对您YTPlayerView有用,则可以将其从项目中删除(如果未在其他任何地方使用此代码)


更新一些未播放的视频:我认为此问题与特定的实现方式无关,因为对于我来说,它无法在浏览器中工作(在iFrame中设置了嵌入的网址)或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),但是根据您的评论,您可以尝试

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在所有类型的浏览器中禁用HTML 5 Video Player全屏按钮,尤其是在IE,Edge和Firefox,Opera,Safari中?

如何通过 javascript 在 c# 中首次播放嵌入式 YouTube(使用 Gecko 浏览器)?

如何在没有外部库的情况下在 React 中播放 <video></video>?

浏览器选项卡处于非活动状态时,如何在REACT应用程序中播放音频?

如何在浏览器中播放实时视频?

我们如何在video.js播放器中禁用“字幕设置”?

如何在 Tor 浏览器中查看 Youtube 视频?

如何在Objective C中存储块?

如何在Objective-C中播放Lottie动画

如何在C#中访问System.Video.FrameRate

如何在不提供凭据的情况下在浏览器中使用Kinesis Video Stream WebRTC SDK?

如何通过单击播放按钮而非嵌入来触发YouTube视频在iOS的浏览器中播放?

如何在信息亭模式下启动浏览器,但在C#中不能全屏启动

如何在移动浏览器的嵌入式Vimeo播放器上显示全屏按钮?

如何在 Objective C 中使用 CallKit

在浏览器中全屏播放Youtube视频

如何在CSS中更好地转换<video>背景

如何在 Azure Video Indexer 中更新缩略图?

如何在react-native-video中实现缓存

如何在Video JS中创建海关按钮

如何在video.js中添加音轨?

如何在React Native Video中显示和隐藏字幕

如何在Ubuntu 17.10中检查Nvidia Video Memory?

如何在React应用中访问浏览器Cookie

Objective-C:如何在DiracLE中控制多个音频播放器的音量

如何在12.04中使铬浏览器全屏运行(而不是信息亭)?

如何在Android中以全屏或信息亭的形式打开Chrome浏览器

如何使Silverlight + Amazon Instant Video与浏览器的代理一起使用?

如何在模式内部的HTML 5 Video元素中定位自动播放属性