Web Audio API history

  1. <bgsound>:

    早在1996年,IE3.0定义了标签,这应该是web最早的一个能播放音频的标签,但是它没有成为标准,始终只有IE支持。提供的功能比较有限,就是自动播放,支持.wav|.mid|.ua格式音频。
    当时最早的个人blog中用来播放背景音乐的代码就是用<bgsound>实现的。

  2. <embed>

    OK,这个时候当时的浏览器厂商大哥NetScape坐不住了,没多久就退出了类似的功能标签<embed>
    其相对于<bgsound>的特色:

    • 添加了一点交互,可以暂停/播放(可选)。
    • 不仅仅支持音频格式文件,还支持当时比较高端的VRML Live3D的图形动画。

      大哥发话,很快小弟safari,opare,firefox就纷纷跟进支持<embed>

  3. <object>

    1994年W3C成立。1997年,随着HTML4的到来,W3C引入了 <object>标签,包括了图片、音频、视频等格式文件。可以说是第一款跨浏览器的音频播放标签。但是这个标签也有自己的弊端,例如标签臃肿,依赖插件,SEO困难等。

  4. <audio>

    2008年,第一份正式的HTML5草案发布,引入了新的富媒体元素<video><audio><canvas>,这些标签的引入最大目的还是为了减少web富媒体应用对插件的依赖。从标签名就能区分功能,这点也非常有利于搜索引擎去索引资源。相比<object>,其有一下特点:

    • 标签语义化,结构简单;
    • 脱离插件;
    • 简单的js内置方法以及事件交互。

      同样,也有缺陷:

    • 缺少对音频数据的访问权限,在需要更动感的交互和更复杂的音效需求面前就显得力不从心。

  5. [Audio Data API]

    为了满足更复杂的需求,Mozilla社区又开始搞事,提出了Audio Data API,对<audio>标签进行了js能力方面的扩展,这套API主要是以提供读取写入音频数据接口为主。不过到现在基本已经废弃了,因为很多音频的专业效果处理需要涉及大量波形相关处理算法,对于普通开发者来说,成本太高,这也是为什么最后W3C推荐WEB AUDIO API了。

  6. [Web Audio API]

    这套API最早是由Chrome社区提供并支持的,这是一套全新的相对独立的接口系统。对音频文件拥有更高的处理权限以及内置相关的音频专业效果处理(这一点很关键),可以完全独立于<audio>标签而存在。
    Web Audio API的特点:

    1. 更精确的时间控制;
    2. 可以完全独立<audio>,允许更多音频文件同事播放,用于游戏或者复杂音频应用场景;
    3. 模块化路由链接方式,让音频操作更加灵活形象;
    4. 实时的频域,时域数据访问/操作;
    5. 更多专业的音频处理方法

      1. 音道分离/合并;
      2. 音频延时效果;
      3. 内置频率滤波器;
      4. 音频空间感效果以及多普勒效应模拟;
      5. 音频卷积运算(用于声场环境模拟);
      6. 自定义波形生成器;
      7. 波形非线性失真处理。