Как включить / выключить микрофон в webrtc

Я прочитал отсюда, как я могу отключить / включить микрофон для локального потока в webrtc: Советы и рекомендации по WebRTC

Когда я запускаю микрофон локального потока, он включен в это время по умолчанию, поэтому, когда я установил 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();
            }
        }
    });

Может ли кто-нибудь подсказать мне, как я могу снова включить микрофон в локальном потоке.


person Community    schedule 19.02.2016    source источник


Ответы (5)


Я предполагаю, что ваш метод getLocalStream действительно вызывает navigator.getUserMedia. В этом случае при этом вы получите другой поток, а не исходный. Используя исходный поток, вы должны сделать

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

В качестве альтернативы вы можете проверить https://stackoverflow.com/a/35363284/1210071

person Adrian Ber    schedule 20.02.2016

Есть 2 свойства enabled и muted. enabled предназначен для настройки, а muted доступен только для чтения на удаленной стороне (другой человек) (я пробовал, настройка muted не работает, в основном, значение не может быть изменено)

stream.getAudioTracks()[0].enabled = true; // удаленный получит muted сдачу

person Xin    schedule 29.04.2018
comment
w3c.github.io/mediacapture-main/#track-muted - - отключение звука - это не то, что вы можете контролировать - или не должно быть в состоянии контролировать. - person Philipp Hancke; 29.04.2018
comment
@PhilippHancke Да, вы правы, я пробовал muted, он доступен только для чтения, и я также обновил свой ответ. Большое спасибо за то, что сообщили мне. - person Xin; 30.04.2018

Аааа, есть хороший способ сделать это:

mediaStream.getVideoTracks()[0].enabled = !(mediaStream.getVideoTracks()[0].enabled);
person Community    schedule 19.02.2016

Вы должны прочитать и установить значение «включено». Значение «включено» предназначено для отключения звука. Значение «приглушено» - это значение только для чтения, указывающее, не может ли в данный момент воспроизводиться поток.

Свойство enabled в интерфейсе MediaStreamTrack является логическим значением, которое имеет значение true, если дорожке разрешено отображать исходный поток, или false, если это не так. Это можно использовать для преднамеренного отключения звука дорожки. Если этот параметр включен, данные трека выводятся из источника в пункт назначения; в противном случае выводятся пустые кадры.

В случае звука отключенная дорожка генерирует кадры тишины (то есть кадры, в которых значение каждого семпла равно 0). Для видеодорожек каждый кадр полностью заполнен черными пикселями.

Значение enabled, по сути, представляет то, что обычный пользователь мог бы рассматривать как состояние отключения звука для дорожки, тогда как свойство приглушения указывает состояние, в котором дорожка временно не может выводить данные, например сценарий, в котором были потеряны кадры. в пути.

person RumOldField    schedule 01.04.2020

Очень простой способ просто вызвать jquery в заголовке

и используйте код ниже,

  1. Отключить звук

    $ (видео) .prop ('без звука', 'правда');

  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');
  } 
} 
person MAYUR SANCHETI    schedule 31.10.2020