我已经创建了一个 HTML5视频播放器(非常简单) ,可以在 iPad 和浏览器上完美运行。
然而,当我在 iPhone 上打开它的时候,我只能看到一个播放按钮,当我按下这个按钮的时候,它会在一个新的窗口中打开本地视频播放器,在我所有的东西之上。
这意味着我无法访问自定义控件和时间跟踪(用 Javascript 编写) ,因为视频现在是独立运行的。
有没有什么办法可以超越苹果对 iPhone 上 HTML5视频的控制,让它像在 iPad 上一样工作?
干杯
你有一个应用程序创建或这是为移动狩猎?如果您有一个应用程序并使用 UIWebView,您应该设置 UIWebView 的 allowsInlineMediaPlayback 属性。.
对,
我在这方面毫无进展,并向苹果公司提交了一个漏洞。
几周后,他们回复我说,很简单,我应该在 HTML 的 video 标签中添加“ webkit-playsinline”,并在 UIWebView 中添加“ allowsInlineMediaPlayback”属性。
所以最后,它看起来是这样的:
超文本标示语言
<video id="player" width="480" height="320" webkit-playsinline>
Obj-C
webview.allowsInlineMediaPlayback = YES;
一切都很好:)
希望这能对某些人有所帮助,因为它实际上是没有文档的,而且我能找到“ webkit-playsinline”的唯一地方是在 iAds 引用中,它说: “ iAds JS only”。
在 iOS Safari 实现内联视频支持之前,您需要使用 Web 支持的语言编写视频解码器。现有的视频解码器的实现,例如用于 H.264的 百老汇(视频)、用于 mpeg1的 Jsmpeg和用于视频和声音支持的 Ogv.js。
请记住,解码视频的过程是计算繁重的。预计相对较慢的 FPS (± 20)。
供你参考,这些家伙有 准备了一份样本的视频,你可以在你的 iOS 设备上播放。
有一些解决办法,我正在开发一个库来自动支持这个功能。然而,直到苹果设置狩猎
那么我们将不得不使用同样的行为黑客。
您可以在这里查看该项目: https://github.com/newshorts/InlineVideo,看看它是否满足您的需要。
苹果在 iOS10的所有浏览器中都启用了 playsinline属性,所以这个功能是无缝的:
playsinline
<video src="file.mp4" playsinline>
你可以通过模拟由 掠夺播放的视频来解决这个问题,而不是通过实际的 .play()播放。
.play()
您可以使用 Iphone-内联-视频来处理播放和音频同步(如果有的话) ,并且它可以让 <video>保持正常工作。
<video>
您可以很容易地通过将其添加到 config.xml 中来实现这一点: UIWebView 应该尊重 webkit-playsinline 属性。
只需在 config.xml 中添加以下内容: <preference name="AllowInlineMediaPlayback" value="true" /> 否则 UIWebView 将忽略 webkit-playsinline 属性。
<preference name="AllowInlineMediaPlayback" value="true" />
在 iOS 10中,在 HTML5视频标签中添加“ playsinline”属性并不能阻止 iPhone UIWebview 上的全屏播放,直到我也添加了“ control”属性。我就是这样让它工作的:
<video width="100%" height="240" controls playsinline> <source src="movie.mp4" type="video/mp4" > </video>
当然,ViewController 中也有 _webView.allowsInlineMediaPlayback=YES;。
_webView.allowsInlineMediaPlayback=YES;