近期Nexus 4手机自动升级到Android4.4,本来挺好的一件事儿,结果发现自己的应用中出现一个Bug,应用中使用了Webview播放HTML5视频,代码如下: 
<video width="480" height="280" poster="test.jpg" src="test.mp4" preload="auto"></video>

在4.3版本之前播放正常,新版本中播放时只能听到声音,而画面停留在最初的画面,也就是poster属性中的图片,但不会显示视频动画,只有点击暂停按钮,然后再次点击播放按钮时,视频动画才会显示正常。

网上查阅了很多国外论坛,发现两个类似的反馈,但解决方法不同,其中的一个办法是使用CSS3的-webkit-transform: translate3d(0, 0, 0)属性强制打开3D渲染,可以使视频播放正常,但这种方法会导致初始的poster图片只显示一下,然后一闪而过停留在视频播放界面,点击播放时,视频播放倒是一切正常。

另外在官方论坛找到一个类似的反馈报告: https://code.google.com/p/android/issues/detail?id=62145#makechanges 
其中提到此问题可能是由于preload属性引起,只有设定preload="none"才可以显示视频,官方已经确认了这个bug,并表示已经解决,下个版本会更新。但经我测试,单独设置preload="none"并不会完全解决此问题,视频仍旧只有声音,画面停留在初始界面。

经我多次试验,将上述两种方法结合起来,最终解决了这个问题,代码如下: 
<video width="480" height="280" poster="test.jpg" src="test.mp4" preload="none" ></video>

默认的poster显示正常,点击播放,视频声音画面显示也都正常。

这个Bug产生的原因我认为是在视频开始播放时没有启动3D加速,导致原始的poster图片未被刷新到视频画面。设置preload="none"禁止了视频的自动载入,确保了poster画面被正确载入;同时在点击播放视频时,-webkit-transform: translate3d(0, 0, 0)确保打开了3D加速,自动刷新了poster的原始画面。

当然以上原因都为猜测,解决办法也是临时的,因为这不符合HTML5标签的原始定义,未来还要看官方的下一个Android版本是否解决掉这个Bug。

最新文章

  1. juery学习总结(二)——juery操作页面元素
  2. android 查看当前正在运行的进程
  3. 吉特仓库管理系统-.SQL Server 2012 升级企业版
  4. 算法分析 Analysis of Algorithms -------GeekforGeeker 翻译
  5. javascript中的表结构
  6. Form.ShowDialog和Form.DialogResult
  7. python中精确输出JSON浮点数的方法
  8. SQL Server 2008 错误15023:当前数据库中已存在用户或角色
  9. UOJ179 线性规划
  10. 将已有的工程项目添加到Xcode到Git管理中
  11. spring的Convert机制
  12. 数据库设计很棒的参考CDM-PDM-LDM-PowerDesigner
  13. Java中,尽量相信自己,使用自己写的方法,不要使用底层提供的方法。都是坑。
  14. 洛谷[LnOI2019]长脖子鹿省选模拟赛 简要题解
  15. v-show 与 v-if区别
  16. 躲不掉的 lambda 表达式
  17. HDU 5988 Coding Contest(最小费用最大流变形)
  18. oracle mysql gbk varchar varchar2
  19. xml转Map,对象,Map转xml,inputs tram 转xml 字符串的工具类方法
  20. python中的 += 与 +

热门文章

  1. 剑指Offer:解决难题时的三大方法
  2. Linux学习四:UDP编程(上)
  3. VBA中如何动态定义数组
  4. linux 进程的创建
  5. Android-----test----monkeyrunner
  6. html5的FormData对象和input的file属性以及window.URL.createObjectURL( ) 方法(转载)
  7. MYSQL性能优化分享(分库分表)
  8. closest应用(向上查找最近的资料)
  9. python猜数脚本(电脑猜测)(二分法)
  10. 40、dom以xml结尾的文件