背景

公司项目是混合app,使用了安卓的壳,将web代码下载到安卓手机本地,使用webview来启动项目,项目中需要播放视频,而视频也是下载到安卓本地之后播放,发现了几个问题:

  1. 正常播放视频过程中暂停一段事件(30秒左右),再播放视频会重头开始播放。
  2. 调节进度条后也会重头开始播放

复现设备版本:安卓 7
安卓同学使用高版本安卓(10)设备不复现,可能是安卓的Webkit模块后期已经修复这个问题

定位并解决

我先尝试控制台调试代码,发现给video的currentTime赋值之后,会直接归零。
操作使用本地源的video标签

继续尝试使用远端视频去播放,发现赋值是没有问题的。
操作使用远端源的video标签
开始对比两种调用的区别,发现请求头与返回值中有一些区别

  • 本地视频发出的请求
    本地视频发出的请求
  • 远端视频发出的请求

远端视频发出的请求

分析是本地模仿的请求中返回值中不支持Range字段,尝试让安卓同学支持分段下载。
改动之后
改完之后可以看到请求的返回状态为206,即是成功支持了分段下载,并且之前的问题也随之解决。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐