如何在webrtc中静音/取消静音麦克风

时间:2016-02-19 18:26:51

标签: html5-video webrtc html5-audio simplewebrtc

我已经从这里读到了如何在webrtc中为本地流静音/取消静音麦克风:WebRTC Tips & Tricks

当我启动我的本地流麦克风时,默认情况下启用,所以当我设置audioTracks [0] .enabled = false时,它会在我的本地流中静音麦克风但是当我将其设置为真时它会启用取消静音。以下是我对本地流的代码静音/取消静音:

 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();
            }
        }
    });

有人可以建议我如何在本地流中取消麦克风。

5 个答案:

答案 0 :(得分:7)

我认为您的方法getLocalStream实际上正在调用navigator.getUserMedia。在这种情况下,当您执行此操作时,您将获得另一个流,而不是原始流。使用原始流你应该

mediaStream.getAudioTracks()[0].enabled = true; // or false to mute it.

或者,您可以查看https://stackoverflow.com/a/35363284/1210071

答案 1 :(得分:2)

啊,有一个很好的方法可以做到这一点:

mediaStream.getVideoTracks()[0].enabled = !(mediaStream.getVideoTracks()[0].enabled);

答案 2 :(得分:1)

有2个属性enabledmutedenabled用于设置,muted在远程端(另一个人)是只读的(我试过,设置muted不起作用,基本上,值无法更改)

stream.getAudioTracks()[0].enabled = true; //远程用户将获得muted更改

答案 3 :(得分:1)

您应该阅读并设置“启用”值。 “启用”值用于“静音”。 “静音”值是一个只读值,与流当前是否无法播放有关。

MediaStreamTrack接口上的enabled属性是一个布尔值,如果允许轨道渲染源流,则为true,否则为false。这可用于故意使轨道静音。启用后,曲目的数据将从源输出到目的地;否则,将输出空白帧。

对于音频,禁用的轨道会生成无声帧(即,每个样本的值为0的帧)。对于视频轨道,每一帧都完全用黑色像素填充。

enabled的值本质上表示典型用户会考虑轨道的静音状态,而静音属性则指示轨道暂时无法输出数据的状态,例如帧的情况在运输途中丢失了。

答案 4 :(得分:0)

非常简单的方法是在标头中调用jquery

&使用以下代码,

  1. 静音

    $(“ video”)。prop('muted','true');

  2. 取消静音

    $(“视频”).prop('静音','');

万一功能适用于单个图像的静音和取消静音

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');
  } 
}