如何摆脱ffmpeg中的“抖动缓冲区已满”错误?

Posted

技术标签:

【中文标题】如何摆脱ffmpeg中的“抖动缓冲区已满”错误?【英文标题】:How to get rid of errors "jitter buffer full" in ffmpeg? 【发布时间】:2018-08-01 22:01:10 【问题描述】:

如何摆脱错误jitter buffer full? 我使用来自最新快照之一的 ffmpeg。ffmpeg version N-90078-gf611fef Copyright (c) 2000-2018 the FFmpeg developers

问题是从rtsp上的摄像头有这样一个流:http://ibb.co/fmckCc 无法从相机端解决此问题。

我这样接受:

ffmpeg \
-strict experimental \
-fflags + genpts \
-fflags + latm \
-seek2any 1 \
-avoid_negative_ts + make_zero \
-max_delay 5000000 \
-rtsp_transport udp \
-i rtsp: // admin: @ 192.168.87.21: 554/0? .sdp \
-map 0 \
-r 15 \
-c: v copy \
-an \
-f mpegts udp: //239.0.0.1: 1234? ttl = 1? pkt_size = 1316

我后来开始时不时地出错

[rtsp @ 0x154d180] jitter buffer full
[rtsp @ 0x154d180] RTP: missed 1 packets
[rtsp @ 0x154d180] jitter buffer full
[rtsp @ 0x154d180] RTP: missed 1 packets
[rtsp @ 0x154d180] jitter buffer full
[rtsp @ 0x154d180] RTP: missed 2 packets
[rtsp @ 0x154d180] jitter buffer full
[rtsp @ 0x154d180] RTP: missed 4 packets

因此,图片崩溃了。

我在linux内核设置中增加了udp缓冲区:

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.udp_mem = 8388608 12582912 16777216
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608

它没有解决我的问题。 告诉我,你如何处理这样的错误?

【问题讨论】:

【参考方案1】:

尝试降低 max_delay 或增加抖动缓冲区。当您将 max_delay 设置的时间长于您的抖动缓冲区可以处理的数据包计数时,您将收到缓冲区已满错误,因此数据包将丢失。

【讨论】:

以上是关于如何摆脱ffmpeg中的“抖动缓冲区已满”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何摆脱 TypeScript 中的 $injector 类型错误?

如何摆脱python中的ascii编码错误

如何摆脱 Visual Studio 中的错误?

反应.js |如何摆脱 Codesandbox 中的跨域错误

如何摆脱VS 13中的错误“链接:致命错误LNK1104:无法打开文件'LIBC.lib'”?

如何摆脱 PL/SQL 程序中的编译错误?