나는 Licode을 사용합니다. 이것은 오픈 소스 WebRTC 커뮤니케이션 플랫폼입니다. 비디오 화질 (비디오 프레임 비트 크기)을 줄이고 싶습니다.Licode Erizo.Stream 비디오 프레임 품질
스트림은 다음과 같습니다
var stream = Erizo.Stream({
audio:true,
video:video_constraints,
data: true,
attributes: {name:'myStream', type:'public'}
});
이 같은 VideoFrame를 얻을 수 있습니다 :
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']);
}
});
세트 200 밀리 초는 빨리 간다 전송한다 setInterval
시간. 그러나 이것은 새 창에서 페이지 (탭)를 열면 더 빠릅니다.
erizoStream.sendData();
을 사용하지 않고 비디오 프레임 (비트 크기)을 줄이려고합니다. 비디오 자체에서만 또는 속도 성능 문제를 해결하는 데 사용하십시오.
[JPEG의 URL에서의 품질 변화 (http://stackoverflow.com/questions/14383557/setting-canvas-todataurl-jpg-quality) 생성 밖으로? getUserMedia 호출에 대한 현재 비디오 제약 조건은 무엇입니까? –