Audio Ogg Vorbis android 默认浏览器

Posted

技术标签:

【中文标题】Audio Ogg Vorbis android 默认浏览器【英文标题】:Audio Ogg Vorbis android default browser 【发布时间】:2013-03-01 09:55:33 【问题描述】:

我想知道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

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

非常感谢您。

【问题讨论】:

【参考方案1】:

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

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

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

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

这称为平台碎片化

【讨论】:

但是原生应用程序是否支持 Vorbis Ogg 文件 = 浏览器支持这种音频格式? 在本机应用程序中,您可以直接将 ligogg/libvorbis 与 Android NDK 一起使用。是的,它会起作用的。 但是我问过Android是否支持特定的音频格式,默认浏览器是否也支持这种格式? ~ 你可以在操作系统上内置支持 Mp3,但无论如何你可以构建不支持它的浏览器。 我不问安卓NDK,我问安卓平台的浏览器。 即使在 2.3 浏览器中,仅当使用 application/ogg mime 类型发送 ogg 文件时才会被接受。 audio/ogg mime 类型实际上可能是更合适的类型,但浏览器不接受它(即使有平台支持。)【参考方案2】:

这是一个很好的问题,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/

【讨论】:

Ogg 格式在 Android v2.3.7 (CyanogenMod-7.2.0) 上使用 Browser v2.3.7 成功播放。电话:Droid X2。 报“是”的“application/ogg”是什么意思? 我在回答中澄清了这一点。感谢您的提问。

以上是关于Audio Ogg Vorbis android 默认浏览器的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ogg Flac 和 Vorbis 在 Fedora 中构建 libsndfile

如何无损连接ogg vorbis文件?

如何解码 ogg vorbis 文件 java?

目标 c - 将 mpmediaitem 转换为 ogg vorbis

在Flash / Flex应用程序中使用Ogg Vorbis

适用于 Windows 的 Python 中的 Ogg Vorbis 包装器