WebRTC - 如何静音本地音频输出
Posted
技术标签:
【中文标题】WebRTC - 如何静音本地音频输出【英文标题】:WebRTC - How to mute local audio output 【发布时间】:2015-03-10 14:21:29 【问题描述】:我正在尝试仅在 WebRTC 中静音本地音频播放,更具体地说是在 getUserMedia() 之后和建立任何服务器连接之前。我找到的所有选项都不起作用;这个来自 Muaz Khan 的失败:
var audioTracks = localMediaStream.getAudioTracks();
// if MediaStream has reference to microphone
if (audioTracks[0])
audioTracks[0].enabled = false;
source
这种技术也被 described here 视为“工作”,但在 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
tl;dr 我不想在扬声器上听到麦克风的输入,但我确实想看到我的视频图像。
解决方法
Benjamin Trent 建议了此解决方法,它通过在视频标签上设置 muted 属性来使音频静音,如下所示:
document.getElementById("html5vid").muted = true;
Also similar question, but its for video, so not the same
【问题讨论】:
为什么不将html视频标签设置为静音? 在我的情况下这并不理想,但标签是否支持音频“仅”静音? 静音视频 html 标签会静音与视频相关的音频。视频将继续播放,流中的音频和视频轨道仍然可以访问并能够发送到另一个对等点。不过,听起来您在 ubuntu 上的那个 Chrome 版本中发现了一个确实需要解决的错误。 【参考方案1】:添加这个作为答案,因为它是事实上的正确答案:
您所说的解决方法是许多主要 WebRTC 视频平台所使用的:
navigator.mediaDevices.getUserMedia( video: true, audio: true )
.then(stream =>
const vid = document.getElementById('html5vid');
vid.autoplay = true;
vid.muted = true;
vid.srcObject = stream;
);
【讨论】:
只有录音怎么样,比如 video: false, audio: true ? @headkit 根本不将您自己的音频附加到 DOM。要向用户指示正在捕获音频,您可以显示波形或说话指示器。 嗨@xdumaine,我所做的是,我在javascript上实例化了new Audio()
。在流式传输正在播放的数据时是否仍然可以静音?以上是关于WebRTC - 如何静音本地音频输出的主要内容,如果未能解决你的问题,请参考以下文章
在 WebRTC 房间中订阅/动态静音许多音频流的理想方法?
如何在 ionic 平台的 APIRTC 上静音和取消静音视频/音频?