我创建了一个HTML5视频播放器(非常简单),可以在iPad和浏览器上完美运行 .
但是,当我在iPhone上打开它时,我只会得到一个播放按钮,当按下该按钮时,会在新窗口上打开原生视频播放器,在我的所有内容之上 .
这意味着我无法访问我的自定义控件和时间跟踪(用Javascript编写),因为视频现在正在运行 .
有没有办法在iphone上覆盖Apple对HTML5视频的控制,让它像在ipad上一样工作?
干杯
有一些工作,我正在一个库自动允许这个功能 . 然而,直到Apple将野生动物园设置为
webview.allowsInlineMediaPlayback = YES;
那么我们将不得不使用hacks来做同样的行为 .
您可以在这里查看项目:https://github.com/newshorts/InlineVideo以查看它是否符合您的需求 .
对,
我无处可去,并向Apple提出了一个错误 .
几周之后,他们回到我身边,非常简单地说,我应该在HTML上的视频标签中添加“webkit-playsinline”,并在UIWebView上添加“allowsInlineMediaPlayback”属性 .
所以最后,这就是它的样子:
HTML
<video id="player" width="480" height="320" webkit-playsinline>
OBJ-C
一切正常:)
希望这有助于某人,因为它几乎没有文档,我唯一可以找到“webkit-playsinline”参考的地方是iAds参考,其中说:“仅限iAds JS” .
在iOS Safari实现内联视频支持之前,您需要使用支持Web的语言编写视频解码器 . 存在视频解码器的现有实现,诸如用于H.264(视频)的Broadway,用于mpeg1的jsmpeg,以及用于视频和声音支持的ogv.js .
请记住,解码视频的过程计算量很大 . 预计相对较慢的FPS(±20) .
作为参考,这些家伙有prepared a demo的视频可以在你的iOS设备上播放 .
Apple在iOS 10上的所有浏览器中启用了属性 playsinline ,因此无缝工作:
playsinline
<video src="file.mp4" playsinline>
你可以通过浏览视频来模拟播放,而不是实际的 .play() 来解决这个问题 .
.play()
你可以使用iphone-inline-video来处理播放和音频同步(如果有的话),它可以保持 <video> 正常工作 .
<video>
你有一个应用程序创建或这是为移动野生动物园?如果你有一个应用程序并使用UIWebView你应该设置UIWebView的allowInlineMediaPlayback属性..
在iOS 10中,在HTML UI视频标记中添加“playinline”属性并未阻止iPhone UIWebview上的全屏播放,直到我还添加了“controls”属性 . 这就是我的工作方式:
<video width="100%" height="240" controls playsinline> <source src="movie.mp4" type="video/mp4" > </video>
当然,在ViewController中也有 _webView.allowsInlineMediaPlayback=YES; .
_webView.allowsInlineMediaPlayback=YES;
只需在config.xml中添加以下内容: <preference name="AllowInlineMediaPlayback" value="true" /> 否则UIWebView将忽略webkit-playsinline属性 .
<preference name="AllowInlineMediaPlayback" value="true" />
您可以通过将其添加到config.xml来轻松地允许此操作:UIWebView应该遵循webkit-playsinline属性 .
8 回答
有一些工作,我正在一个库自动允许这个功能 . 然而,直到Apple将野生动物园设置为
那么我们将不得不使用hacks来做同样的行为 .
您可以在这里查看项目:https://github.com/newshorts/InlineVideo以查看它是否符合您的需求 .
对,
我无处可去,并向Apple提出了一个错误 .
几周之后,他们回到我身边,非常简单地说,我应该在HTML上的视频标签中添加“webkit-playsinline”,并在UIWebView上添加“allowsInlineMediaPlayback”属性 .
所以最后,这就是它的样子:
HTML
OBJ-C
一切正常:)
希望这有助于某人,因为它几乎没有文档,我唯一可以找到“webkit-playsinline”参考的地方是iAds参考,其中说:“仅限iAds JS” .
在iOS Safari实现内联视频支持之前,您需要使用支持Web的语言编写视频解码器 . 存在视频解码器的现有实现,诸如用于H.264(视频)的Broadway,用于mpeg1的jsmpeg,以及用于视频和声音支持的ogv.js .
请记住,解码视频的过程计算量很大 . 预计相对较慢的FPS(±20) .
作为参考,这些家伙有prepared a demo的视频可以在你的iOS设备上播放 .
在iOS 10中
Apple在iOS 10上的所有浏览器中启用了属性
playsinline
,因此无缝工作:在iOS 8和iOS 9中
你可以通过浏览视频来模拟播放,而不是实际的
.play()
来解决这个问题 .你可以使用iphone-inline-video来处理播放和音频同步(如果有的话),它可以保持
<video>
正常工作 .你有一个应用程序创建或这是为移动野生动物园?如果你有一个应用程序并使用UIWebView你应该设置UIWebView的allowInlineMediaPlayback属性..
在iOS 10中,在HTML UI视频标记中添加“playinline”属性并未阻止iPhone UIWebview上的全屏播放,直到我还添加了“controls”属性 . 这就是我的工作方式:
当然,在ViewController中也有
_webView.allowsInlineMediaPlayback=YES;
.只需在config.xml中添加以下内容:
<preference name="AllowInlineMediaPlayback" value="true" />
否则UIWebView将忽略webkit-playsinline属性 .您可以通过将其添加到config.xml来轻松地允许此操作:UIWebView应该遵循webkit-playsinline属性 .