之前做了两个项目,和音频,视频相关,遇到了很多坑,记录一下自己遇到的坑,还有别人的前车之鉴。

1.有的安卓手机不写controls 有的方法不好用比如播放,安卓除了play和paused剩下好多方法都不支持。

2 在移动端的视频和音频有的是需要用户手动点击开启的,而使用autoplay或在js里写play()是没有任何作用的,iOS不支持autoplay属性,需手动点击开启,使用setTimeout延迟开启也不行;(这个需要看浏览器是否支持)。

3.canplaythrough表示可是流畅播放了,但是在android下是没有卵用的; 有的android下是播放完成后才会触发。

4.playing表示开始播放了,android下无效;
5.canplay认为是视频元素没有问题,可以运行,没有更多含义了,基本用不上,android下一样;

9.在网络不太好,或视频比较大的情况下,在点击和正式播放的空隙内会有一段等待视频加载的时间;有时候也会出现只有音频而没有画面的情况。

10.后赋src的audio/video,先调用load方法,再判断readyState,readyState>1后,再调用play方法。否则可能无法播放。(方法就是定时器反复判断readyState>1,调用play,再判断paused状态)

11.获取duration时,有的资源在不同浏览器获取的数值不一样。(当时是在chrome下,ios下是3分钟,在安卓里是六分钟,)初步判定时源文件的问题。

12.微信里面(忘了从哪个版本开始了),video具有最大的zindex值,遮不住。

13.ios哪个版本也忘了,设置视频的宽高时,必须都设置,不能只设置宽,不设置高,让其自适应。安卓下如果通过css控制视频大小,可能会导至标签失效。

14.有的安卓不支持poster,ios家在poster比《img》标签慢,模拟poster的方法,在视频上方放一个div,视频播放时,让其opcity=0。

15.video.seeking 属性返回用户目前是否在音频/视频中寻址,可以根据此状态控制显示加载图标,优化体验。

16.video.onerror 有四种code  1->用户终止,2->网络错误, 3->解码错误, 4->url无效。用来判断视频无法播放的原因。

17.有些安卓不支持onplay方法,可以video.addEventListener('onplay',function(){}),就能用了。

18.播放视频时只有声音没有图像:有部分原因是因为视频编码不正确。mp4中只有h.264支持。或者视频有点大。

19.ios下物理位置覆盖在<video>区域上的元素,click和touch等事件会失效,比如一个<a>链接如果覆盖在<video>上,那么点击后没有任何效果。

20.iOS8.0+中,单页面播放视频超过16个,再播放的视频全部MediaError解码异常无法播放。

21.低版本Android(<=4.0.4)中,<video>如果在有相对和决定定位的层中,可能会导致整个页面错位。