如何修改FFmpeg单视频动态水印脚本以实现批量视频添加水印
FFmpeg批量添加动态水印实现方案
注意:请先确保FFmpeg已安装并配置到系统环境变量中,所有待处理视频与logo.png需放在脚本所在的同一目录下
批量处理的核心逻辑就是保留你原有单文件命令的滤镜参数不变,仅通过脚本遍历目录下所有视频文件,逐个调用FFmpeg执行命令,自动生成不重名的输出文件。
Linux/macOS 批量处理脚本
- 新建脚本文件
batch_watermark.sh,填入以下内容:
#!/bin/bash # 可自行修改括号内的后缀,添加你需要支持的视频格式 video_exts=("mp4" "mov" "mkv" "avi") for ext in "${video_exts[@]}"; do for file in *."$ext"; do [ -f "$file" ] || continue output="watermarked_${file}" echo "正在处理:${file}" ffmpeg -i "$file" -i logo.png -filter_complex "[1]colorchannelmixer=aa=0.6,scale=iw*0.7:-1[a];[0][a]overlay=x='if(lt(mod(t\,16)\,8)\,W-w-W*5/100\,W*5/100)':y='if(lt(mod(t+4\,16)\,8)\,H-h-H*2.5/100\,H*2.5/100)'" -c:v libx264 -an "$output" done done echo "全部处理完成"
- 给脚本添加执行权限:
chmod +x batch_watermark.sh - 运行脚本即可批量处理:
./batch_watermark.sh
Windows 批量处理脚本
- 新建脚本文件
batch_watermark.bat,填入以下内容:
@echo off chcp 65001 >nul :: 可自行在括号内添加需要支持的视频格式后缀 for %%i in (*.mp4,*.mov,*.mkv,*.avi) do ( echo 正在处理:%%~ni%%~xi ffmpeg -i "%%i" -i logo.png -filter_complex "[1]colorchannelmixer=aa=0.6,scale=iw*0.7:-1[a];[0][a]overlay=x='if(lt(mod(t\,16)\,8)\,W-w-W*5/100\,W*5/100)':y='if(lt(mod(t+4\,16)\,8)\,H-h-H*2.5/100\,H*2.5/100)'" -c:v libx264 -an "watermarked_%%~ni%%~xi" ) echo 全部处理完成 pause
- 直接双击bat文件即可运行批量处理。
可选调整项
- 不需要静音输出就删掉命令中的
-an参数,即可保留原视频的音频 - 要统一输出到指定文件夹的话,先新建
output目录,将输出路径替换为output/${file}(Linux/macOS)或output\%%~ni%%~xi(Windows) - 水印的透明度、大小、移动规则直接修改filter_complex中的对应参数即可,修改逻辑和你原来单文件命令完全一致
内容的提问来源于stack exchange,提问作者dmkq
相关产品推荐
相关产品推荐

