美文网首页
H5:web audio接口和用法

H5:web audio接口和用法

作者: 我爱吃肥肠 | 来源:发表于2018-02-05 16:02 被阅读0次

    在html中解析音频文件有专门的api和步骤。

    要处理音频需要先创建一个音频环境AudioContext可以控制它所包含的节点的创建,以及音频处理、解码操作的执行。做任何事情之前都要先创建AudioContext对象,因为一切都发生在这个环境之中.类似于使用canvas时候创建的canvas环境。(   var canvas=$('canvas' ); ctx=canvas.getcontext('2d')).

    1,var ac=new (window.AudioContext||window.webkitAudioContext)();//创建处理音频的环境

    2,获取到arraybuffer(通过xhr.response)之后调用ac.decodeAudioData(audiodata,function(data){})进行解码。

    3,当成功解码之后在回调函数function(data){}中通过ac.createBufferSource()创建的接口进行处理并获得一个AudioBufferSourceNode节点。写法:ac.createBufferSource().buffer=data;

    4,将创建好的节点connect到ac.destination上面去,写法是:buffersource.connect(ac.destination);

    5,启动节点。buffersource.start()

    6,audiobuffersourcenode作用很大。

    tips:

    1,canvas不用new初始化,xhr用new初始化.同时AudioContext不是驼峰写法。

    2,arraybuffer的数据不能直接访问,通过typed array的接口转换可以看的到。

    3,获取audiobuffer对象有两种方法,一种是通过ac.createBuffer()创建空白的audiobuffer对象以用于数据填充。第二种是通过ac.decodeAudioData(arraybuffer,fn)成功解码音轨后获取。其中第二种方法decodeAudioData的第一个参数是从xhr返回的音频流。解码成功后返回audiobuffer给回调函数。最终,解码压缩后的音频,如mp3,需要使用异步的第二种方法以防止阻塞。

    4,将获得的audiobuffer附加到一个audiobuffersourcenode接口上,这个接口可以播放音频。就是上面3的写法。最终这个sourcenode接口和硬件播放设备连接起来start()播放。

    5,createBufferSource()方法创建的audiobuffersourcenode对象有三个属性:buffer,loop和onended。有两个属性:start和stop。这里用了buffer属性和start()方法。

    这一套流程用到的接口和方法有:AudioContext.decodeAudioData(),AudioContext.createBufferSource(),AudioContext.destination,AudioContext.start(),

    相关文章

      网友评论

          本文标题:H5:web audio接口和用法

          本文链接:https://www.haomeiwen.com/subject/zhhizxtx.html