使用ffmpeg覆盖固体背景颜色的间隔拍摄视频

ham*_*man 5 ffmpeg

我有一个被命名为主页的截图负荷homescreen000001.png,homescreen000002.png等我试图创建一个使用ffmpeg的这些图像的时间推移视频.

当我运行以下内容时,我已经完成了它的工作:

ffmpeg -f image2 \
       -i ~/Desktop/homescreen%06d.png \
       -r 0.5 \
       -s 1440x900 \ 
       -b:v 1M \
       -vcodec libx264 \ 
       -pix_fmt yuv420p \
       ~/Desktop/timelapse.mp4
Run Code Online (Sandbox Code Playgroud)

然而,事实证明,有些图像具有透明背景,因此背景在这些图像上显示为黑色.

我想要一个白色背景,所以我一直试图使用ffmpeg设置如下:

ffmpeg -f image2 \
       -loop 1 \
       -i ~/Desktop/whitebg.png \
       -i ~/Desktop/homescreen%06d.png \
       -filter_complex overlay \ 
       -r 0.5 \
       -s 1440x900 \ 
       -b:v 1M \
       -vcodec libx264 \ 
       -pix_fmt yuv420p \
       ~/Desktop/timelapse.mp4
Run Code Online (Sandbox Code Playgroud)

whitebg.png是2px x 2px png,白色背景,就是这样.

这个ffmpeg命令产生一个非常小的(文件大小)视频,它只是一个白色背景.

任何人都可以解释我如何使用ffmpeg将图像叠加为白色背景上的延时视频?

llo*_*gan 12

使用一系列图像都可以为我工作,这些图像都包含最近版本的透明度ffmpeg,但是你没有包含完整的控制台输出,这些输出可能提供了有用的信息,这些信息可能显示了它无法按预期工作的原因.

您可以使用颜色源过滤器作为背景:

ffmpeg -f lavfi -i color=c=white:s=1440x900 -i homescreen%06d.png -filter_complex \
"[0:v][1:v]overlay=shortest=1,format=yuv420p[out]" \
-map "[out]" output.mp4
Run Code Online (Sandbox Code Playgroud)
  • 您必须手动提供颜色源过滤器的输入大小,但您可以使用它ffprobe来获取图像帧大小,如FFprobe提示中所示.

  • 请注意,通过使用-r 0.5帧将被删除以适应此输出帧速率,因为默认情况下,输入是-r 25.这可能是也可能不是.

  • 通常不推荐使用比特率和一次通过.请-crf改用FFmpeg和H.264编码指南中所示.

  • Stack Overflow仅用于编程问题.ffmpeg应在超级用户处询问cli使用问题.