You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过FFmpeg命令行实现视频缩放与多素材合成?

用FFmpeg实现多素材合成的解决方案

当然没问题!FFmpeg就是干这个的好手——多层媒体合成、缩放、叠加一条龙都能搞定。我给你写好具体命令,再拆解每个部分的作用,你照着来就能得到想要的600x400输出视频。

完整FFmpeg命令

ffmpeg -i red_background.jpg -i overlay.png -i input_video.mp4 -filter_complex \
"[2:v]scale=422:282[v_scaled]; \
 [0:v]scale=600:400[bg]; \
 [bg][1:v]overlay=x=(W-w)/2:y=(H-h)/2[bg_with_png]; \
 [bg_with_png][v_scaled]overlay=x=(W-w)/2:y=(H-h)/2[final]" \
-map "[final]" -c:v libx264 -crf 23 -preset medium output_final.mp4

命令拆解(帮你理解每一步)

  • 输入素材-i red_background.jpg -i overlay.png -i input_video.mp4 按顺序指定三个素材:红色背景图、PNG图、原MP4视频
  • 缩放视频[2:v]scale=422:282[v_scaled] 把第三个输入(原视频)缩放成你要的422x282尺寸,给这个处理后的视频流起名叫v_scaled
  • 统一背景尺寸[0:v]scale=600:400[bg] 强制把红色背景图调整为600x400(如果你的背景图本身就是这个尺寸,可以删掉这一行,直接用[0:v]作为背景层)
  • 叠加PNG到背景[bg][1:v]overlay=x=(W-w)/2:y=(H-h)/2[bg_with_png] 将PNG图居中叠加在背景层上(W是背景宽度,w是PNG宽度,这个公式自动计算居中位置),得到带PNG的背景组合层
  • 叠加缩放后的视频[bg_with_png][v_scaled]overlay=x=(W-w)/2:y=(H-h)/2[final] 再把缩放后的视频居中叠加到组合层上,得到最终的画面流final
  • 输出设置-map "[final]" 指定用最终合成的画面流输出;-c:v libx264 -crf 23 -preset medium 用H.264编码输出MP4,crf23是平衡质量和体积的默认值,preset medium兼顾编码速度和压缩率

额外小贴士

  • 如果需要保留原视频的音频,在命令里加上 -map 2:a 即可(把原视频的音频流映射到输出)
  • 要是想调整PNG或视频的位置,直接修改overlayxy值就行,比如x=50:y=50就是距离左上角各50像素
  • 如果你的PNG图本身就是600x400,那居中叠加后会完全覆盖背景,你可以根据实际需求调整位置或透明度(比如加alpha=0.5让PNG半透明)

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

火山引擎 最新活动