脚本如何批量生成水印视频

wen 实用脚本 1

本文目录导读:

脚本如何批量生成水印视频

  1. 方案一:Windows 批处理 (.bat)
  2. 方案二:macOS / Linux Shell 脚本 (.sh)
  3. 方案三:Python 脚本(进阶,适合有编程基础的用户)
  4. 关键参数说明(用于自定义水印效果)
  5. 推荐操作流程

Windows 批处理 (.bat)

适用场景:Windows 系统,需提前下载 FFmpeg 并配置环境变量。

  1. 准备文件

    • 将您的所有视频放在一个文件夹内(D:\videos)。
    • 准备好水印图片(logo.png,建议使用 PNG 格式以支持透明背景)。
    • 在视频文件夹内新建一个文本文档,重命名为 add_watermark.bat
  2. 编辑脚本: 右键点击 add_watermark.bat,选择“编辑”,粘贴以下代码:

    @echo off
    chcp 65001 >nul
    setlocal enabledelayedexpansion
    :: -------------------- 配置区域(请根据实际情况修改) --------------------
    :: 设置水印图片路径(建议使用绝对路径或相对路径)
    set "WATERMARK=logo.png"
    :: 设置水印位置(参数说明:main_w=视频宽,overlay_w=水印宽)
    :: 10:10 表示距离视频左上角 10 像素,常用预设:
    :: 左上角: 10:10
    :: 右上角: main_w-overlay_w-10:10
    :: 左下角: 10:main_h-overlay_h-10
    :: 右下角: main_w-overlay_w-10:main_h-overlay_h-10
    set "POSITION=main_w-overlay_w-10:main_h-overlay_h-10"
    :: 设置输出文件夹名称(会在当前目录下创建)
    set "OUTPUT_DIR=output_with_watermark"
    :: -------------------- 脚本逻辑(一般无需修改) --------------------
    if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
    echo 开始批量处理视频文件,请稍候...
    echo.
    for %%i in (*.mp4 *.avi *.mov *.mkv *.flv *.wmv) do (
        echo 正在处理: %%i
        ffmpeg -i "%%i" -i "%WATERMARK%" -filter_complex "overlay=%POSITION%" -codec:a copy "%OUTPUT_DIR%\%%~ni_watermarked%%~xi"
        echo 完成: %%~ni_watermarked%%~xi
        echo.
    )
    echo 所有文件处理完毕!
    pause
  3. 使用方法

    • logo.png 文件放入视频文件夹。
    • 双击运行 add_watermark.bat
    • 等待处理完成,带水印的视频会出现在 output_with_watermark 文件夹中。

macOS / Linux Shell 脚本 (.sh)

适用场景:Mac 或 Linux 系统。

  1. 准备文件

    • 打开终端(Terminal)。
    • cd 到视频所在目录。
    • 确保水印图片(如 logo.png)也在同一目录。
  2. 创建脚本: 在终端执行 nano add_watermark.sh,粘贴以下内容:

    #!/bin/bash
    # -------------------- 配置区域 --------------------
    WATERMARK="logo.png"
    POSITION="main_w-overlay_w-10:main_h-overlay_h-10"  # 右下角
    OUTPUT_DIR="output_with_watermark"
    # ------------------------------------------------
    mkdir -p "$OUTPUT_DIR"
    echo "开始批量处理视频文件..."
    # 支持常见格式,可根据需要增减
    for file in *.mp4 *.avi *.mov *.mkv *.flv *.wmv; do
        if [ -f "$file" ]; then
            filename=$(basename -- "$file")
            extension="${filename##*.}"
            name="${filename%.*}"
            output_file="${OUTPUT_DIR}/${name}_watermarked.${extension}"
            echo "正在处理: $file"
            ffmpeg -i "$file" -i "$WATERMARK" -filter_complex "overlay=$POSITION" -codec:a copy "$output_file"
            echo "完成: $output_file"
            echo ""
        fi
    done
    echo "所有文件处理完毕!"
  3. 运行脚本

    chmod +x add_watermark.sh  # 赋予执行权限
    ./add_watermark.sh

Python 脚本(进阶,适合有编程基础的用户)

如果需要更复杂的控制(如动态水印位置、视频元数据修改等),可以使用 Python + FFmpeg 库。

  1. 安装依赖

    pip install ffmpeg-python
  2. 脚本代码 (add_watermark.py):

    import ffmpeg
    import os
    import glob
    # 配置
    input_dir = "."  # 当前目录,可修改
    watermark_file = "logo.png"
    output_dir = "output_with_watermark"
    position = "main_w-overlay_w-10:main_h-overlay_h-10"  # 右下角
    # 创建输出目录
    os.makedirs(output_dir, exist_ok=True)
    # 支持的视频格式
    video_extensions = ["*.mp4", "*.avi", "*.mov", "*.mkv", "*.flv", "*.wmv"]
    video_files = []
    for ext in video_extensions:
        video_files.extend(glob.glob(os.path.join(input_dir, ext)))
    print(f"找到 {len(video_files)} 个视频文件,开始处理...")
    for video_path in video_files:
        print(f"正在处理: {os.path.basename(video_path)}")
        try:
            # 构建输出路径
            dir_name = os.path.dirname(video_path)
            base_name = os.path.basename(video_path)
            name, ext = os.path.splitext(base_name)
            output_path = os.path.join(output_dir, f"{name}_watermarked{ext}")
            # FFmpeg 处理
            input_video = ffmpeg.input(video_path)
            input_watermark = ffmpeg.input(watermark_file)
            # 叠加水印
            video = input_video.overlay(input_watermark, x=position.split(':')[0], y=position.split(':')[1])
            # 输出(保留音频编码)
            video = ffmpeg.output(video, output_path, **{'codec:a': 'copy'})
            ffmpeg.run(video, overwrite_output=True)
            print(f"完成: {os.path.basename(output_path)}")
        except Exception as e:
            print(f"处理 {video_path} 时出错: {e}")
    print("所有文件处理完毕!")

关键参数说明(用于自定义水印效果)

在 FFmpeg 命令的 -filter_complex "overlay=..." 部分,您可以调整:

  1. 位置

    • 10:10 → 左上角
    • main_w-overlay_w-10:10 → 右上角
    • 10:main_h-overlay_h-10 → 左下角
    • (main_w-overlay_w)/2:(main_h-overlay_h)/2 → 正中央
  2. 缩放水印大小(如果水印太大): 修改脚本中的 -filter_complex 部分为:

    -filter_complex "[1]scale=100:100[wm];[0][wm]overlay=10:10"

    这会将水印缩放到 100x100 像素。

  3. 透明度(如果不想太突兀):

    -filter_complex "[1]lut=a=val*0.5[wm];[0][wm]overlay=10:10"

    这会将水印透明度设置为 50%。

推荐操作流程

  1. 安装 FFmpeg(这是核心工具):

    • Windows:从 ffmpeg.org 下载,解压后将其 bin 目录添加到系统环境变量 PATH。
    • macOSbrew install ffmpeg
    • Linuxsudo apt install ffmpeg (Ubuntu/Debian)
  2. 测试单条命令: 在终端运行 ffmpeg -version,确认安装成功。

  3. 运行脚本: 将脚本文件放在视频文件夹根目录,按要求修改配置后运行。

这套方案无需安装任何付费软件,效率极高,如果您需要处理的是 字幕类型的文字水印(而非图片),或者需要 批量调整水印在不同视频中的位置,可以进一步说明,我可以提供相应的变体脚本。

抱歉,评论功能暂时关闭!