HTML5中关于音频处理和播放的API有两个,即WebAudio和audio元素,很多人会把它们混为一团,其实它们是分别为不同的目的而设计的。下面分别给予简要介绍。
WebAudio主要是用来对音频数据添加音效,例如过滤掉音频数据中的杂音让声音听起来更加圆润,也可以动态设置倾听者相对于音源的位置,让每个位置听起来的效果不一样,这在游戏中是经常需要的,就像我们在打反恐精英游戏中,在不同的位置听到敌人的脚步声都是不一样的。所以WebAudio一般应用在游戏和音频处理软件中,由于需要应用在游戏中,所以对实时性的要求就很高。除此之外,WebAudio提供了与其他元素的互操作性,例如可以把audio元素中的输出的音频数据导入到WebAudio中,进行细粒度的处理然后再播放出来。WebAudio也可以对WebRTC中的音频进行处理,WebRTC是让两个或多个用户进行端对端的视频通信的API,设想一下如果WebAudio能对用户进行麦克风抓取的数据进行一些处理,例如把声音变得深沉有磁性然后再发送给另外一端,是不是一件非常酷的事情呢?现在WebAudio已经提供了该功能。
audio元素是为了解决让浏览器不需要安装插件就能直接播放音频文件而设计的,在audio元素添加到浏览器之前,播放音频文件需要安装额外的插件,这及其不方便,并且插件让用户感觉到安全隐患。现在引入HTML5的audio元素之后,开发者直接在网页中添加一个audio元素,指定音频文件的源地址,通过play函数就可以播放文件,通过pause函数就可以暂停播放,通过stop函数来停止播放,也可以设置loop属性为true让音频文件循环播放。当然了开发者也可以动态的改变audio元素的音频文件源地址选择其他文件进行播放。通过audio元素开发者就可以很容易的实现一个Web版的音乐播放器。