Windows 11 批量给视频添加水印

前期准备

使用此操作方式前需要先安装 Python 程序,安装教程请阅读 Windows 11 应用商店安装 Python

同时需要安装 FFmpeg 程序,安装教程请阅读 Windows 11 安装 FFmpeg 最新版

电脑配置要求

系统软件要求:此程序因为使用到了英伟达独显的加速功能。因此在未安装英伟达独显的电脑上无法使用。(同时请将英伟达显卡驱动更新到最新版本)

编写代码

新建一个txt文本,将下方的代码复制进去后保存。并将文件名和后缀修改为 script.py

创建一张水印图片,并将图片的名称修改为 watermark.png

import os

# 获取当前工作目录
current_folder = os.getcwd()

# 指定水印文件路径
watermark_file = "watermark.png"

# 支持的视频格式
supported_formats = ('.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv', '.webm', '.ts', '.rm', '.rmvb')

# 创建水印子文件夹
output_folder = os.path.join(current_folder, "watermark")
os.makedirs(output_folder, exist_ok=True)

# 获取当前目录中所有视频文件的绝对路径
video_files = [os.path.join(current_folder, f) for f in os.listdir(current_folder) if f.endswith(supported_formats)]

# 循环处理每个视频文件
for video_file in video_files:
    try:
        input_video_path = video_file
        intermediate_path = None

        # 如果是 .ts 文件,先转换为中间格式
        if input_video_path.endswith('.ts'):
            intermediate_path = os.path.join(output_folder, os.path.splitext(os.path.basename(video_file))[0] + "_intermediate.mp4")
            if not os.path.exists(intermediate_path):
                conversion_command = f'ffmpeg -i "{input_video_path}" -c:v copy -c:a copy "{intermediate_path}"'
                os.system(conversion_command)
            input_video_path = intermediate_path  # 使用转换后的路径

        output_video_path = os.path.join(output_folder, os.path.basename(video_file))

        # 获取视频的宽度和高度
        video_info_command = f'ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of default=noprint_wrappers=1:nokey=1 "{input_video_path}"'
        width_height = os.popen(video_info_command).read().strip().split('\n')
        if len(width_height) != 2:
            print(f"无法获取视频 {input_video_path} 的宽度和高度,跳过此视频。")
            continue
        video_width, video_height = int(width_height[0]), int(width_height[1])

        # 获取水印图片的宽度和高度
        watermark_info_command = f'ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of default=noprint_wrappers=1:nokey=1 "{watermark_file}"'
        width_height = os.popen(watermark_info_command).read().strip().split('\n')
        if len(width_height) != 2:
            print(f"无法获取水印图片 {watermark_file} 的宽度和高度,跳过此视频。")
            continue
        watermark_width, watermark_height = int(width_height[0]), int(width_height[1])

        # 计算缩放比例,使得水印图片的宽度不超过视频宽度的 1/4
        if video_width > video_height:  # 横屏视频
            scale_factor = min(1, video_width / (4 * watermark_width))
        else:  # 竖屏视频
            scale_factor = min(1, video_height / (10 * watermark_height))

        # 构建 ffmpeg 命令,添加缩放滤镜,并设置比特率和帧率
        ffmpeg_command = (
            f'ffmpeg -analyzeduration 100M -probesize 50M -i "{input_video_path}" -i "{watermark_file}" '
            f'-filter_complex "[1:v]scale=iw*{scale_factor}:ih*{scale_factor}[watermark];'
            f'[0:v][watermark]overlay=W-w-10:H-h-10" -c:v hevc_nvenc -b:v 2M -r 25 -preset fast "{output_video_path}"'
        )

        # 执行 ffmpeg 命令
        os.system(ffmpeg_command)

        # 删除中间文件
        if intermediate_path and os.path.exists(intermediate_path):
            os.remove(intermediate_path)

    except Exception as e:
        print(f"处理视频 {input_video_path} 时发生错误:{e}")
        continue

print("水印添加完成!")

input('程序执行成功,按任意键退出:')

操作展示

将视频,程序,与水印放在同一目录下

在需要添加水印的视频文件夹路径输入 CMD 后回车用于打开 CMD

在执行窗口中输入 python 并将 script.py 拖入执行窗口, 和如下命令行相同即可

python C:\Users\losto\OneDrive\桌面\添加水印脚本\script.py

回车后即可开始运行程序

水印在视频右下角

更新说明

  • 12/13/2024
    修复了无法给 .ts 文件添加水印的问题
资源下载
下载地址1立即下载
常见问题
123盘资源下载
本站提供 123云盘 资源链接
可无登入直接下载
安全声明
如文章内提供下载内容
此内容可能为执行脚本,软件,图像或Ai模型
所有内容均经过病毒查杀,可放心下载
免责声明
因模型可能包含 NSFW 内容,请不要将模型用于非法用途
本站点只提供模型下载,不参与制作者图片生成
因制作者生成图片造成的违法问题与本站无关
0

评论0

没有账号?注册  忘记密码?