今天把之前项目中遇到的关于视频、音频方面的坑给大家罗列一下,防止大家以后在泥潭中挣扎。(坑太多,必不全,欢迎大家补充和修正)
video chapter
总说:
1.建议只用MP4这一种视频格式文件
原因:兼容性好,ios安卓均可播放,avi格式虽然也可播放,但相同视频文件较大,加载较慢,所以MP4性价比最高。(若对视频画质要求较高,那没治,就用avi)
2.为了兼容不同浏览器建议video标签的通过source标签来添加src值,举个栗子
是介样:
而不是介个样子的:
关于video标签的众多属性请大家自行查阅W3C。
3.默认播放控件来说样式比较原始,并且部分安卓 机型不支持内置控件,或者说内置控件无法正常使用;各个产品都有特定的视觉规范,默认控件的交互和视觉无法满足需求。
因此能自定义控件是最好的了。
4.IOS系统中,完美,perfect,awesome!兼容性良好,ios系统自带全屏播放功能,视频加载速度较快。为啥说的这么爽朗呢,就是因为下面要说到万恶的安安安 安卓了!
细说:
1.video标签在安卓系统下不能全屏显示(茫然脸)。
2.结合MUI框架来说
* Android 5.0 版本以上机型可单独使用video标签,亦可与MUI框架一同使用,播放正常。
* Android 5.0 以下版本(可测机型不多,故版本可能不十分具体),video标签可单独使用,但不能同MUI框架混合使用,混合之后:文件可加载到页面中却无法播放,控制条里的播放暂停按钮不能点击,
去掉MUI框架后可正常播放,但需要较长的加载时间。
*Android 所有版本都存在,视频播放的过程中退出页面后,文件仍继续播放,此时需要原生同学介入来停止播放。
3.对于video标签与Iscroll的兼容性问题
*无论是ios还是android 系统引入iscroll之后,当手指滑到webview中存在视频和音频默认控件的区域时就会出现滑动障碍, 很难滑下去。
解决方案:iscroll初始化时禁止浏览器默认行为 preventDefault = false;对于能用其他方法实现的页面不要引入iscroll插件。
audio capter
总说:
1.建议只使用MP3 格式的音频文件。
2.其他问题与video标签相同,不再赘述。
Summary:
video和audio标签在ios系统下自动播放的问题:ios官方给出的解释是:In Safari on iOS (for all devices, including iPad), where the user may be on a cellular network and be charged per data unit,preload and autoplay are disabled. No data is loaded until the user initiates it. This means the JavaScript play() and load() methods are also inactive until the user initiates playback,unless the play() or load() method is triggered by user action. In other words, a user-initiated Play button works, but an onLoad="play()" event does not.
翻译过来就是:不行!!! 大概就是苹果考虑到用户的个人权利,禁止了Autoplay和JS "onload" 加载播放。只能在用户在与屏幕交互的前提下才能播放多媒体,多么人性化,充分体现在了在美帝国家对个人权利的保护做的多么到位。所以我们给出的解决方案是:只能在用户与屏幕进行交互(点击触碰)之后,通过js调用play()方法。
这是淘宝前端团队写的一篇关于视频播放的文章,可能会帮助到你。http://taobaofed.org/blog/2016/05/23/video-player/
总感觉还少了几个坑没说,等想起来再给大家补充上吧!撒花~