我有一个AudioBuffer客户端,我想将AJAX发送到快速服务器。
This link显示了XMLHttpRequest如何发送/接收二进制数据 - ArrayBuffer。
ArrayBuffer与AudioBuffer不同(或者我相信),因为我解码了一个ArrayBuffer来创建AudioBuffer。这是使用decodeAudioData()作为Web Audio API的一部分完成的。
所以我的问题是,我可以将AudioBuffer转换回ArrayBuffer吗?
如果可以的话,我想将ArrayBuffer发送到我的快速服务器,然后将其转发到S3存储桶,如this example所示。
在该示例中,代码PUT通过fs.readFileSync()创建的S3存储桶中的缓冲区。我假设Buffer和ArrayBuffer之间的区别不会是S3的问题:S
答案 0 :(得分:1)
使用copyFromChannel方法,然后将Float32Array
转换为ArrayBuffer
。
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);
var anotherArray = new Float32Array();
myArrayBuffer.copyFromChannel(anotherArray,1,0);