使用 rtc 的 Firefox createMediaStreamDestination 错误?

Firefox createMediaStreamDestination bug using rtc?

我通过 rtc 流式传输音频并希望将音频静音和取消静音。

这有效...但没有增益控制:

function(stream) { /* getUserMedia stream */
      console.log("Access granted to audio/video");
      peer_connection.addStream(stream);
}

这适用于 chrome 但不适用于 Firefox(具有增益控制)

function(stream) { /* getUserMedia stream */
  console.log("Access granted to audio/video");
  var microphone = context.createMediaStreamSource(stream);
  gainNode = context.createGain();
  var dest = context.createMediaStreamDestination();
  microphone.connect(gainNode);
  gainNode.connect(dest);

  local_media_stream = dest.stream;
  peer_connection.addStream(local_media_stream);
}

我没有收到任何错误消息,也没有听到任何声音。 当我将 gainNode 发送到 context.destination 时,我可以听到自己的声音。

我认为 "context.createMediaStreamSource(stream)" 有任何问题。 谁能告诉我为什么?以及如何解决这个问题。


编辑:所以我检查了流并且:

stream //type: LocalMediaStream    
dest.steam //type: MediaStream

在 Firefox 中!在 chrome 中都是 MediaStreams

要使音频静音,您可以通过以下操作enable/disable 轨道本身:

stream.getAudioTracks()[0].enabled = false;  // mutes

这不会解决增益节点的问题,目前很可能是 Firefox 中的 bug/limitation(在这种情况下,我们只能等待修复)。但是,如果目的是(取消)静音,这应该可行(它也适用于视频轨道)。

好的,感谢@Ken Fyrstenberg 我刚刚尝试了 Firefox Nighly 构建。 在 Nighly 上,everythink 工作正常(如 Chrome)。数据类型为:

stream //type: LocalMediaStream    
dest.steam //type: MediaStream

和以前一样,但我可以听到对方的声音,并且可以将麦克风静音。

所以我只需要等待发布:P