You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FFmpeg合并*.png文件时添加背景图片

直接用FFmpeg给PNG序列添加背景生成MP4的方法

FFmpeg完全支持直接给PNG序列添加背景并生成MP4,不需要先转GIF,既能保持你提到的高速处理优势,也不会出现文件数量过多的错误。

基础命令示例

假设你的背景图是background.png,PNG序列是当前目录下的*.png,帧率设为10,直接执行以下命令:

ffmpeg -i background.png -framerate 10 -pattern_type glob -i '*.png' \
-vf "[0]format=rgba[bg];[1]format=rgba[fg];[bg][fg]overlay=shortest=1" \
-movflags faststart -pix_fmt yuv420p planet.mp4

参数说明

  • -i background.png:将背景图作为第一个输入,FFmpeg会自动循环该图片作为每一帧的背景层
  • -framerate 10 -pattern_type glob -i '*.png':指定PNG序列的帧率为10,并用通配符匹配所有PNG文件作为前景层
  • 滤镜部分:
    • [0]format=rgba[bg]:确保背景图以RGBA格式处理(兼容透明背景,非透明背景也适用)
    • [1]format=rgba[fg]:将PNG序列转为RGBA格式,保留原有的透明通道
    • [bg][fg]overlay=shortest=1:把前景PNG叠加到背景图上,shortest=1表示当PNG序列播放完毕时停止输出(避免背景图无限循环)
  • -movflags faststart -pix_fmt yuv420p:保持你原命令的兼容性设置,优化MP4的流媒体播放能力并保证广泛的设备支持

适配不同尺寸的场景

如果背景图和PNG序列尺寸不一致,可以在滤镜中添加scale调整,比如要让PNG居中叠加在1280x720的背景上:

ffmpeg -i background.png -framerate 10 -pattern_type glob -i '*.png' \
-vf "[0]scale=1280:720[bg];[1]scale=trunc(iw/2)*2:trunc(ih/2)*2[fg];[bg][fg]overlay=(W-w)/2:(H-h)/2:shortest=1" \
-movflags faststart -pix_fmt yuv420p planet.mp4

这里(W-w)/2:(H-h)/2会自动计算居中位置,trunc(iw/2)*2确保PNG尺寸为偶数(符合MP4的编码要求)

内容的提问来源于stack exchange,提问作者Walt Howard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:17:32