WebAudio:如何停用麦克风

tre*_*eno 8 javascript web-audio-api

WebAudio 允许通过 访问麦克风navigator.getUserMedia()。调用此方法时,浏览器会显示一个重新编码标志(Chrome 和 Edge 中的红点),表明麦克风正在使用中。这工作正常,但我希望能够停用麦克风,然后这个红点也应该消失。我以为打电话webcontext.close()也会停用红点标志,但事实并非如此,至少在 Chrome、Firefox 和 Edge 中是这样。

如何停用麦克风以使浏览器录音标志也消失?

tre*_*eno 13

我自己找到了解决方案,以防有人感兴趣:

想象一下我们像这样激活麦克风:

navigator.mediaDevices.getUserMedia(constraints).then(stream => {
    this._userMediaInputStream = stream;
    ...            
}).catch(errorFunction);
Run Code Online (Sandbox Code Playgroud)

然后我们可以使用以下代码来停用麦克风。这将使浏览器的录制符号也消失:

this._userMediaInputStream.getAudioTracks().forEach(track => {
    track.stop();
});
Run Code Online (Sandbox Code Playgroud)

  • 要停止所有轨道,包括来自网络摄像头的视频流,请使用“getTracks”而不是“getAudioTracks” (2认同)