我有一个 ~1h 的幻灯片,格式为 concat demuxer ( -f concat -i input.txt
)。最多有 20 张幻灯片。我想制作一个恒定帧率的 H264 MP4。
我愿意:
ffmpeg -f concat -i vcd.txt -preset ultrafast -crf 50 -profile:v main -tune stillimage -s:v 1920x1080 -c:v libx264 -pix_fmt yuv420p -framerate 5 -filter:v fps=5 outputtest.mp4
但是,由于它耗尽了我所有的 RAM,因此会冻结。就在我中止它之前,它的 RAM 使用量增加了 800 MB/s。
我尝试保存可变帧率 MP4,然后将其转换为 CFR:
ffmpeg -i outputvfr.mp4 -r 5 outputvf2fixed.mp4
ffmpeg -i outputvfr.mp4 -filter:v fps=5 outputvf2fixed.mp4
ffmpeg -i outputvfr.mp4 -vf settb=AVTB,fps=5 outputvf2fixed.mp4
ffmpeg -i outputvfr.mp4 -vsync cfr -framerate 5 outputvf2fixed.mp4
所有这些都会回归Too many packets buffered for output stream 0:1.
否则:
- 我不想手动复制图像并将它们提供给 FFMpeg。
- 我不想使用小片段多次运行 FFMpeg,然后再次使用 concat(这似乎不是使用 FFMpeg 的正确方法)
控制缓冲液供应的正确方法是什么?