解决kurento视频卡顿问题
kurento是目前主流的webrtc开源框架之一,有不少的企业都拿kurento来做产品。当把kurento的demo搭起来后发现画质并不是很理想,而且局域网环境(没有限制带宽)下也是如此。本文章就是解决这些问题的!!!
前提条件
你搭完之后是能运行的只是觉得通讯画质比较差,如果本来都没有运行的有什么端口被墙等等各种问题的,我们就无法聊下去了本文章不是说搭建的。网络带宽没有限制,比如你租了1Mbps带宽的云服务器来跑还有想好的画质就是癞蛤蟆想吃天鹅肉,720P(100万像素)的一路视频大概就2Mbps了。
修改前端的video大小
修改用户界面的限制
本来列子是kurento-tutorial-java\kurento-group-call项目所以修改文件
kurento-tutorial-java\kurento-group-call\src\main\resources\static\js\conferenceroom.js
function onExistingParticipants(msg) {
var constraints = {
audio : true,
video : {
mandatory : {
maxWidth : 320, /*改成分辨率,比如720*/
maxFrameRate : 15,/*改成想要的大帧率,比如30*/
minFrameRate : 15/*改成想要的小帧率,比如24*/
}
}
};
修改WebRtcEndpoint带宽限制
修改kurento接口的限制
本来列子是kurento-tutorial-java\kurento-group-call项目所以修改文件
tutorial-java\kurento-group-call\src\main\java\org\kurento\tutorial\groupcall\UserSession.java
所有WebRtcEndpoint 创建时就设置好带宽限制
this.outgoingMedia = new WebRtcEndpoint.Builder(pipeline).build();
this.outgoingMedia.setMaxVideoRecvBandwidth(2000);
this.outgoingMedia.setMinVideoRecvBandwidth(1000);
this.outgoingMedia.setMaxVideoSendBandwidth(2000);
this.outgoingMedia.setMinVideoSendBandwidth(1000);
** [*]输入带宽控制机制: **Kurento WebRTC允许配置接收比特率的范围。最大值在SDP中公布,而min值设置为限制REMB包的较低值。因此,min值将只有效果.
setMin/MaxVideoRecvBandwidth:设置接收视频流预期的最大/最大比特率限制。
setMin/MaxAudioRecvBandwidth:设置接收音频流预期的最大/最大比特率限制。
setMin/MaxVideoSendBandwidth:设置发送到远程对等体的视频的最小/最大比特率限制。
setMin/MaxAudioSendBandwidth:设置发送到远程对等体的音频的最小/最大比特率限制。
默认视频比特率范围在100kbps和500kbps之间。
修改ubuntu的UDP缓存
修改ubuntu系统的限制
修改/etc/sysctl.conf 在后面加上
fs.file-max=655350
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 20971520
net.core.rmem_max = 8388608
net.ipv4.tcp_mem = 1162629 1550174 2325258
net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.tcp_rmem = 4096 87380 6291456
配置完以上几点你的kurento顺畅无阻了!!!祝你生活愉快!!!