WebRTC - 如何静音本地音频输出

Pau*_*ire 15 javascript webrtc

我试图仅在WebRTC中静音本地音频,更具体地说是在getUserMedia()之后和任何服务器连接之前.我发现的任何选项都没有; Muaz Khan的这个失败了:

var audioTracks = localMediaStream.getAudioTracks();
// if MediaStream has reference to microphone
if (audioTracks[0]) {
    audioTracks[0].enabled = false;
}
Run Code Online (Sandbox Code Playgroud)

资源

此技术在此处也称为"工作",但在Chrome版本39.0.2171.95(64位)(Ubuntu 14.04)上失败.

据说通过使用音量增益工作的其他方法:

window.AudioContext = window.AudioContext || window.webkitAudioContext;
var audioContext = new AudioContext();
var source = audioContext.createMediaStreamSource(clientStream);
var volume = audioContext.createGain();
source.connect(volume);
volume.connect(audioContext.destination);
volume.gain.value = 0;  //turn off the speakers
Run Code Online (Sandbox Code Playgroud)

tl; dr我不想听到扬声器上麦克风的输入,但我确实希望看到我的视频图像.

解决方法

Benjamin Trent建议这种解决方法,它通过在视频标签上设置静音属性来静音音频,如下所示:

document.getElementById("html5vid").muted = true;
Run Code Online (Sandbox Code Playgroud)

也有类似的问题,但它的视频,所以不一样

xdu*_*ine 11

添加这个作为答案,因为它是事实上的正确答案:

您所说的解决方法是许多主要WebRTC视频平台使用的内容:

navigator.mediaDevices.getUserMedia({ video: true, audio: true })
  .then(stream => {
    const vid = document.getElementById('html5vid');
    vid.autoplay = true;
    vid.muted = true;
    vid.srcObject = stream;
  });
Run Code Online (Sandbox Code Playgroud)