最近做了一个需求,在一个原有的 webview 页面上加一个在线视频播放器,做了许多资料查询,最终选用 h5 <video> 标签
标签如下:
<video width="100%" controls="controls" preload="preload" poster="封面图片地址" webkit-playsinline >
<source src="http://qiubai-video.qiushibaike.com/P63PSNZITNO77GTS_3g.mp4" type="video/mp4">
Your browser does not support the video tag
</video>
用WebView加载视频的时候,第一次进入这个WebView界面时候视频能正常播放。
播放多次之后,WebView会报如下错误:
[ERROR:in_process_view_renderer.cc(193)] Failed to request GL process. Deadlock likely: 0
然后再次进入包含这个WebView的界面后,WebView什么都加载不出来了,一直卡在WebView界面,最后程序奔溃
google了很多资料,有人说把webView 的属性设为 webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null), 硬件加速
设置了之后确带来了另一个问题,视频有声音但是确不能出现画像.....
之后看到一个人技术社区的讨论:https://android.googlesource.com/platform/external/chromium_org/+/cf0c1a0/android_webview/browser/in_process_view_renderer.cc
把webView的预加载属性设为preload="none" 异常暂时却消失了,具体原因尚未得知。
2.webView 关于图片显示路径问题
poster=“ 封面图片路径”
显示video封面图片,但是直接用
String url = "file:///android_asset/index.html";
webView.loadDataWithBaseURL("file:///android_asset/", url , "text/html", "UTF-8", null);
要为webView指定相对路径,否则图片显示找不到路径。