2014-06-21 12 views
5

나는 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();을 사용하지 않고 비디오 프레임 (비트 크기)을 줄이려고합니다. 비디오 자체에서만 또는 속도 성능 문제를 해결하는 데 사용하십시오.

+0

[JPEG의 URL에서의 품질 변화 (http://stackoverflow.com/questions/14383557/setting-canvas-todataurl-jpg-quality) 생성 밖으로? getUserMedia 호출에 대한 현재 비디오 제약 조건은 무엇입니까? –

답변

4

방 출판 .. maxVideoBW을 추가 할 수있다

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

, 그것은 300 kbps의 최대의 비디오 대역폭을 설정한다. 이렇게하면 대역폭 값에 맞게 품질 값이 낮아집니다.

그리고 maxFrameRate 변경하는 것을 잊지 마세요 : 당신이 그런

:

초당 30 프레임이있는 경우, 대역폭 300 kbps의 : 그것을 계산하는 예를 들어

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

을 300/30 = 10KB/초 업로드를 사용 중입니다.

BW를 35로 줄이면 속도 성능 문제을 해결할 수 있습니다. 그래서

Quality control

+1

위대한 대답 ........... – Muath

+1

나는 그것이 당신을 위해 일하기를 바란다 –

+0

이것은 느림을 해결했다 – Muath