音频应用   音频插件联盟,正版插件,欢迎大家选择!

 找回密码
 快速注册

QQ登录

只需一步,快速开始

阅读: 20783|回复: 0

[音频接口] web audio接口和用法

[复制链接]

2211

积分

7

听众

680

音贝

音频应用新手发布

Rank: 3

积分
2211
发表于 2018-8-15 | |阅读模式
音频应用公众号资讯免费发布推广
web audio接口和用法

在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(),
5848710-6506df935916a0db.webp.jpg
欢迎厂家入驻,推文!免费!微信:yinpinyingyong
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

音频应用搜索

小黑屋|手机版|音频应用官网微博|音频招标|音频应用 (鄂ICP备16002437号)

Powered by Audio app

快速回复 返回顶部 返回列表