FFmpeg Video Watermark Remover

使用 ffmpeg delogo 滤镜去除视频中的固定或动态水印,支持多段分割处理。

已扫描
适合谁
视频编辑初学者、自媒体内容创作者
不适合谁
需要处理复杂 AI 水印的用户、追求完美无痕修复的高级用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @ozzylennon/ffmpeg-video-watermark-remover

Skill 说明

命令、参数、文件名以原文为准

视频水印去除工具

使用 ffmpeg 的 delogo 滤镜从视频中移除水印/Logo/文字叠加层。

核心逻辑

步骤 1:提取样本帧

以每秒间隔提取帧,用于定位水印位置:

for t in 1 2 3 4 5; do
  ffmpeg -y -ss 00:00:0$t -i "$INPUT" -frames:v 1 "/tmp/wm_frame_$t.jpg" 2>/dev/null
done

步骤 2:通过视觉模型分析

使用 image 工具分析样本帧,获取以下信息:

  • 水印的精确位置(如左上角、右下角等)
  • 像素范围坐标:针对 WxH 分辨率视频的 x, y, width, height
  • 水印在所有帧中是否位置固定(静态)或移动(动态)

步骤 3:构建分割策略

*静态水印*(位置始终不变):

  • 对整个视频执行一次 delogo 处理

*动态水印*(在特定时间点位置发生变化):

  • 识别分段边界(例如:0-3.5秒位于右下角,3.5秒后位于左侧边缘)
  • 对每个时间段分别处理,使用对应的 delogo 坐标
  • 将各段结果拼接回一起

步骤 4:处理并验证

# 单一段落处理
ffmpeg -y -i "$INPUT" -vf "delogo=x=$X:y=$Y:w=$W:h=$H" -c:a copy "$OUTPUT"

# 多段处理
# 对每段分别使用 -ss/-t 提取,再进行拼接

在最终交付前,使用视觉模型对每段处理结果进行验证。

关键参数

参数描述
x, y水印区域左上角坐标
w, h水印区域的宽度和高度
INPUT输入视频路径
OUTPUT输出视频路径

获取精确坐标的方法:

  • 视觉模型返回的是 0-1000 范围内的归一化坐标 —— 需转换为实际像素值
  • 例如:对于 720x1280 分辨率视频,actual_x = normalized_x * width / 1000
  • 始终在检测到的区域基础上增加 5-10 像素的填充,确保完全覆盖

动态水印分段处理

当水印在不同位置间切换时:

  1. 识别切换点 — 记录哪些帧中水印位于哪个位置
  2. 创建分段 — 每次位置变化即为新的分段边界
  3. 分别处理每段 — 为每个时间段应用对应的 delogo 坐标
  4. 拼接输出 — 使用 ffmpeg 的 concat 功能,通过清单文件合并:
   file 'seg1.mp4'
   file 'seg2.mp4'
   ffmpeg -y -f concat -safe 0 -i concat.txt -c copy output.mp4

示例分段:

分段时间范围水印位置
10-3.5s右下角 (x=540, y=1195, w=165, h=55)
23.5-5s左侧边缘 (x=30, y=480, w=160, h=210)

多个水印处理

若多个水印同时存在(如角落 Logo + 用户名标签):

  • 明确用户希望移除哪些水印,保留哪些
  • 在同一 -vf 字符串中添加多个 delogo 过滤器:
  -vf "delogo=x=540:y=1195:w=165:h=55,delogo=x=30:y=480:w=160:h=210"

输出交付

  • 保存至 /root/.openclaw/workspace/downloads/
  • 使用 message 工具发送,设置 media 参数
  • 在最终交付前向用户确认

局限性

  • delogo 会用模糊或平均化的图像填充区域 —— 适用于简单或静态背景
  • 半透明水印、复杂 AI 生成水印,以及在纹理背景上移动的水印可能仍残留痕迹
  • 本技能不支持 AI 内补绘制(内容感知填充)—— 若 delogo 处理结果不理想,请告知用户,并建议使用内补绘制流程作为替代方案
O
@ozzylennon

已收录 1 个 Skill

相关推荐