videowipe 实测:能自动检测的视频清洁引擎,字幕水印台标一次清

21 days ago

videowipe 实测:能自动检测的视频清洁引擎,字幕水印台标一次清

视频去水印的隐形成本:手动框选

用过视频去水印工具的人都知道流程有多繁琐:把视频拖进去,一帧一帧找到水印出现的位置,画个框,祈祷它全程都在同一个地方。但现实里的视频根本不是这样——字幕只出现在说话的段落,水印前 10 秒在左下角、后面跑到右上角,台标时隐时现。固定区域处理的结果就是:水印擦掉了,可那些没有水印的帧也被白白糊掉一块。

GitHub 上一个叫 videowipe 的开源项目想解决的就是这个问题:自动检测 + 时间感知。它先扫描整段视频,找出每一个字幕、水印、台标、时间戳,给每个目标单独建立"时间轨道",然后只擦除目标真正出现的那些帧。全程不用手动框选。

一、核心设计:时间感知的 remove/keep 轨道

videowipe 最特别的概念是 WipePlan(擦除计划)——一个纯 JSON 文件,里面每个检测目标是一条"轨道"(track),带四个关键信息:

  • actionremove(擦除)或 keep(保留)
  • segments:该目标出现的时间区间
  • mask:精确蒙版(存在独立的 .npz 侧车文件里,不允许手动编辑
  • source:绑定的源视频

这套设计的精髓在于"时间感知":一条字幕在第 5 秒出现、第 20 秒消失,它的轨道里就只记录这两个时间点之间的片段。执行擦除时,只有这些帧会被处理,同一区域在没有字幕的帧里保持原样。字幕被擦掉了,画面其他地方一点不受影响。

WipePlan 可以人工审查:用任何编辑器打开 JSON,把某条轨道的 action 从 remove 改成 keep,或者调整 segments 的时间范围,再重新执行。计划绑定源视频——拿这份计划去跑另一段视频会被直接拒绝,防止误用。

二、自动检测:多语言、四类目标、意图驱动

videowipe 的检测能力是它的另一个卖点:

  • 多语言文本检测:官方在中文、英文、韩文、缅甸语字幕上实测过,开箱即用;
  • 四类目标subtitle(字幕)、timestamp(时间戳)、watermark(水印)、logo(台标),默认全自动检测,也可以 --target 指定;
  • 区域限定--region 可以只检测顶部、底部、四个角落或中间区域;
  • 意图驱动--intent 支持自然语言描述清理目标(比如"只去掉右下角的 logo");
  • 本地 LLM 代理--agent 可以接入本地大模型 CLI(如 claude、codex)来自动决策意图选择。

检测精度也有三档:fast(24 帧粗检)、balanced(50 帧,默认)、sensitive(80 帧密集复查),后者会重新检查检测器给出的 remove 片段,减少漏网。

三、架构:SDK 优先,而不是又一个 GUI

videowipe 的架构思路和大多数去水印工具相反——核心是一个可复用的 Python 引擎 WipeEngine,CLI、本地 Web UI、Docker 镜像都只是这个引擎的"适配器"。

  • 创建一次 WipeEngine 实例,可以在整个批量任务中复用,模型只加载一次;
  • WipeEngine.run() 返回 WipeResult,出错抛出稳定的 WipeError 异常类型(无效输入、缺后端、取消、处理失败分开报);
  • 老的 process()remove_text() 入口保持向后兼容;
  • 不需要 LLM、不需要云服务,计划就是纯 JSON,任何编辑器或本地 agent 都能改。

要求是 Python 3.10+,推理后端 ONNX Runtime 或 PyTorch 二选一,底层用 opencv-python-headless(无显示服务器的容器里也能跑)。还没发布到 PyPI,需要从源码安装;模型权重首次运行时自动下载到 ~/.videowipe/weights/

四、修复模型:内置 STTN,外接 ProPainter

擦除部分,videowipe 默认内置 STTN(Video Inpainting Transformer,CPU 上的 ONNX 推理即可运行,无需 GPU)。想要更高质量,可以用 --external-command 接入任意第三方修复模型——命令收到 <视频> <蒙版> <输出目录> 三个参数,把成品视频放进输出目录即可。

官方对比测试(一段韩语+缅甸语双语字幕 MV,852×480,10 秒片段):

  • ProPainter(GPU fp16):画质更高;
  • STTN(CPU ONNX):内置默认,零 GPU 门槛。

注意 ProPainter 的代价:处理 480p 视频大约需要 16GB 显存,而且许可证是 NTU S-Lab License 1.0(非商用)

五、命令行速查

核心命令是 clean(完整流水线),常用参数:

参数作用默认
--target指定目标类型:subtitle/timestamp/watermark/logo,可重复自动检测全部
--region限定检测区域:top/bottom/四个角/center全部区域
--intent自然语言清理意图
--preview只输出检测结果,不执行修复
--plan执行已有的 wipe_plan.json
--confirm处理前展示检测到的目标并确认
--detect-modefast/balanced/sensitivebalanced
--external-command外接修复模型命令
-g, --gap每遍处理的分段长度,越大质量越高越慢200
-d, --dual输出并排对比视频

完整流程一句话:videowipe clean --target subtitle --target watermark input.mp4

六、适合谁用

videowipe 的价值在于把"人工框选 + 盲处理"变成了"自动检测 + 精准时间擦除":

  1. 搬运/二创作者:批量清理下载素材里的硬字幕和水印,多语言检测对海外素材尤其友好;
  2. 想做自动化管线的开发者:SDK-first 架构 + JSON 计划 + Python API,适合嵌进自己的批处理 worker;
  3. 追求可控性的用户:WipePlan 可审查可编辑,擦之前先看计划,比黑盒工具放心。

当然它也有门槛:需要 Python 环境,命令行操作,默认 STTN 的画质上限不如 ProPainter。但如果你想找的是一台"能自己找水印"的清洁引擎,而不是又一个人工框选工具,videowipe 是目前开源生态里思路最特别的一个。

Author
Admin
Category