生成以 10 fps 计数的合成 testsrc 视频,第一帧被复制

Generating synthetic testsrc video counting at 10 fps, first frame is duplicated

我正在尝试使用 FFmpeg 生成合成视频。

我希望帧速率为 10 fps,并且我希望 testsrc 计数器每帧都前进。

问题:
当输出文件为 mp4 时,第一个视频帧被 复制 10 次。

问题:
是 FFmpeg 中的错误,还是命令行参数中的问题?


我正在使用以下命令:

ffmpeg -y -r 10 -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -c:v libx264 vid.mp4

我发现语法如下 post: Using ffmpeg to change framerate:

Remux with new 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 Remux 到 mp4 时,存在不同的问题:
第一帧和第二帧重复两次,最后一帧丢失。
以下是命令:

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  

结果:

第一帧被复制 10 次。


正在将 AVI 视频解析为 PNG 图片:
结果:

正如预期的那样有 10 帧。

这可能与初始时基有关,但我无法测试几天。现在,使用

ffmpeg -y                                    \
       -f lavfi                               \
       -i                                      \
        testsrc=duration=10:size=192x108:rate=1 \
       -vf                                       \
        setpts=N/10/TB                            \
       -r 10                                       \
       -c:v                                         \
        libx264                                      \
        vid.mp4