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 !
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
GB28181是中国国家标准化委员会发布的一项标准,用于统一视频监控系统及设备的通信协议。在GB28181标准中,音视频的发送主要使用的是实时传输协议(Real-time Transport Protocol,简称RTP)。 RTP是一种用于实时数据传输的协议,主要用于音频、视频等实时数据的传输,其实质是一种应用层协议。RTP将音视频数据按照时间戳分割为小的数据包,并加入一些额外的信息,如传输序列号、时间戳、同步信号等,以保证传输过程的实时性和准确性。 在GB28181中,音视频设备如摄像头、麦克风等通过网络将音视频数据封装成RTP数据包进行传输。发送端会根据数据类型(音频、视频)设定不同的RTP端口,将数据经过RTP协议封装成RTP数据包,并通过UDP或者TCP等传输层协议发送到接收端。 接收端根据RTP数据包中的头部信息解析出音视频数据,并进行相应的解码和处理,最终通过显示设备或者扬声器播放出来。通过RTP协议的使用,音视频数据能够以实时、高效的方式进行传输,保证了监控系统的稳定性和可靠性。 总结来说,GB28181标准中的音视频发送主要使用RTP协议进行数据的封装和传输,通过UDP或者TCP等传输层协议将RTP数据包发送到接收端,并通过解码处理后播放出来。这种方式保证了音视频数据的实时性和准确性,满足了监控系统对于实时性、稳定性和可靠性的要求。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值