【问题标题】:How to mute/unmute mic in webrtc如何在 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();
            }
        }
    });

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

【问题讨论】:

    标签: html5-video webrtc html5-audio simplewebrtc


    【解决方案1】:

    我假设您的方法getLocalStream 实际上是调用navigator.getUserMedia。在这种情况下,当您这样做时,您将获得另一个流,而不是原始流。使用你应该做的原始流

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

    您也可以查看https://stackoverflow.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 属性表示轨道暂时无法输出数据的状态,例如帧在运输途中丢失了。

        【讨论】:

          【解决方案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 对等连接对象已经接收音频或视频静音流发送到其他对等方
          • 你有没有测试过远程端发生的事情。
          • 是的,我已经测试过了,但是当这个操作不正确时......远程端什么都不会静音或取消静音.....当我们静音音频流时,这意味着远程端没有接收到音频流根本......而且它不是遥控器可以接收并选择不播放它不,这将是一般带宽和资源的不良使用
          猜你喜欢
          • 2021-08-26
          • 1970-01-01
          • 2017-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-27
          • 1970-01-01
          相关资源
          最近更新 更多