7

我想知道 Android 设备中音频编解码器的支持是什么。

在这里我发现 2.3 和 4.0 只支持 mp3 编解码器:

http://html5test.com/compare/browser/android23/android40/android22.html

虽然我在 Galaxy S 上测试了 android 2.3,但我发现它也可以播放 ogg vorbis 格式。

4.x 手机也是如此。

这是我做的测试http://twigit.pl/trash/test_mac.html

我在哪里可以找到有关音频编解码器移动支持的可靠资源?

非常感谢您提前。

4

2 回答 2

1

这是 Android 中支持的媒体格式的官方列表:

http://developer.android.com/guide/appendix/media-formats.html

表 1 显示所有 Android 版本都支持 Vorbis 解码器。

尽管如此,不保证在所有 Android 平台版本和所有 Android 设备上都可用的媒体编解码器。即,一些 OEM 可以在不支持某些特定代码(Vorbis 或任何其他代码)的情况下构建自己的 Android ROM。

这就是所谓的平台碎片化

于 2013-08-08T21:13:33.297 回答
1

这是一个很好的问题,bluesm。您完全正确地指出Sergey K,平台对 ogg/vorbis 的支持与浏览器支持不同。您正在寻找的是对 HTML5 规范定义的音频和视频标签支持的支持,以及特定于各种媒体格式的解码器的实现。

根据此页面http://hpr.dogphilosophy.net/test/

Android 浏览器:所有版本的 Android 都内置了 Ogg Vorbis 音频支持,但直到“Gingerbread”版本(Android 2.3)才添加对 HTML5 标签的支持。出于某种奇怪的原因,Android 浏览器报告它不支持 WebM 音频,但它确实支持。

但是,默认浏览器可能不正式支持 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返回“是” ,但对于audio/ogg返回“否” 。因此,即使浏览器可以播放 ogg 文件,它报告它不能,如果只检查audio/ogg

为了澄清这一点,我应该指出application/ogg是一种 mime 类型,audio/ogg也是如此。浏览器使用此信息来了解特定文件的格式。在没有此信息的情况下,浏览器可以使用与文件扩展名关联的默认 mime 类型。您可能知道,<source>标签内的<audio>标签可以包含一个type带有音频格式的 mime 类型的属性作为浏览器的提示:

<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>

读者可以在这里尝试他们自己的设备,并留下关于哪些工作和哪些不工作的评论:http: //hpr.dogphilosophy.net/test/

于 2013-08-15T17:02:44.600 回答