Jul*_*ard 2 c++ udp ffmpeg video-streaming
我正在研究一种使用FFMPEG C++库从UDP流式传输获取的软件.
FFMPEG(1.2)已实现并正在运行,但我遇到了一些错误(采集崩溃和重启).该日志显示以下消息:
*循环缓冲区溢出.要避免,请增加fifo_size URL选项.要在这种情况下生存,请使用overrun_nonfatal选项*
我在网上搜索了有关如何使用此选项的文档,但我只获得了有关如何在直接运行ffmpeg可执行文件时使用的信息.
有人知道如何在我的C++代码中设置正确的选项: - 增加fifo_size - 使用overrun_nonfatal选项
谢谢
Gra*_*ant 11
相同的选项适用于命令行或C++库,您需要修改UDP URL,如下所示:如果原始URL如下所示:
udp://@239.1.1.7:5107
Run Code Online (Sandbox Code Playgroud)
像这样添加fifo_size和overrun参数:
"udp://@239.1.1.7:5107?overrun_nonfatal=1&fifo_size=50000000"
Run Code Online (Sandbox Code Playgroud)
请记住使用引号转义URL.
overrun_nonfatal = 1阻止ffmpeg退出,它可以在大多数情况下恢复.
fifo_size = 50000000使用50MB udp输入缓冲区(默认5MB)
唯一的文档在源代码中:http: //git.videolan.org/?p = fmpeg.git; a = blob; f = libavformat/rup.c; h = 5b5c7cb7dfc1aed3f71ea0c3e980be54757d3c62; hb =dd0a9b78db0eeea72183bd3f5bc5fe51a5d3f537
我没有足够的声誉评论其他答案,但如果我这样做,我会说研究答案中链接的来源:
fifo_size 根据以下行测量为188字节(数据包)的倍数:
s-> circular_buffer_size = strtol(buf,NULL,10)*188;
s-> circular_buffer_size = 7*188*4096;
如果你想要一个50MB的循环缓冲区,你应该把fifo_size参数设置得更接近,50*1024*1024/188否则50000000会得到50000000*188更接近8965MB的字节!
| 归档时间: |
|
| 查看次数: |
10245 次 |
| 最近记录: |