Перейти к содержанию

Изменение параметров публикации на лету

Начиная со сборки WebSDK 2.0.258 параметры публикации потока могут быть изменены на лету, без остановки и посторной публикации. Такая возможность доступна в браузерах на основе Chromium и Safari.

Изменение разрешения потока

Разрешение публикации потока может быть изменено при помощи метода Stream.updateVideoResolution

code

function onResolutionClick(stream) {
    stream.updateVideoResolution({
        width: parseInt($('#sendWidth').val()),
        height: parseInt($('#sendHeight').val())
    }).then(function(constraints) {
        console.log("Publishing video constraints changed to " + JSON.stringify(constraints));
    }).catch(function(e) {
        console.error("Error " + e);
    });
}

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

Warning

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

Изменение параметров кодирования потока

Параметры кодирования потока могут быть изменены при помощи метода Stream.updateVideoSettings

  • Максимальный битрейт в кбит/с
    code

     function onBitrateClick(stream) {
         stream.updateVideoSettings({
             maxBitrate: parseInt($('#sendVideoMaxBitrate').val())
         }).then(function(encodings) {
             console.log("Publishing video encoder parameters changed to " + JSON.stringify(encodings));
         }).catch(function(e) {
             console.error("Error " + e);
         });
     }
    

  • Максимальная частота кадров в секунду
    code

     function onFpsClick(stream) {
         stream.updateVideoSettings({
             frameRate: parseInt($('#fps').val())
         }).then(function(encodings) {
             console.log("Publishing video encoder parameters changed to " + JSON.stringify(encodings));
         }).catch(function(e) {
             console.error("Error " + e);
         });
     }
    

  • Фактор масштабирования кадра

     stream.updateVideoSettings({
         scaleResolutionDownBy: 2
     }).then(function(encodings) {
         console.log("Publishing video encoder parameters changed to " + JSON.stringify(encodings));
     }).catch(function(e) {
         console.error("Error " + e);
     });
    

В этом случае, параметры кодирования видеодорожки меняются без ее пересоздания. Они могут быть изменены за один вызов метода

stream.updateVideoSettings({
    maxBitrate: 1000,
    frameRate: 24,
    scaleResolutionDownBy: 1
});

Warning

Таким образом может быть задан только битрейт кодирования. Ограничение пропускной способности канала имеет приоритет над кодированием. Например, если канала ограничен до 1000 кбит/с, а битрейт кодирования установлен в 1500 кбит/с, видео будет опубликовано с битрейтом 1000 кбит/с