Ликод Эризо.Качество кадра потокового видео


Я использую Licode это коммуникационная платформа WebRTC с открытым исходным кодом. Я хочу уменьшить качество видео (размер битов видеокадра).

Поток выглядит так:

var stream = Erizo.Stream({ 
     audio:true,
     video:video_constraints,
     data: true, 
     attributes: {name:'myStream', type:'public'}
});

Можно получить видеокадр следующим образом:

var bitmap;
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');

canvas.id = "testCanvas";
document.body.appendChild(canvas);

setInterval(function() {
  bitmap = stream.getVideoFrame();
  canvas.width = bitmap.width;
  canvas.height = bitmap.height;
  context.putImageData(bitmap, 0, 0);
}, 100);

И я посылаю холст (один видеокадр):

 var bitmap;
  var canvas = document.createElement('canvas');
  var context = canvas.getContext('2d');

  setInterval(function() {
        canvas.width = video.clientWidth;
        canvas.height = video.clientHeight;
        context.drawImage(video, 0, 0, canvas.width, canvas.height);
        mydata = canvas.toDataURL("image/jpeg");
        erizoStream.sendData({ base64:mydata});
    }, 200);

erizoStream.sendData({ base64:mydata}); бесполезен для скоростных характеристик.

Он отправляет данные быстро, но при их получении возникают проблемы с анимация:

stream.addEventListener("stream-data", function(evt){
           //alert('Received data '+ evt.msg['base64']);
           if(evt.msg['base64']){
            renderBase64(evt.msg['base64']);
            }

        });

Заданное setInterval Время 200 мс делает отправку только быстрой. Но это происходит быстрее, когда я открываю страницу (вкладку) в новом окне.

Я хочу уменьшить размер видеокадра (бит) без использования erizoStream.sendData();. Только из самого видео или его использования с решением проблемы быстродействия.

1 5

1 ответ:

Когда издательский зал..

        room.publish(localStream, {maxVideoBW: 300});

Можно добавить maxVideoBW, он устанавливает максимальную пропускную способность видео до 300 кбит / с. Это уменьшает значение качества, чтобы стать должным к значению полосы пропускания.

И не забудьте изменить maxFrameRate:

var video_constraints = {mandatory: {
       maxFrameRate:30
      },
      optional: [ ]
  };

В качестве примера для его вычисления:

Если у вас 30 кадров в секунду и пропускная способность 300 кбит / с:

Тогда вы используете загрузку 300/30 = 10 кб/сек.

Путем уменьшения BW до 35 вы можете решить быстродействие выпуск .

Контроль качества