我能在UIWebView中内联播放YouTube视频吗(不是全屏)?

16

我已经在各处寻找如何实现此操作的方法,但仍未找到答案。 是否有可能在iPhone上使用UIWebView内联播放youtube视频,即不是全屏模式? 我知道iPhone不支持Flash,但Youtube支持HTML5和H.264视频,难道我就不能这样做吗?

我已将allowsInlineMediaPlayback设置为YES,但仍然全屏播放。


尝试这个:http://iphoneincubator.com/blog/audio-video/how-to-play-youtube-videos-within-an-application - Vijay-Apple-Dev.blogspot.com
你需要更改框架大小属性以实现小尺寸。 - Vijay-Apple-Dev.blogspot.com
谢谢,但是这个例子将会在全屏播放,而不是内联播放(我已经尝试过了)。UIWebView的框架已经比整个屏幕小,所以框架不是问题所在。 - Oded
3个回答

34

是的,你可以,在UIWebView上设置属性即可。

 webView.allowsInlineMediaPlayback=YES;

您需要在YouTube iframe嵌入代码中添加&playsinline=1。

 <iframe webkit-playsinline width="200" height="200" src="https://www.youtube.com/embed/GOiIxqcbzyM?feature=player_detailpage&playsinline=1" frameborder="0"></iframe>

在运行iOS 6.1.2的iPhone 4S上测试,效果非常好。


请问您能否展示使用YouTube的iFrame API的代码吗?因为我想从特定时间开始播放视频。 - z22
不确定您的意思是什么?在HTML中的第二行(iFrame API)是什么? - stringCode
如果我理解正确,这需要一个“应用程序”(即访问UIWebView,它似乎是一种浏览器类型对象),也就是说,我无法在普通网页中利用它。 是这样吗?有没有办法强制iOS内联播放?(例如,我有一个视频,希望人们在看到某些队列时点击按钮......如果视像全屏播放,则不行)... - Ben A. Hilleli
不幸的是,你的假设是正确的。在iPhone的Safari中无法工作。你需要创建自己的应用程序,在其中使用UIWebView类。但是它将在iPad的Safari上工作。您可能还可以通过自定义HTML 5播放器使其在iPhone上正常工作,但我从未尝试过。请参见https://dev59.com/mG035IYBdhLWcg3wZ_Mt - stringCode
这对iOS8有效吗?我仍然可以全屏播放视频。 - Demonedge
显示剩余4条评论

3

allowsInlineMediaPlayback UIWebView属性

布尔值,用于确定HTML5视频是内联播放还是使用本地全屏控制器。(developer.apple.com)

您可以在iPad上使用此功能。在iPhone上没有此功能。如果您尝试在iPhone上使用uiwebview播放视频,则会以全屏模式播放。


2
那不是这样的。-allowsInlineMediaPlayback在iPhone上可以工作,但您还必须在HTML视频标记上包括webkit-playsinline属性。请参见stringCode的答案。 - Marc Charbonneau
@MarcCharbonneau 这对于运行iOS 7的iPhone是真的吗?似乎会强制使用全屏播放器。 - self.name
@matrosov,你好我的朋友,但我想在UIWebview中使用HTML5播放视频,就像Vine应用程序中的视频一样。我该如何在iPhone上实现它? - NiravPatel
我也无法在iOS 7.1的iPhone上使其工作。有什么改变了吗? - techdog
1
有人碰巧在iOS 8.x的iPhone上解决了这个问题吗? - raphael
@raphael 我还没有在iOS8上测试过它,我只是很久以前测试过之前的版本。 - Matrosov Oleksandr

0

是的,您可以使用"playsinline=1"的帮助在UIWebView中播放任何嵌入式视频。

源代码如下:

    NSMutableString *html = [[NSMutableString alloc] initWithCapacity:1] ;
[html appendString:@"<html><head>"];
[html appendString:@"<style type=\"text/css\">"];
[html appendString:@"body {"];
[html appendString:@"background-color: transparent;"];
[html appendString:@"color: white;"];
[html appendString:@"}"];
[html appendString:@"</style>"];
[html appendString:@"</head><body style=\"margin:0\">"];
[html appendString:@"<iframe webkit-playsinline width=\"300\" height=\"220\" src=\"http://www.ustream.tv/embed/23192315?html5ui&showtitle=false&playsinline=1\" frameborder=\"0\"></iframe>"];
[html appendString:@"</body></html>"];
[self.webViewRef loadHTMLString:html baseURL:nil];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接