HTML5音频编解码器

6

我正在使用HTML5音频标签,但似乎找不到mp3和wav的编解码器应该如何指定。

我知道ogg是:

<audio>
<source type='audio/ogg; codec="vorbis"' />
</audio>

有人知道我应该写什么来处理mp3和wav文件吗?

3个回答

6

<source type=""> 关键字的最佳参考资料不是您可能认为的 IANA 媒体类型注册表,而是developer.mozilla.org 的“HTML 音频和视频的媒体格式”文章,该文章记录了浏览器(不仅仅是 Firefox)实际实现的内容,而不是 RFC 所说应该发生的内容。(例如,.WAV 文件没有官方 MIME 类型。)

对于您提到的音频容器格式,这些是我推荐使用的 source 标签:

  • Ogg:<source type="audio/ogg">
  • MP3:<source type="audio/mpeg">
  • WAV:<source type="audio/wav"> (令人恼火的是,audio/wave 同时被“首选”和“无法在 Chrome 中使用”,非常感谢 Google。)
我建议您不要指定使用的编解码器,因为这会将可能会改变的细节嵌入到HTML中。浏览器会自动处理。(实际上,整个混乱应该使用直接在audio标签上使用通用URL和HTTP请求的Accept:头来处理,但没有人听我的话。)

5
如果您没有指定编解码器,那么浏览器会稍微打开文件以查看是否可以播放它。这就是添加编解码器值的好处。我想尝试理清这一点。 - keith
@Keith,我不确定这是否正确。我知道Firefox足够聪明,可以仅基于MIME类型跳过文件。 - karnage
从技术上讲,WAV文件没有官方的媒体类型注册,因此没有一种格式是完全正确的。根据我所阅读到的文档,"audio/wave"可能是“首选”,但却“无法在Chrome中使用”,这听起来就像有些人需要被锁在一个房间里直到他们达成一致,并提交官方的媒体类型注册。 - zwol
@zwol 是的,标准会很好。 :-) 我很高兴WAV文件能够正常工作!我曾经不得不在JavaScript中对它们进行解码,并通过Web Audio API ScriptProcessorNode输出。 - Brad

1

1
这就是提供多个源并告诉浏览器它们所使用的编解码器的目的。浏览器会自行选择支持的编解码器。您不需要为其做任何事情。 - TRiG

0

你在 Ogg 中使用 Vorbis 的语法几乎正确,只需确保使用复数的 codecs

audio/ogg; codecs=vorbis

浏览器不支持PCM和MP3格式的Ogg文件。但是,浏览器支持WAV格式的PCM文件,你可以使用以下代码:
audio/wav; codecs=1

(对于常量1WAVE_FORMAT_PCM,请参见RFC2361的附录A。)
对于普通的MPEG Layer 3音频,除了比特流本身之外,没有真正的容器,因此只需使用:
audio/mpeg

最后,正如其他人所提到的,您不需要明确指定编解码器。指定文件类型就足够了。但是,如果您已经知道编解码器,可以帮助指定它们,以便更高效地加载和减少探测。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接