HTML5在android WebView中没有视频只有音频播放
Posted
技术标签:
【中文标题】HTML5在android WebView中没有视频只有音频播放【英文标题】:HTML5 no video only audio playing in android WebView 【发布时间】:2020-01-18 05:05:59 【问题描述】:我有一个网页,其中包含 html5 视频和 css3 动画。网页在安卓设备的浏览器中完美播放。
问题是,当使用 hardwareAccelerated 时,动画真的很卡顿、毛刺和跳跃,但视频播放正常。当我使用软件 layerType 时,动画播放完美,但视频不播放(但音频播放),因为它不受支持。
我试过了:
清单中的硬件加速
web_view.setLayerType(View.LAYER_TYPE_HARDWARE, null)
web_view.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
CrossWalk XWalkView
我也尝试过这些解决方案android webview slow performance、Android webview slow、Android webview loading data performance very slow 等等
我查看了cordova webView代码并尝试了这个
webView.setInitialScale(0)
webView.isVerticalScrollBarEnabled = false
// Enable javascript
val settings = webView.settings
settings.javaScriptEnabled = true
settings.javaScriptCanOpenWindowsAutomatically = true
settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.NORMAL
这一行
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
完美地修复了动画,但来自Android webview slow 中的 cmets 说不支持 html5 视频。
关于如何让 WebView 表现更好的任何建议?我知道 url 可以在浏览器中使用,因为它是完美的
【问题讨论】:
你看到这个答案了吗:***.com/a/3205501/4079010 是的,我有,但感谢分享。该视频在网络、ios 和 android 浏览器上播放得非常好。在我添加 webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 之前它可以正常播放,但是 WebView 中的 CSS 动画非常滞后 动画在安卓浏览器上运行正常吗? 是的!完美,完全没有延迟 有音频但没有视频 【参考方案1】:我们遇到了同样的问题。尝试将 webview 的高度和宽度设置为特定值。
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
"ScreenWidth",
"ScreenHeight");
chrome webview update 77 出现了这个问题
【讨论】:
我刚刚尝试过,但仍然遇到同样的问题 :( 有很多动画,但它们在浏览器中可以正常播放。您还有其他建议吗? 我们还删除了“setInitialScale”行。所以也许这就是魔法。 我已经把它去掉了,我们唯一使用的是 webChromeClient、layoutParams(如上所述)、javascriptEnabled 和 javascriptInterface,所以我们也不再设置 initialScale【参考方案2】:对我们来说,答案是在硬件和软件加速之间切换。在开始时,我们使用了激烈的动画:
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
然后当视频开始播放时,我们观察并努力
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null)
这使动画可以通过软件加速完美播放,但通过弹回硬件解决了 html5 问题。我实现了一个 javascript 界面来传递何时从 web 视图切换回 android 应用程序。希望这可以帮助某人!
【讨论】:
以上是关于HTML5在android WebView中没有视频只有音频播放的主要内容,如果未能解决你的问题,请参考以下文章
在 mediaplayer 中播放的 Android webview 视频