我正在使用以下命令使用FFMPEG录制RTP流:
ffmpeg -i udp://127.0.0.1:1234 -t 00:00:30 -vcodec prores -profile:v 3 output.mov
问题是在视频的开头,结果文件的开头会延迟几秒钟。它显示了以下视频的第一帧,但停留了约3-7秒。理想的解决方案是使用Unix管道,因为这样可以减少直到最终文件可用之前的延迟,但是使用临时文件也应该可以。
如果确实有帮助,请使用以下命令创建流: Pastebin
(它将传入的RTP流延迟30秒,然后重新传输,以供以后在特定时间点之前15s和之后15s捕获)
编辑:如果有比在任何时候使用UDP流附加到延迟过程的输出更好的解决方案,那将是一个更好的解决方案,因为这些工作流中大约有13个并行运行。
我相信您的输入会在GOP中间开始,因此冻结。使用修整过滤器将前几秒斩波。
—
Gyan
我也考虑过这一点,但问题是定时非常关键,因此录制的开始时间应尽可能接近于启动ffmpeg。但是,感谢您对GOP的提示,我将尝试减小源间隔(因为@设备带宽并不重要)
—
Til Blechschmidt
要一次性确定这是否是问题,请将GOP降低为1,即
—
Gyan
-g 1
我通过将原始流写入文件,然后在仍在写入第一个文件的同时从该文件的末尾读取到新文件中来对其进行了一些重组(这确实有效,我没想到),这解决了我的问题但
—
Til Blechschmidt
-g 1
绝对可以改善启动延迟(在链的后期使用)。