你是对的。这是因为每个浏览器支持不同的“编解码器”。最初,HTML5 将只有一个编解码器,但浏览器供应商无法就哪一个(专利保护与开源)达成一致,因此放弃了这一要求。
例如,对于视频,IE 和 Safari 支持 H264 (MP4)、Chrome、FF 和 Opera WebM/Ogg。为确保它适用于所有浏览器,您可以提供多个源元素并对视频进行三次编码。首先是 Mp4,其次是 WebM 或 Ogg(支持视频的浏览器会尝试每个源元素,直到找到可以播放的元素。注意:目前 iPad 上有一个“错误”,它只能播放第一个源元素)
你甚至可以为你的后备嵌入一个 Flash 对象,这样你的视频也可以在旧版本的 IE (<9) 中运行。你最终会得到这样的东西:
<!—Multiple videos with alternate Flash content-->
<video controls>
<source src="rocpoc.mp4">
<source src="rocpoc.ogv">
<object data="videoplayer.swf" type="application/x-shockwave-flash">
<param name="movie" value="rocpoc.swf"/>
</object>
A movie by Rocky Lubbers
</video>
如果您想在浏览器无法播放 MP3 文件的情况下显示文件链接,您可以使用一点 JavaScript 代码来测试浏览器是否可以处理 MP3 格式并显示文件链接而不是视频. 要调用的 JavaScript 方法是 canPlayType。
//Checking for browser support
//canPlayType returns null, maybe, or probably (the best)
//You can check if they are supported in navigator.plugins
var support = videoElement.canPlayType('video/some-format;codecs="some-codec"');
或者,(我认为仅适用于视频)您可以使用 vid.ly (http://m.vid.ly/user/) 之类的服务,从云端提供正确的文件。