ZLMediaKit尝试解决GB28181(UDP方式)的视频花屏问题

问题现象: 视频出现大量花屏,无法观看

已尝试的方案

  • try1 服务器调优
    增加服务器的缓存接收大小, 减少UDP的丢包,尝试无效
1.下面的代码添加到/etc/sysctl.conf的末尾,然后保存
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_default = 8388608
net.core.wmem_max = 16777216
2.运行sysctl -p使设置生效
3.再次查看缓存大小
cat /proc/sys/net/core/rmem_max
  • try2 程序调优
    修改ZLMediaKit源码,调整RtpReceiver.h 接收大小调整,无效
cd ZLMediakits
mkdir build
cd build
cmake .. -DENABLE_WEBRTC=true -DOPENSSL_ROOT_DIR=/usr/local/openssl -DOPENSSL_LIBRARIES=/usr/local/openssl/lib
cmake --build . --target MediaServer

修改文件截图
在这里插入图片描述

继续搜索视频花屏问题的答案 ,只剩下源头调整 和FFMPEG 调整2个方案

预览网络摄像头的画面时,经常出现雪花屏的问题。原因是网络摄像头默认使用RTSP协议,RTSP下层默认使用UDP传输,而UDP传输是不可靠的,会丢包,所以导致雪花屏。

  • Ans1: ( 从源头修改)
    网络摄像头支持RTSP使用TCP或者UDP传输,使用TCP还是UDP取决于客户端的SETUP请求。SETUP请求中的Transport是TCP就使用TCP传输,Transport是UDP就使用UDP传输。
    TCP提供可靠的传输,可以将网络摄像头传输协议由UDP改为TCP
  • Ans2: (从FFMPEG源码修改)
    UDP 缓冲区大小不足会导致多个高分辨率视频流的流中断 ,需要重建 ffmpeg/libav 更改 udp.c 源文件中的 UDP_MAX_PKT_SIZE.

方案1: 因为我们是上级平台,无法从源头修改

try3 FFMPEG调优

调整UDP接收的缓存大小

1.修改文件: /ffmpeg-4.1/libavformat/udp.c

修改文件截图
在这里插入图片描述

2.重新编译ffmpeg
 cd ffmpeg-4.1
 sudo ./configure --prefix=/usr/local/ffmpeg
 sudo make & make install
 export PATH=/usr/local/ffmpeg/bin:${PATH}

在这里插入图片描述

3. 准备尝试,希望good luck !
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值