我正在开发一个使用 FFMPEG C++ 库从 UDP 流中获取数据的软件。
FFMPEG (1.2) 已实现并正在运行,但出现一些错误(采集崩溃和重新启动)。日志显示以下消息:
*循环缓冲区溢出。为避免,增加 fifo_size URL 选项。要在这种情况下生存,请使用 overrun_nonfatal 选项*
我在网上搜索了有关如何使用此选项的文档,但我只获得了有关在直接运行 ffmpeg 可执行文件时如何使用的信息。
有人知道如何在我的 C++ 代码中将正确的选项设置为: - 增加 fifo_size - 使用 overrun_nonfatal 选项
谢谢
原文由 Julien Greard 发布,翻译遵循 CC BY-SA 4.0 许可协议
相同的选项适用于命令行或 C++ 库,您需要按如下方式修改您的 UDP URL:如果您的原始 URL 如下所示:
添加 fifo_size 和 overrun 参数,如下所示:
请记住用引号对 URL 进行转义。
overrun_nonfatal=1 阻止 ffmpeg 退出,它可以在大多数情况下恢复。
fifo_size=50000000 使用 50MB udp 输入缓冲区(默认 5MB)
唯一的文档在源代码中:http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavformat/udp.c;h=5b5c7cb7dfc1aed3f71ea0c3e980be54757d3c62;hb= dd0a9b78db0eeea72183bd3f5bc5fe51a5d3f537