Javascript 使用ScriptProcessorNode实时处理getUserMedia音频
我正在尝试获取一些关于麦克风数据的实时数据。因此,我将ScriptProcessorNode连接到我的实时音频输出,如下所示(coffeescript):Javascript 使用ScriptProcessorNode实时处理getUserMedia音频,javascript,html,coffeescript,web-audio-api,getusermedia,Javascript,Html,Coffeescript,Web Audio Api,Getusermedia,我正在尝试获取一些关于麦克风数据的实时数据。因此,我将ScriptProcessorNode连接到我的实时音频输出,如下所示(coffeescript): 但是,从未调用onaudioprocess函数。要使其运行,我需要做什么?ScriptProcesser的onaudioprocess事件将不会启动,如果其输出未连接到其他节点 您可以检查此项以查看它的运行情况 var scr = context.createScriptProcessor(1024,1,1); // uncomment t
但是,从未调用onaudioprocess函数。要使其运行,我需要做什么?
ScriptProcesser
的onaudioprocess
事件将不会启动,如果其输出未连接到其他节点
您可以检查此项以查看它的运行情况
var scr = context.createScriptProcessor(1024,1,1);
// uncomment the line below and onaudioprocess will start
//scr.connect(context.destination);
scr.onaudioprocess = function(){
console.log('test');
};
只需将
脚本处理器的输出连接到上下文。目的地
或虚拟的增益
节点和音频进程
将启动。尝试这样做。我想这对你有用
var source = context.createMediaStreamSource(stream);
var proc = context.createScriptProcessor(2048, 2, 2);
source.connect(proc);
proc.connect(context.destination);
proc.onaudioprocess = function(event)
{
var audio_data = event.inputBuffer.getChannelData(0)|| new Float32Array(2048);
console.log(audio_data);
iosocket.emit('audiomsg',audio_data);
}
你不能说你是否得到了getUserMedia回调,音频输入是否在别处工作。。你有什么地方需要调试吗?如果我添加source.connect(context.destination)
我可以听到我的音频循环,这样输入就正常了。你真的应该在JSFIDLE上发布一个简化的测试用例。我怀疑还有更多的事情发生。您将getUserMedia
的返回值(顺便说一句,该值未定义)分配给一个变量的事实对我来说似乎是一个危险信号。如果没有完整的代码示例,任何人都无法提供太多帮助。getUserMedia在成功函数之后接受一个错误函数,您应该在其中添加一个。要让getUserMedia正常工作,您需要为页面提供服务(而不仅仅是从本地)。您不需要在firefox中连接目的地(事实上,如果您这样做,将导致问题)。
var source = context.createMediaStreamSource(stream);
var proc = context.createScriptProcessor(2048, 2, 2);
source.connect(proc);
proc.connect(context.destination);
proc.onaudioprocess = function(event)
{
var audio_data = event.inputBuffer.getChannelData(0)|| new Float32Array(2048);
console.log(audio_data);
iosocket.emit('audiomsg',audio_data);
}