IPhone VS iPad/Browser 上的 HTML5内嵌视频

我已经创建了一个 HTML5视频播放器(非常简单) ,可以在 iPad 和浏览器上完美运行。

然而,当我在 iPhone 上打开它的时候,我只能看到一个播放按钮,当我按下这个按钮的时候,它会在一个新的窗口中打开本地视频播放器,在我所有的东西之上。

这意味着我无法访问自定义控件和时间跟踪(用 Javascript 编写) ,因为视频现在是独立运行的。

有没有什么办法可以超越苹果对 iPhone 上 HTML5视频的控制,让它像在 iPad 上一样工作?

干杯

77313 次浏览

你有一个应用程序创建或这是为移动狩猎?如果您有一个应用程序并使用 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 设备上播放。

有一些解决办法,我正在开发一个库来自动支持这个功能。然而,直到苹果设置狩猎

webview.allowsInlineMediaPlayback = YES;

那么我们将不得不使用同样的行为黑客。

您可以在这里查看该项目: https://github.com/newshorts/InlineVideo,看看它是否满足您的需要。

在 iOS10 + 中

苹果在 iOS10的所有浏览器中都启用了 playsinline属性,所以这个功能是无缝的:

<video src="file.mp4" playsinline>

在 iOS8和 iOS9中

你可以通过模拟由 掠夺播放的视频来解决这个问题,而不是通过实际的 .play()播放。

您可以使用 Iphone-内联-视频来处理播放和音频同步(如果有的话) ,并且它可以让 <video>保持正常工作。

您可以很容易地通过将其添加到 config.xml 中来实现这一点: UIWebView 应该尊重 webkit-playsinline 属性。

只需在 config.xml 中添加以下内容: <preference name="AllowInlineMediaPlayback" value="true" /> 否则 UIWebView 将忽略 webkit-playsinline 属性。

在 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;