使用rtc的Firefox createMediaStreamDestination错误?

时间:2015-04-09 22:39:18

标签: javascript firefox audio html5-audio

我通过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

2 个答案:

答案 0 :(得分:3)

好的,谢谢@Ken Fyrstenberg,我刚尝试了Firefox Nighly build。 在Nighly everythink工作正常(如在Chrome中)。数据类型是:

stream //type: LocalMediaStream    
dest.steam //type: MediaStream
和以前一样,但是我可以听到对手并能够将麦克风静音。

所以我只需等待释放:P

答案 1 :(得分:2)

要使音频静音,您可以执行以下操作来启用/禁用音轨:

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

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