我想从 ArrayBuffer 播放音频数据...所以我生成我的数组并用 microfone 输入填充它。如果我在画布上绘制这些数据,它看起来像 -->
所以这行得通!
但是如果我想听这些数据
context.decodeAudioData(tmp, function(bufferN) { //tmp is a arrayBuffer
var out = context.createBufferSource();
out.buffer = bufferN;
out.connect(context.destination);
out.noteOn(0);
}, errorFunction);
我什么也没听到......因为调用了errorFunction。但是错误是空的!
我也尝试像这样获得缓冲区:
var soundBuffer = context.createBuffer(myArrayBuffer, true/*make mono*/);
但我收到错误:未捕获的语法错误:指定了无效或非法的字符串。
谁能给我一个提示?
编辑1(更多代码以及我如何获得麦克风输入):
navigator.webkitGetUserMedia({audio: true}, function(stream) {
liveSource = context.createMediaStreamSource(stream);
// create a ScriptProcessorNode
if(!context.createScriptProcessor){
node = context.createJavaScriptNode(2048, 1, 1);
} else {
node = context.createScriptProcessor(2048, 1, 1);
}
node.onaudioprocess = function(e){
var tmp = new Uint8Array(e.inputBuffer.byteLength);
tmp.set(new Uint8Array(e.inputBuffer.byteLength), 0);
//Here comes the code from above.
谢谢你的帮助!