我可以在 UIWebView 内联(不是全屏)中播放 youtube 视频吗?

Posted

技术标签:

【中文标题】我可以在 UIWebView 内联(不是全屏)中播放 youtube 视频吗?【英文标题】:Can I play a youtube video in a UIWebView inline (not fullscreen)? 【发布时间】:2011-10-06 07:55:59 【问题描述】:

我到处寻找如何做到这一点,但还没有找到答案。 是否可以在 iPhone 内联的 UIWebView 中播放 youtube 视频,即不是全屏? 我知道 iPhone 不支持 flash,但 youtube 支持 html5 并且有 h.264 视频,不是吗?那我不应该这样做吗?

我已将allowInlineMediaPlayback 设置为YES,但它仍会全屏播放。

【问题讨论】:

试试这个iphoneincubator.com/blog/audio-video/… 你必须改变帧大小属性来实现小 谢谢,但这个例子将全屏播放,而不是内联(尝试过)。 UIWebView 的 frame 已经比整个屏幕小了,所以 frame 不是这里的问题。 【参考方案1】:

可以,你需要在 UIWebView 上设置属性

 webView.allowsInlineMediaPlayback=YES;

并且您需要将 &playsinline=1 添加到 YouTube iframe 嵌入代码中。

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

在运行 ios 6.1.2 的 iPhone 4S 上进行测试,效果非常棒。

【讨论】:

这是正确的——有了这两个设置,内联播放就可以在 iPhone 上运行。 你能用youtube的iFrame api显示代码吗?因为我想从某个时间运行视频 不知道你是什么意思? html (iFrame api) 中的第二行。 如果我理解正确,这需要一个“应用程序”(即访问 UIWebView,这似乎是一个浏览器类型的对象)——即它不是我可以在普通网页中利用的东西。那是对的吗?有没有办法强制 iOS 内联播放? (即我有一个视频,希望人们在看到某些队列时单击一个按钮......如果视频全屏播放,则不行)...... 不幸的是,您的假设是正确的。这在 iPhone 的 Safari 中不起作用。您需要使用 UIWebView 类创建自己的应用程序。但是它可以在 iPad 的 Safari 上运行。您也许可以使用自定义 html 5 播放器使其在 iPhone 上运行,但我从未尝试过。见***.com/questions/5438520/…【参考方案2】:

allowsInlineMediaPlayback UIWebView 属性

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

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

【讨论】:

事实并非如此。 -allowsInlineMediaPlayback 可以在 iPhone 上使用,但您还必须在 HTML 视频标签中包含 webkit-playsinline 属性。请参阅 stringCode 的答案。 @MarcCharbonneau 这对 iOS 7 上的 iPhone 来说是真的吗?似乎强制全屏播放器 @matrosov,你好,我的朋友,但我想使用 HTML5 在 UIWebview 中播放视频,就像正在播放 vine app 视频一样。我如何在 iPhone 中实现它? 我也无法让它在带有 ios 7.1 的 iphone 上运行。有什么变化吗? 有人在 iOS 8.x 的 iPhone 上偶然发现了这一点吗?【参考方案3】:

是的,您可以在“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];

【讨论】:

以上是关于我可以在 UIWebView 内联(不是全屏)中播放 youtube 视频吗?的主要内容,如果未能解决你的问题,请参考以下文章

在iOS 8中如何在UIWebView Player中接收全屏模式的通知?

Trigger.io 中的内联视频播放

UIWebView 流媒体 youtube 无法在 iPad 上全屏显示

如何强制在 UIWebView 中播放的视频在 iPad 上全屏显示?

在IOS中,如何知道UIWebView滚动条是不是在顶部?

带有分页的全屏 UICollectionView 内的 UIWebView