前期准备
使用此操作方式前需要先安装 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模型
所有内容均经过病毒查杀,可放心下载
此内容可能为执行脚本,软件,图像或Ai模型
所有内容均经过病毒查杀,可放心下载
免责声明
因模型可能包含 NSFW 内容,请不要将模型用于非法用途
本站点只提供模型下载,不参与制作者图片生成
因制作者生成图片造成的违法问题与本站无关
本站点只提供模型下载,不参与制作者图片生成
因制作者生成图片造成的违法问题与本站无关
评论0