带有ffmpeg的UDP流-溢出\u非致命选项 我正在研究一种使用FFMPEG C++ LIBS来从UDP流中获取数据的软件。

带有ffmpeg的UDP流-溢出\u非致命选项 我正在研究一种使用FFMPEG C++ LIBS来从UDP流中获取数据的软件。,c++,ffmpeg,udp,video-streaming,C++,Ffmpeg,Udp,Video Streaming,FFMPEG(1.2)已实现并正在运行,但我遇到一些错误(采集崩溃和重新启动)。日志显示以下消息: *循环缓冲区溢出。要避免这种情况,请增加fifo_大小URL选项。要在这种情况下生存,请使用Overflow_非致命选项* 我在网上搜索了有关如何使用此选项的文档,但我只获得了直接运行ffmpeg可执行文件时如何使用的信息 是否有人知道如何在C++代码中设置正确的选项: -增加fifo_大小 -使用溢出\非致命选项 谢谢> P>从命令行或C++库中执行相同的选项,需要修改UDP URL如下: 如果

FFMPEG(1.2)已实现并正在运行,但我遇到一些错误(采集崩溃和重新启动)。日志显示以下消息:

*循环缓冲区溢出。要避免这种情况,请增加fifo_大小URL选项。要在这种情况下生存,请使用Overflow_非致命选项*

我在网上搜索了有关如何使用此选项的文档,但我只获得了直接运行ffmpeg可执行文件时如何使用的信息

是否有人知道如何在C++代码中设置正确的选项: -增加fifo_大小 -使用溢出\非致命选项


谢谢

> P>从命令行或C++库中执行相同的选项,需要修改UDP URL如下: 如果原始URL如下所示:

udp://@239.1.1.7:5107
"udp://@239.1.1.7:5107?overrun_nonfatal=1&fifo_size=50000000"
添加fifo_大小和溢出参数,如下所示:

udp://@239.1.1.7:5107
"udp://@239.1.1.7:5107?overrun_nonfatal=1&fifo_size=50000000"
记住用引号转义URL

Overflow_nonfatal=1阻止ffmpeg退出,它在大多数情况下都可以恢复

fifo_size=50000000使用50MB udp输入缓冲区(默认为5MB)

唯一的文档在源代码中:
我没有足够的声誉来评论另一个答案,但如果我评论了,我会说研究答案中链接的来源:

  • fifo_大小
    根据以下行以188字节(数据包)的倍数进行测量: s->circular\u buffer\u size=strtol(buf,NULL,10)*188

  • 因此,尽管Grant的“默认5MB”大致正确,但由于行: s->循环缓冲区大小=7*188*4096


如果您想要50MB的循环缓冲区,您应该将
fifo_size
参数设置为更接近
50*1024*1024/188
的值,否则
50000000
将给出更接近8965MB的
50000000*188
字节

你好,谢谢你的回答。我会看一看,并告诉你这是否有效。为阅读源代码和分享干杯!