video 移动端canplay不触发

958 阅读2分钟

image.png
video自定义控件在pc端表现正常但是在某些系统版本较低的平板上会出现上述现象,视频加载完成但是无法播放。比如ipad的系统在15以下,升级系统版本至最新我这里当前是16也可以解决视频不播放的问题

这里是监听video的canplay事件然后将loading取消,但是这里loading一直不消失是因为在视频加载完成后不会主动触发canplay事件,需要在手动触发播放后才会触发canplay事件。但是loading不消失用户就无法点击播放导致页面就一直这个状态

在视频/音频(audio/video)加载过程中,事件的触发顺序如下:


onloadstart:在浏览器开始寻找指定视频/音频(audio/video)触发

ondurationchange:在视频/音频(audio/video)的时长发生变化时触发。
**注意:**  当视频/音频(audio/video)已经加载后,视频/音频(audio/video)的时长从 "NaN" 修改为当前的时长。

onloadedmetadata:在指定视频/音频(audio/video)的元数据加载后触发。
视频/音频(audio/video)的元数据包含: 时长,尺寸大小(视频),文本轨道。

onloadeddata:在当前帧的数据加载完成且还没有足够的数据播放视频/音频(audio/video)的下一帧时触发。

onprogress:在浏览器下载指定的视频/音频(audio/video)时触发。

oncanplay:在用户可以开始播放视频/音频(audio/video)时触发。

oncanplaythrough:在视频/音频(audio/video)可以正常播放且无需停顿和缓冲时触发。

解决办法:在canplay之前的某个事件中添加取消loading的逻辑即可。

附加iOS中Safari调试方法: 1、设置 -> safari -> 高级 -> 网页检查器

IMG_0187.jpg 2、用数据线连接设备到电脑上
3、电脑上也打开Safari -> 开发 -> 选择自己对应的那个移动设备的名称 -> 选中需要调试的页面
就可以愉快的调试啦

image.png

image.png