gpt4 book ai didi

performance - Licode Erizo.Stream 视频帧质量

转载 作者:行者123 更新时间:2023-12-04 02:55:34 24 4
gpt4 key购买 nike

我用 Licode它是开源 WebRTC 通信平台。我想降低视频质量(视频帧位大小)。

流看起来像这样:

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

我发送 Canvas (一个视频帧):
 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时间 200ms 使发送速度更快。但是当我在新窗口中打开页面(标签)时,这会更快。

我想在不使用 erizoStream.sendData(); 的情况下减少视频帧(位大小) .仅从视频本身或使用它来解决速度性能问题。

最佳答案

当出版室..

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

可以添加 maxVideoBW ,它将最大视频带宽设置为 300 kbps。
这将质量值降低到适当的带宽值。

并且不要忘记更改 maxFrameRate :
var video_constraints = {mandatory: {
maxFrameRate:30
},
optional: [ ]
};

作为计算它的示例:

如果每秒 30 帧,带宽为 300 kbps:

那么您使用的是 300/30 = 10 KB/秒的上传速度。

通过将 BW 减少到 35,您可以解决 速度性能问题 .

Quality control

关于performance - Licode Erizo.Stream 视频帧质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com