Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ScriptProcessorNode实时处理getUserMedia音频_Javascript_Html_Coffeescript_Web Audio Api_Getusermedia - Fatal编程技术网

Javascript 使用ScriptProcessorNode实时处理getUserMedia音频

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

我正在尝试获取一些关于麦克风数据的实时数据。因此,我将ScriptProcessorNode连接到我的实时音频输出,如下所示(coffeescript):


但是,从未调用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); 
        }