我通过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
答案 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 /限制(在这种情况下我们只能等待修复)。但如果目的是(取消)静音,这应该有用(它也适用于视频轨道)。