如何在 webrtc 中将麦克风静音/取消静音
Posted
技术标签:
【中文标题】如何在 webrtc 中将麦克风静音/取消静音【英文标题】:How to mute/unmute mic in webrtc 【发布时间】:2016-06-01 10:33:29 【问题描述】:我从这里读到如何在 webrtc:WebRTC Tips & Tricks 中为本地流静音/取消静音麦克风
当我启动我的本地流麦克风时,默认情况下是启用的,所以当我设置 audioTracks[0].enabled=false 时,它会在我的本地流中静音一个麦克风,但是当我将它设置回 true 时,它启用取消静音。这是我的本地流静音/取消静音代码:
getLocalStream(function (stream,enable)
if (stream)
for (var i = 0; i < stream.getTracks().length; i++)
var track = stream.getAudioTracks()[0];
if (track)
track.enabled = enable;
//track.stop();
);
有人可以建议我如何在本地流中取消麦克风静音。
【问题讨论】:
【参考方案1】:我假设您的方法getLocalStream
实际上是调用navigator.getUserMedia
。在这种情况下,当您这样做时,您将获得另一个流,而不是原始流。使用你应该做的原始流
mediaStream.getAudioTracks()[0].enabled = true; // or false to mute it.
您也可以查看https://***.com/a/35363284/1210071
【讨论】:
【参考方案2】:有 2 个属性 enabled
和 muted
。
enabled
是用来设置的,muted
在远端(对方)是只读的(我试过了,设置muted
不行,基本上不能改值)
stream.getAudioTracks()[0].enabled = true;
//远程会得到muted
的变化
【讨论】:
w3c.github.io/mediacapture-main/#track-muted -- 静音不是你能控制的 -- 或者不应该能控制。 @PhilippHancke 是的,你是对的,我试过muted
它是只读的,我也更新了我的答案。非常感谢您让我知道。【参考方案3】:
啊,有一个好方法可以做到这一点:
mediaStream.getVideoTracks()[0].enabled = !(mediaStream.getVideoTracks()[0].enabled);
【讨论】:
【参考方案4】:您应该阅读并设置“启用”值。 “启用”值用于“静音”。 “静音”值是一个只读值,与流当前是否无法播放有关。
MediaStreamTrack 接口上的 enabled 属性是一个布尔值,如果允许轨道呈现源流,则为 true,否则为 false。这可用于有意使轨道静音。启用后,轨道的数据会从源输出到目标;否则,输出空帧。
在音频的情况下,禁用的轨道会生成静音帧(即,每个样本的值为 0 的帧)。对于视频轨道,每一帧都完全用黑色像素填充。
enabled 的值,本质上代表了典型用户对轨道静音状态的看法,而 muted 属性表示轨道暂时无法输出数据的状态,例如帧在运输途中丢失了。
https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/enabled【讨论】:
【参考方案5】:第 1 步)调用 jquery.min.js
第 2 步)使用下面的代码,
A) 静音
$("video").prop('muted','true');
B) 取消静音
$("video").prop('muted','');
像 youtube 一样的单个图标静音和取消静音
function enablemute(thisimag)
if($(thisimag).attr('src')=='images/mute.png')
$("video").prop('muted','');
$(thisimag).prop('src','images/unmute.png');
else
//alert('her');
$("video").prop('muted','true');
$(thisimag).prop('src','images/mute.png');
上面的函数 enablemute 应该从 onclick 调用
【讨论】:
他正在谈论在他的本地流上静音音频/视频,以便远程对等方可以在音频或视频上接收我 你能解释更多吗 所以,我们正在通过线路发送视频/音频流,静音音频或视频,您只需在您的浏览器上获得的媒体对象上执行此操作......并且您的 webrtc 对等连接对象已经接收音频或视频静音流发送到其他对等方 你有没有测试过远程端发生的事情。 是的,我已经测试过了,但是当这个操作不正确时......远程端什么都不会静音或取消静音.....当我们静音音频流时,这意味着远程端没有接收到音频流根本......而且它不是遥控器可以接收并选择不播放它不,这将是一般带宽和资源的不良使用以上是关于如何在 webrtc 中将麦克风静音/取消静音的主要内容,如果未能解决你的问题,请参考以下文章
Swift AVAudioEngine - 如何使本地麦克风静音