Ликод Эризо.Качество кадра потокового видео
Я использую 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 ответ:
Когда издательский зал..
room.publish(localStream, {maxVideoBW: 300});
Можно добавить
maxVideoBW
, он устанавливает максимальную пропускную способность видео до 300 кбит / с. Это уменьшает значение качества, чтобы стать должным к значению полосы пропускания.И не забудьте изменить
maxFrameRate
:var video_constraints = {mandatory: { maxFrameRate:30 }, optional: [ ] };
В качестве примера для его вычисления:
Если у вас 30 кадров в секунду и пропускная способность 300 кбит / с:
Тогда вы используете загрузку 300/30 = 10 кб/сек.
Путем уменьшения BW до 35 вы можете решить быстродействие выпуск .
Контроль качества