Tôi sử dụng Licode đó là Nền tảng truyền thông WebRTC nguồn mở. Tôi muốn giảm chất lượng video (kích thước bit khung hình video).Licode Erizo.Stream Chất lượng khung hình video
Dòng trông như thế này:
var stream = Erizo.Stream({
audio:true,
video:video_constraints,
data: true,
attributes: {name:'myStream', type:'public'}
});
Có thể để có được VideoFrame như thế này:
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);
Và tôi gửi canvas (một video Frame):
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);
Các erizoStream.sendData({ base64:mydata});
là vô dụng cho hiệu suất tốc độ.
Nó sẽ gửi dữ liệu nhanh chóng nhưng khi nhận được nó có vấn đề với hình ảnh động:
stream.addEventListener("stream-data", function(evt){
//alert('Received data '+ evt.msg['base64']);
if(evt.msg['base64']){
renderBase64(evt.msg['base64']);
}
});
Tập setInterval
thời gian 200ms làm cho việc gửi chỉ đi nhanh. Nhưng điều này sẽ nhanh hơn khi tôi mở trang (tab) trong cửa sổ mới.
Tôi muốn giảm khung hình video (kích thước bit) mà không cần sử dụng erizoStream.sendData();
. Chỉ từ chính video hoặc sử dụng nó với việc giải quyết vấn đề hiệu suất tốc độ.
Vì vậy, [thay đổi chất lượng tại url Jpeg] (http://stackoverflow.com/questions/14383557/setting-canvas-todataurl-jpg-quality) tạo được ra ngoài? Những hạn chế về video hiện tại của bạn cho cuộc gọi getUserMedia là gì? –