我正在尝试使用FFmpeg生成合成视频。
我希望帧速率为10 fps,并且我希望testsrc
计数器每帧前进。
问题:当输出文件为mp4
时,第一个视频帧被duplicated 10次。
问题:是FFmpeg中的错误,还是命令行参数中的问题?
我正在使用以下命令:
ffmpeg -y -r 10 -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -c:v libx264 vid.mp4
rate=1
的原因是使计数器每帧前进。生成的源模式旨在使计数器每秒前进。-r 10
的原因是,以10 fps的速度“重新混合”视频,而忽略了输入的时间戳。 我在以下文章中找到了语法:Using ffmpeg to change framerate:
以新帧速率重新复用
ffmpeg -y -r 24 -i seeing_noaudio.h264 -c copy seeing.mp4
当输出文件为AVI
时,它可以正常工作(第一帧没有重复):
ffmpeg -y -r 10 -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -c:v libx264 vid.avi
[以1 fps生成AVI
并以10 fps生成mp4
Remux时,存在另一个问题:第一帧和第二帧重复两次,而最后一帧丢失。以下是命令:
ffmpeg -y -f lavfi -i testsrc=duration=10:size=92x54:rate=1 -c:v libx264 -r 1 vid.avi
ffmpeg -y -r 10 -i vid.avi -c:v copy -r 10 vid.mp4
将mp4
视频解析为PNG
图像:
ffmpeg -i vid.mp4 %02d.png
这可能与初始时基有关,但我无法测试几天。现在,使用
ffmpeg -y -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -vf setpts=N/10/TB -r 10 -c:v libx264 vid.mp4