<video>是HTML5新增的一个标签,它使得用户可以在浏览器中,不借助任何第三方插件就可以播放服务器上的视频。同时,与<video>类似地,<audio>标签也可以在浏览器中直接播放音频。
然而,由于HTML5的标准尚未正式发布,各家的浏览器对于HTML5新标签的支持情况各不相同。我在一个小项目里尝试了<video>和<audio>两个标签的多个属性和事件,发现不同的浏览器对于这两个标签的支持并不相同,甚至同一浏览器在不同平台上的表现都大相径庭。这里列举出来,作为记录。
<video>标签支持的视频格式[1]:
格式 | IE | Firefox | Opera | Chrome | Safari |
---|---|---|---|---|---|
Ogg | No | 3.5+ | 10.5+ | 5.0+ | No |
MPEG 4 | 9.0+ | No | No | 5.0+ | 3.0+ |
WebM | No | 4.0+ | 10.6+ | 6.0+ | No |
这些都是网上已有的资料,动动手查一下就能知道。而我要说的是Android平台上各个浏览器对<video>的支持。经过我的测试,在一台运行Android 4.2.2的Sony C6603 Xperia Z上, Chrome的表现最佳,甚至超过了PC平台的Chrome,它支持divx编码的avi视频。而这应该是浏览器原生的支持,因为我卸载了MXPlayer,禁用了自带的视频播放应用后,它仍能工作。但进一步的测试发现,对avi视频的支持在各种机型上还是有差别的。在一台运行Android 4.0.4的Samsung Galaxy S3 上,Chrome是无法播放avi视频的,但mp4可以正常播放。而在一台运行CM10的Motorola MB525上,Chrome无法播放这两种格式的任意一种。另外Android平台下别的浏览器例如海豚、Firefox、遨游基本或多或少都有问题。而iOS下的Sarfari也无法播放avi的视频。Firefox完全无法播放任何音频和视频,其他上述浏览器都不能很好地同时播放所有音频、视频。需要提出的是,Firefox在PC上表现得比Chrome更好,Firefox能正常播放短于1秒的视频,而Chrome很难正常播放出来。
我的代码是这样的:
<video src="res/001.avi" ></video>
而在PC端能够生效的autoplay属性在Android上失效了。这是出于保护用户流量考虑的。可以在chrome://flags的找到相应的设置更改它,但并不建议这样做。
Chrome可以在一个页面同时播放多路音频\视频,不论PC还是Android。Android上的其他浏览器基本上都是只能同时播放一个视频外加一个音频,有的甚至视频、音频都只能二选一。
如此乱象使得我的小项目难以推广,也令我担忧:我们好不容易干掉了IE6,准确地来说,这革命都还尚未成功,如果HTML5的支持也是不按W3C的标准而每个浏览器厂商各自搞一套,那么他日还会出现更多的IE6,比如苹果的IE6,谷歌的IE6,国内众山寨IE6……
没有评论:
发表评论