Javascript Twilio视频会议应用程序-音频处理

Javascript Twilio视频会议应用程序-音频处理,javascript,webrtc,twilio,web-audio-api,actioncable,Javascript,Webrtc,Twilio,Web Audio Api,Actioncable,我们正在尝试在后端使用javascript SDK和rails创建一个视频会议应用程序。我们满足的要求是在发言参与者之间自动切换。我们一次只能处理一个传入的音频流 在此附上代码 partcipant.media.mediaStreams.forEach(function(mediaStream) { var audioCtx = new(window.AudioContext)() || new(window.webkitAudioContext)(); var source =

我们正在尝试在后端使用javascript SDK和rails创建一个视频会议应用程序。我们满足的要求是在发言参与者之间自动切换。我们一次只能处理一个传入的音频流

在此附上代码

partcipant.media.mediaStreams.forEach(function(mediaStream) {
    var audioCtx = new(window.AudioContext)() || new(window.webkitAudioContext)();
    var source = audioCtx.createMediaStreamSource(mediaStream);
    var script = audioCtx.createScriptProcessor(2048, 1, 1);
    source.connect(script);
    script.connect(audioCtx.destination);
    script.onaudioprocess = function(event) {
      var input = event.inputBuffer.getChannelData(0);
      var i;
      var sum = 0.0;
      for (i = 0; i < input.length; ++i) {
        sum += input[i] * input[i];
      }
      var instant = Math.sqrt(sum / input.length);
      if (instant > 0.2) {
         console.log(participant.name + ' is speaking!');
      }
    }.bind(participant);
  });
participant.media.mediaStreams.forEach(函数(mediaStream)){
var audioCtx=new(window.AudioContext)(| | new(window.webkitadiocontext)();
var source=audioCtx.createMediaStreamSource(mediaStream);
var script=audioCtx.createScriptProcessor(2048,1,1);
source.connect(脚本);
script.connect(audioCtx.destination);
script.onaudioprocess=函数(事件){
var input=event.inputBuffer.getChannelData(0);
var i;
var总和=0.0;
对于(i=0;i0.2){
console.log(participant.name+'正在讲话!');
}
}.约束(参与者);
});
我们在两种逻辑中使用了上述代码:

  • 本地处理音频并使用action cable跨通道发送
  • 迭代参与者并处理音频流
  • 两者都起作用,但应用程序正在崩溃

    如果我在任何时候都错了,请更正。

    你说的“应用程序崩溃”是什么意思?到底发生了什么?控制台中是否有错误?你是不是把整个浏览器都关掉了?你说的“应用程序崩溃”是什么意思?到底发生了什么?控制台中是否有错误?你是不是把整个浏览器都关掉了?