<bgsound>
:早在1996年,IE3.0定义了
标签,这应该是web最早的一个能播放音频的标签,但是它没有成为标准,始终只有IE支持。提供的功能比较有限,就是自动播放,支持.wav|.mid|.ua格式音频。
当时最早的个人blog中用来播放背景音乐的代码就是用<bgsound>
实现的。<embed>
OK,这个时候当时的浏览器厂商大哥NetScape坐不住了,没多久就退出了类似的功能标签
<embed>
。
其相对于<bgsound>
的特色:- 添加了一点交互,可以暂停/播放(可选)。
不仅仅支持音频格式文件,还支持当时比较高端的VRML Live3D的图形动画。
大哥发话,很快小弟safari,opare,firefox就纷纷跟进支持
<embed>
。
<object>
1994年W3C成立。1997年,随着HTML4的到来,W3C引入了
<object>
标签,包括了图片、音频、视频等格式文件。可以说是第一款跨浏览器的音频播放标签。但是这个标签也有自己的弊端,例如标签臃肿,依赖插件,SEO困难等。<audio>
2008年,第一份正式的HTML5草案发布,引入了新的富媒体元素
<video>
,<audio>
,<canvas>
,这些标签的引入最大目的还是为了减少web富媒体应用对插件的依赖。从标签名就能区分功能,这点也非常有利于搜索引擎去索引资源。相比<object>
,其有一下特点:- 标签语义化,结构简单;
- 脱离插件;
简单的js内置方法以及事件交互。
同样,也有缺陷:
缺少对音频数据的访问权限,在需要更动感的交互和更复杂的音效需求面前就显得力不从心。
[Audio Data API]
为了满足更复杂的需求,Mozilla社区又开始搞事,提出了Audio Data API,对
<audio>
标签进行了js能力方面的扩展,这套API主要是以提供读取写入音频数据接口为主。不过到现在基本已经废弃了,因为很多音频的专业效果处理需要涉及大量波形相关处理算法,对于普通开发者来说,成本太高,这也是为什么最后W3C推荐WEB AUDIO API了。[Web Audio API]
这套API最早是由Chrome社区提供并支持的,这是一套全新的相对独立的接口系统。对音频文件拥有更高的处理权限以及内置相关的音频专业效果处理(这一点很关键),可以完全独立于
<audio>
标签而存在。
Web Audio API的特点:- 更精确的时间控制;
- 可以完全独立
<audio>
,允许更多音频文件同事播放,用于游戏或者复杂音频应用场景; - 模块化路由链接方式,让音频操作更加灵活形象;
- 实时的频域,时域数据访问/操作;
更多专业的音频处理方法
- 音道分离/合并;
- 音频延时效果;
- 内置频率滤波器;
- 音频空间感效果以及多普勒效应模拟;
- 音频卷积运算(用于声场环境模拟);
- 自定义波形生成器;
- 波形非线性失真处理。