videowipe Review: An Auto-Detecting Video Cleanup Engine for Subtitles, Watermarks, and Logos

21 days ago

videowipe Review: An Auto-Detecting Video Cleanup Engine for Subtitles, Watermarks, and Logos

The Hidden Cost of Video Watermark Removal: Manual Masking

Anyone who has used video watermark removal tools knows the drill: drag the video in, scrub through frames to find where the mark appears, draw a box, and pray it stays in one place for the whole clip. Real videos don't work that way — subtitles appear only during spoken segments, a watermark sits bottom-left for the first 10 seconds then jumps to top-right, a station logo fades in and out. Fixed-region processing means you erase the watermark and also blur out frames that never had one.

An open-source project called videowipe on GitHub targets exactly this: auto-detection + time-awareness. It scans the whole video, finds every subtitle, watermark, logo, and timestamp, builds an individual time track for each target, and then only erases the frames where that target actually appears. No manual box-drawing at all.

1. Core Design: Time-Aware Remove/Keep Tracks

videowipe's most distinctive concept is the WipePlan — a plain JSON file where every detected target is a track carrying four pieces of information:

  • action: remove or keep
  • segments: the time ranges where the target appears
  • mask: the precise mask (stored in a sidecar .npz file — must not be edited)
  • source: the video it's bound to

The magic is time-awareness: a subtitle that appears at second 5 and disappears at second 20 gets a track recording only that window. When execution runs, only those frames are processed — the same screen region stays untouched in frames without the subtitle. The subtitle is gone; the rest of the picture is untouched.

WipePlans are reviewable and editable: open the JSON in any editor, flip a track's action from remove to keep, adjust segment ranges, then re-execute. The plan is bound to its source video — executing it against a different video is rejected outright.

2. Auto-Detection: Multilingual, Four Target Types, Intent-Driven

Detection is videowipe's other headline feature:

  • Multilingual text detection: officially tested on Chinese, English, Korean, and Burmese subtitles, works out of the box;
  • Four target types: subtitle, timestamp, watermark, logo — auto-detect everything by default, or pin targets with --target;
  • Region limiting: --region restricts detection to top, bottom, any corner, or center;
  • Intent-driven: --intent accepts natural-language cleanup goals (e.g., "only remove the bottom-right logo");
  • Local LLM agent: --agent can hook a local LLM CLI (claude, codex) to automate intent selection.

Detection sensitivity comes in three tiers: fast (24 coarse frames), balanced (50 frames, default), and sensitive (80 frames with dense re-checking of detector-backed remove segments to catch stragglers).

3. Architecture: SDK-First, Not Another GUI

videowipe's architecture inverts the usual approach — the core is a reusable Python engine, WipeEngine, and the CLI, local Web UI, and Docker images are just adapters over it.

  • Create one WipeEngine instance and reuse it across a batch; the model loads once;
  • WipeEngine.run() returns a WipeResult; failures raise stable WipeError subclasses (invalid input, missing backends, cancellation, processing failures are distinguished);
  • Legacy process() and remove_text() entry points stay backwards-compatible;
  • No LLM or cloud required — plans are plain JSON, editable by any editor or local agent.

Requirements: Python 3.10+, ONNX Runtime or PyTorch as the inference backend, built on opencv-python-headless (runs in headless workers/containers). Not on PyPI yet — install from source; model weights auto-download to ~/.videowipe/weights/ on first run.

4. Inpainting: Built-In STTN, External ProPainter

For the erase step, videowipe ships STTN (Video Inpainting Transformer) by default — it runs on CPU via ONNX, no GPU required. For higher quality, --external-command lets you plug in any third-party inpainting model: the command receives <video> <mask> <output_dir> and must produce the output video there.

Official comparison (a bilingual Korean + Burmese subtitle music video, 852×480, 10-second clip):

  • ProPainter (GPU fp16): higher quality;
  • STTN (CPU ONNX): built-in default, zero GPU barrier.

ProPainter's cost: roughly 16GB VRAM for 480p video, and the NTU S-Lab License 1.0 is non-commercial.

5. CLI Quick Reference

The main command is clean (full pipeline). Key flags:

FlagPurposeDefault
--targetTarget types: subtitle/timestamp/watermark/logo, repeatableauto-detect all
--regionLimit region: top/bottom/corners/centerall regions
--intentNatural-language cleanup intent
--previewWrite detection artifacts only, no inpaintingoff
--planExecute an existing wipe_plan.json
--confirmShow detected targets and confirm before processingoff
--detect-modefast / balanced / sensitivebalanced
--external-commandExternal inpainting command
-g, --gapSegment length per pass; higher = better quality, slower200
-d, --dualSide-by-side original in outputoff

One-liner: videowipe clean --target subtitle --target watermark input.mp4.

6. Who Should Use It

videowipe turns "manual box-drawing + blind region erasing" into "auto-detection + precise time-aware erasing":

  1. Repurposers / second-screen creators: batch-clean hardcoded subtitles and watermarks from downloaded footage; multilingual detection is a real plus for foreign-language assets;
  2. Developers building automation pipelines: SDK-first architecture, JSON plans, and a Python API slot neatly into custom batch workers;
  3. Users who want control: WipePlans are reviewable and editable — inspect before you erase, unlike black-box tools.

The trade-offs are real: you need a Python environment, a command line, and the default STTN quality ceiling is below ProPainter. But if what you want is an engine that finds the watermarks itself rather than yet another manual masking tool, videowipe is the most distinctive idea in the current open-source ecosystem.

Author
Admin
Category