解决GB28181对接RTSP倍速播放导致FFmpeg缓冲区满导致花屏问题

在GB28181协议对接RTSP流时,倍速播放会导致FFmpeg缓冲区溢出,进而造成花屏问题。这是由于倍速播放增加了数据流的处理速度,而FFmpeg的缓冲区未能及时处理这些增量数据,导致视频帧丢失或渲染错误。为解决此问题,可能需要优化数据缓存策略或调整流的处理速率,确保FFmpeg能够稳定地处理高吞吐量的视频流。

下面是我在网上找到的一些思路及方法:
大华、海康和华为等NVR录像机gb28181平台倍速播放原理 - 阿风小子 - 博客园

基本原理如下:
因为这些平台都不会牵扯到编解码,所以只能在编码后的数据进行处理,原始的编码数据来源于相机(大部分),所以对于安防,编码的源头在相机端,这是一个大致前提。

平台收到相机编码后的数据后,如果要进行倍速播放,那怎么发送数据呢?策略如下:
1、4倍以下,按照全帧率4倍码流发送数据,即1s发送100帧(假设25fps),注意这里对dts和pts不做任何修改。
2、4倍以上,只发送I帧数据。这里也不修改dits和pts.

我们收到数据后直接播放会出现什么问题呢?
1、如果我们收到的100fps,但是此时dts和pts却没有改变,播放器播放的时候会出现跳秒和花屏现象。为什么呢?
这是因为dts和pts没有修改,播放器还是按照正常dts和pts速率来解码播放,导致缓存长满,这时候播放器一般会丢包处理,丢包后刚好这一段数据中包含I帧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

美丽的欣情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值