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

能否通过单次文件处理简化FFmpeg添加Logo与电话号码的命令?

单次FFmpeg命令实现同时添加Logo和电话号码

我原本通过两次FFmpeg命令完成视频Logo与电话号码的添加:

ffmpeg -i input.mp4 -i ./assets/logo.png -filter_complex "[1][0]scale2ref=w='iw*1/5':h='ow/mdar'[wm][vid];[vid][wm]overlay=main_w-overlay_w-5:5" 'uploads/output.mp4' 2>&1

ffmpeg -i ./uploads/output.mp4 -i ./assets/telephone.png -filter_complex "[1][0]scale2ref=w='iw*9/10':h='ow/mdar'[wm][vid];[vid][wm]overlay=10:main_h-overlay_h-10" './uploads/output2.mp4'

为提升处理效率,我尝试合并为单次命令,但未成功添加电话号码:

ffmpeg -i input.mp4 -i ./assets/logo.png -filter_complex "[1][0]scale2ref=w='iw*1/5':h='ow/mdar'[wm][vid];[vid][wm]overlay=main_w-overlay_w-5:5" -i ./assets/telephone.png -filter_complex "[1][0]scale2ref=w='iw*9/10':h='ow/mdar'[wm][vid];[vid][wm]overlay=10:main_h-overlay_h-10" './uploads/output2.mp4'

问题原因

FFmpeg仅会执行最后一个-filter_complex参数,前一个滤镜逻辑会被直接忽略,导致只有电话号码的滤镜生效(且输入流索引错误,实际也未正确处理)。

正确解决方案

将两个叠加逻辑整合到**同一个-filter_complex**中,通过临时标签传递中间处理结果,完整命令如下:

ffmpeg -i input.mp4 -i ./assets/logo.png -i ./assets/telephone.png -filter_complex \
"[1][0]scale2ref=w='iw*1/5':h='ow/mdar'[wm_logo][vid_base]; \
 [vid_base][wm_logo]overlay=main_w-overlay_w-5:5[tmp_video]; \
 [2][tmp_video]scale2ref=w='iw*9/10':h='ow/mdar'[wm_phone][vid_tmp]; \
 [vid_tmp][wm_phone]overlay=10:main_h-overlay_h-10" \
'./uploads/output2.mp4'

命令说明

  • 输入流索引:视频源为[0],Logo图片为[1],电话号码图片为[2]
  • 第一步:对Logo做尺寸适配,生成缩放后的Logo[wm_logo]和原视频流[vid_base],叠加到视频右上角得到临时视频[tmp_video]
  • 第二步:以临时视频[tmp_video]为基准,适配电话号码图片尺寸,生成[wm_phone],叠加到视频底部指定位置
  • 所有滤镜链通过分号分隔,中间结果用自定义标签(如[tmp_video])传递

内容的提问来源于stack exchange,提问作者Gabriel-Joy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:50:44