这是一个很好的问题,bluesm。您向Sergey K 指出,对 ogg/vorbis 的平台支持与浏览器支持不同,这绝对是正确的。您正在寻找的是对 HTML5 规范定义的音频和视频标签支持的支持,以及针对各种媒体格式的解码器的实现。
据此页面http://hpr.dogphilosophy.net/test/
Android 浏览器:所有版本的 Android 都内置了 Ogg Vorbis
音频支持,但未添加对 HTML5 标签的支持
直到“姜饼”版本(Android 2.3)。出于某种奇怪的原因,
Android浏览器报告它不支持WebM Audio,但它
确实如此。
但是,默认浏览器可能不正式支持ogg格式,各种javascript检测策略可能会报告浏览器不支持。但是,我刚刚使用手机上的默认浏览器在该站点上进行了测试,该浏览器是 Android 2.3.7 设备(规格如下)。 ogg 格式确实播放了!!
我认为您为 html5test.com 发布的链接通常是一个很好的参考,但在这种情况下,它似乎是错误的。当然,这将取决于在 ROM 基础上安装的默认版本。但在我有限的测试中,Android 2.3 Gingerbread 中的默认浏览器确实支持 ogg/vorbis。
html5test 报告浏览器不支持 ogg 的原因可能与 javascript 检测不完整有关。 HTML5 音频元素支持canPlayType 函数。您可以向它传递一个 mime 类型,以确定浏览器是否可能能够播放特定格式。
var canPlayOga = audioElement.canPlayType('audio/ogg');
var canPlayAppOgg = audioElement.canPlayType('application/ogg');
在默认浏览器(至少我正在使用的浏览器)中,application/ogg 会返回“Yes”,audio/ogg 会返回“No”。因此,即使浏览器可以播放 ogg 文件,它也会报告它不能,如果只检查 audio/ogg。
为了澄清这一点,我应该指出 application/ogg 是一种 mime 类型,audio/ogg 也是如此。浏览器使用此信息来了解特定文件的格式。在没有此信息的情况下,浏览器可以使用与文件扩展名关联的默认 mime 类型。您可能知道,<audio> 标记内的<source> 标记可以包含带有音频格式的 mime 类型的 type 属性作为对浏览器的提示:
<audio>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
</audio>
我的测试表明,浏览器可能无法使用 audio/ogg 类型分配播放它,但会使用 application/ogg 类型,如下所示:
<audio>
<source src="horse.ogg" type="application/ogg">
</audio>
读者可以在这里尝试他们自己的设备,并让 cmets 知道哪些有效,哪些无效:http://hpr.dogphilosophy.net/test/