正在将数据追加到已存在的AudioBuffer对象
Appending data to an already existing AudioBuffer object
我希望将数据附加到已经使用web音频播放的现有AudioBuffer中。
收到要播放的音频数据后,我创建一个AudioBuffer,然后将数据分配给ArrayBuffer响应。
var audioBuffer = context.createBuffer(1, audioToPlay.length, 16000);
audioBuffer.getChannelData(0).set(audioToPlay);
然后我创建一个缓冲区源节点,并将音频缓冲区连接到web音频上下文。
var source = context.createBufferSource();
source.buffer = audioBuffer;
source.connect(context.destination);
source.start(0);
现在,我想做的是将更多数据(另一个ArrayBuffer)附加到当前正在播放缓冲区的,同时避免必须使用onended
回调来创建新的缓冲区。。
有办法做到这一点吗?据我所知,这似乎没有得到支持。
您不能这样做。一旦播放缓冲区通过start()移交给音频线程,就不能修改它
然而,也就是说,你绝对不应该使用onended。您应该做的是跟踪计划的最后一个音频缓冲区和它启动的currentTime,并在time=lastCurrentTimeStart+lastBufferDuration创建和播放一个新的音频缓冲区。您应该能够获得流畅、不间断的播放。
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 用于检查数组中是否存在元素的javascript自定义方法
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 正在将事件处理程序添加到不存在的类
- 是否存在React Native“;WEB代码安全防护”;
- 一个密码测试程序,如果存在空格,它会提醒用户
- 验证会话中是否存在对象's数组
- javascript如果图像不存在don't加载它
- 如何查找值是否存在于二叉树中
- IE9的HTML5 Canvas getImageData()函数存在问题
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- CORS-服务器端cookie没有保存在chrome浏览器上
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- 存在每个时间元素的javascript事件
- 正在将数据追加到已存在的AudioBuffer对象