Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Управление камерой, микрофоном и устройствами вывода звука

Выбор и переключение устройств ввода и вывода

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

...

Code Block
languagejs
themeRDark
    $("#switchCamBtn").click(function() {
       if (currentCall) {
           currentCall.switchCam().then(function(id) {
               $('#cameraList option:selected').prop('selected', false);
               $("#cameraList option[value='"+ id +"']").prop('selected', true);
           }).catch(function(e) {
               console.log("Error " + e);
           });
       }
    }).prop('disabled', true);

Отображение WebRTC-статистики

Во время SIP-звонка клиентское приложение получает WebRTC-статистику в соответствии со стандартом. Эта статистика может быть отображена в браузере, например:

Image Removed

Отметим, что в браузере Safari отображается только статистика аудио.

1. Отображение статистики во время звонка

call.getStats() code:

...

languagejs
themeRDark

...

Установка размера видео

При создании звонка, может быть указан размер исходящего видео

Image Added

code:

Code Block
languagejs
themeRDark
function getConstraints() {
    var constraints = {
        ...
    if  (stats && stats.outboundStream) video: {
            deviceId:    if (stats.outboundStream.videoStats) {{exact: $('#cameraList').find(":selected").val()},
                    width: parseInt($('#videoStatBytesSent#sendWidth').text(stats.outboundStream.videoStats.bytesSent);val()),
                    height: parseInt($('#videoStatPacketsSent#sendHeight').text(stats.outboundStream.videoStats.packetsSent);val())
        }
    };
       if $('#videoStatFramesEncoded').text(stats.outboundStream.videoStats.framesEncoded);
       Browser.isSafariWebRTC() && Browser.isiOS() && Flashphoner.getMediaProviders()[0] === "WebRTC") {
        constraints.video.width }= else {
   min: parseInt($('#sendWidth').val()), max: 640};
        constraints.video.height =        ...
            {min: parseInt($('#sendHeight').val()), max: 480};
    }

                if (stats.outboundStream.audioStats) {
return constraints;
}

Отображение WebRTC-статистики

Во время SIP-звонка клиентское приложение получает WebRTC-статистику в соответствии со стандартом. Эта статистика может быть отображена в браузере, например:

Image Added

Отметим, что в браузере Safari отображается только статистика аудио.

1. Отображение статистики во время звонка

call.getStats() code:

Code Block
languagejs
themeRDark
        currentCall.getStats(function (stats) {
            if $('#audioStatBytesSent').text((stats && stats.outboundStream.audioStats.bytesSent);) {
                   if $('#audioStatPacketsSent').text(stats.outboundStream.audioStats.packetsSent);
videoStats) {
                  } else { $('#videoStatBytesSent').text(stats.outboundStream.videoStats.bytesSent);
                    $('#videoStatPacketsSent').text(stats.outboundStream.videoStats.packetsSent);
                }
            }
$('#videoStatFramesEncoded').text(stats.outboundStream.videoStats.framesEncoded);
                } else {
               });

Известные проблемы

1. Невозможно совершить SIP-звонок при некорректно заданных параметрах звонка SIP Login, SIP Authentification name

Симптомы: звонок не совершается, зависает в статусе PENDING

Решение: согласно стандарту, SIP Login и SIP Authentification name не должны содержать неэкранированных пробелов, спецсимволов и не должны заключаться в угловые скобки '<>'.

Например, такое заполнение полей не соответствует стандарту

Code Block
languagejs
themeRDark
sipLogin='Ralf C12441@host.com'
sipAuthenticationName='Ralf C'
sipPassword='demo'
sipVisibleName='null'

а такое соответствует

Code Block
languagejs
themeRDark
sipLogin='Ralf_C12441'
sipAuthenticationName='Ralf_C'
sipPassword='demo'
sipVisibleName='Ralf C'

2. Проблемы со звуком при звонках из браузера Edge.

Симптомы:

а) исходящий звук периодически то резко приглушается, то идет нормально.

б) входящий звук слышен, только если говорить в микрофон.

Решение:

Отключить для браузера Edge использование кодеков SILK и G.722 в SIP звонках.

3. Не работает переключение микрофона в браузере Safari.

Симптомы: не переключается микрофон при помощи метода switchMic() WCS WebSDK.

Решение: использовать другой браузер, поскольку Safari всегда использует микрофон sound input, выбранный в настройках звука системы sound menu (для входа необходимо зажать клавишу Option (Alt) и щелкнуть по иконке звука в меню). После выбора другого микрофона в sound menu требуется перезагрузка Mac.

...

     ...
                }

                if (stats.outboundStream.audioStats) {
                    $('#audioStatBytesSent').text(stats.outboundStream.audioStats.bytesSent);
                    $('#audioStatPacketsSent').text(stats.outboundStream.audioStats.packetsSent);
                } else {
                    ...
                }
            }
        });

Известные проблемы

1. Невозможно совершить SIP-звонок при некорректно заданных параметрах звонка SIP Login, SIP Authentification name

Симптомы: звонок не совершается, зависает в статусе PENDING

Решение: согласно стандарту, SIP Login и SIP Authentification name не должны содержать неэкранированных пробелов, спецсимволов и не должны заключаться в угловые скобки '<>'.

Например, такое заполнение полей не соответствует стандарту

Code Block
languagejs
themeRDark
sipLogin='Ralf C12441@host.com'
sipAuthenticationName='Ralf C'
sipPassword='demo'
sipVisibleName='null'

а такое соответствует

Code Block
languagejs
themeRDark
sipLogin='Ralf_C12441'
sipAuthenticationName='Ralf_C'
sipPassword='demo'
sipVisibleName='Ralf C'

2. Проблемы со звуком при звонках из браузера Edge.

Симптомы:

а) исходящий звук периодически то резко приглушается, то идет нормально.

б) входящий звук слышен, только если говорить в микрофон.

Решение:

Отключить для браузера Edge использование кодеков SILK и G.722 в SIP звонках.

3. Не работает переключение микрофона в браузере Safari.

Симптомы: не переключается микрофон при помощи метода switchMic() WCS WebSDK.

Решение: использовать другой браузер, поскольку Safari всегда использует микрофон sound input, выбранный в настройках звука системы sound menu (для входа необходимо зажать клавишу Option (Alt) и щелкнуть по иконке звука в меню). После выбора другого микрофона в sound menu требуется перезагрузка Mac.

Если не работает микрофон Logitech USB camera (когда выбран в sound input), может помочь изменение format / sample rate в Audio MIDI Setup и перезагрузка.


function getConstraints() {

var constraints = {

audio: {deviceId: {exact: $('#micList').find(":selected").val()}},

video: {

deviceId: {exact: $('#cameraList').find(":selected").val()},

width: parseInt($('#sendWidth').val()),

height: parseInt($('#sendHeight').val())

}

};

if (Browser.isSafariWebRTC() && Browser.isiOS() && Flashphoner.getMediaProviders()[0] === "WebRTC") {

constraints.video.width = {min: parseInt($('#sendWidth').val()), max: 640};

constraints.video.height = {min: parseInt($('#sendHeight').val()), max: 480};

}

return constraints;

}