为什么来自 ffmpeg 的 mp4 在最后 3 秒内冻结?

Why does the mp4 from ffmpeg freeze during the last 3 seconds?

我正在尝试从三个输入生成完美循环的 mp4:

  1. 背景 png 图片
  2. 透明png图像的图像序列,粒子数增加
  3. 透明png图像的另一个图像序列,粒子数量减少

我目前正在尝试使用两个命令来实现此目的(我必须使用 'overlay' 两次)。问题是,在第二个命令之后,视频 (test2.mp4) 冻结了最后 3 秒。为什么会这样?还有其他我可以尝试使用的命令吗?

第一个命令:

ffmpeg -framerate 30 \
    -pattern_type glob -i 'images/increase/*.png' \
    -framerate 30 \
    -i screens/Background.png \
    -i audio/50-White-Noise-10min.mp3 \
    -filter_complex "[1:v][0:v] overlay" \
    -preset slow -c:a copy -shortest -c:v libx264 -pix_fmt yuv420p test.mp4 

第二个命令:

ffmpeg -framerate 30 \
    -pattern_type glob -i 'images/decrease/*.png' \
    -i test.mp4 \
    -filter_complex "[1:v][0:v] overlay" \
    -preset slow -c:a copy -shortest -c:v libx264 -pix_fmt yuv420p test2.mp4 

解决方案是:链接覆盖过滤器并在一个命令中完成所有操作:

ffmpeg -framerate 30 \
    -i screens/Background.png \
    -framerate 30 \
    -pattern_type glob -i 'images/increase/*.png' \
    -framerate 30 \
    -pattern_type glob -i 'images/decrease/*.png' \
    -i audio/50-White-Noise-10min.mp3 \
    -filter_complex "[0][1] overlay[out],[out][2] overlay" \
    -c:a copy -shortest -c:v libx264 -pix_fmt yuvj420p loop.mp4