HTML Audio 元素可以播放错误的音频格式

Posted

技术标签:

【中文标题】HTML Audio 元素可以播放错误的音频格式【英文标题】:HTML Audio element can play wrong audio format 【发布时间】:2015-10-19 01:33:51 【问题描述】:

我想知道当 src 元素的 type 属性设置为错误格式时,它可能的 html 音频元素如何播放歌曲?

例如,我将 mp4 音频文件的类型属性设置为 audio/wav,即使我没有指定后备源,它仍然可以播放?此外,如果您省略类型,它似乎仍然可以找出正确的音频格式。

所以我的问题是源元素的 type 属性的目的是什么?

<audio controls="controls">
  Your browser does not support the <code>audio</code> element.
  <source src="http://a898.phobos.apple.com/us/r1000/039/Music6/v4/13/22/67/1322678b-e40d-fb4d-8d9b-3268fe03b000/mzaf_8818596367816221008.plus.aac.p.m4a">
</audio>

这是一个显示效果https://jsfiddle.net/abftb7sm/4/的jsfiddle

【问题讨论】:

你根本没有设置类型 我实际上省略了它,因为它仍然可以播放,但如果我包含错误的类型,它也会播放 【参考方案1】:

经过一些测试,根据the specs 看来,MediaElements 的type 属性似乎仅帮助浏览器确定它是否应该以及如何获取 数据。

type 属性给出媒体资源的类型,帮助用户代理在获取该媒体资源之前确定它是否可以播放。

在 Firefox 上, 将其设置为任何有效值,但不符合实际文件类型将使 UA 以plain 获取数据。然后当被要求播放时,UA 会仔细检查数据类型并能够覆盖您提供的type

但是,将其设置为一些无效值(例如 "Audio/mpeg" 而不是 "audio/mpeg")将使您的 UA 甚至无法获取任何数据。这里没有仔细检查。

Chrome 似乎从不信任我们...

【讨论】:

以上是关于HTML Audio 元素可以播放错误的音频格式的主要内容,如果未能解决你的问题,请参考以下文章

H5 音频

IOS音频1:之采用四种方式播放音频文件AudioToolbox AVFoundation OpenAL AUDIO QUEUE

HTML5中audio标签的使用

解决audio在苹果机播放无声音

如何用js控制audio元素连续播放mp3文件

JavaScript - PC 端通过纯 js 播放音频文件(播放提示音)