2014-06-21 26 views
5

Licode kullanıyorum, Open Source WebRTC Communications Platform yazılımıdır. Video kalitesini (Video-Frame bit boyutu) azaltmak istiyorum.Licode Erizo.Stream Video Frame kalitesi

akışı aşağıdaki gibidir:

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

Böyle VideoFrame almak mümkündür:

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); 

Ve (bir video Çerçeve) tuval gönderin:

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});, hız performansı için işe yaramıyor.

Veri hızlı gönderir ancak alırken bu animasyon ile sorunları vardır:

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

     }); 

seti 200 ms sadece hızlı gider gönderme yapar setInterval kez. Ancak bu, sayfayı yeni pencerede açtığımda (sekme) daha hızlı oluyor.

Video çerçevesini (bit boyutu) erizoStream.sendData(); kullanmadan azaltmak istiyorum. Sadece videonun kendisinden veya hız performans sorununu çözerek bunu kullanıyor.

+0

, [Jpeg url'deki kalitesini değiştirerek] (http://stackoverflow.com/questions/14383557/setting-canvas-todataurl-jpg-quality) oluşturma çıktı? GetUserMedia çağrısı için mevcut video kısıtlamalarınız nelerdir? –

cevap

4

oda yayınlayarak .. O maxVideoBW eklemek mümkündür

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

, 300 kbps maksimum görüntü bant genişliğini ayarlar. Bu, bant genişliği değerine uygun hale gelmesi için kalite değerini azaltır.

Ve maxFrameRate değiştirmek unutma: size Sonra

:

saniyede 30 Frame varsa ve BandWidth 300 kbps: bunu hesaplamak için bir örnek olarak

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

300/30 = 10 KB/sn yükleme kullanıyor.

BW'yi 35'e düşürerek hız performans sorunu'u çözebilirsiniz. Yani

Quality control

+1

Harika cevap ........... – Muath

+1

Umarız sizin için çalışıyor –

+0

Bu yavaşlığı çözdü – Muath

İlgili konular