A Universal Framework for AI Video Watermark Removal
DeMark-World is the evolution of SoraWatermarkCleaner. While its predecessor focused on Sora, DeMark-World is a "ready-to-roll" universal framework designed to detect and remove unwanted watermarks from any AI-generated video (Sora, Runway, Pika, Kling, etc.) with high fidelity and temporal consistency.
Prompt: a cat running in a forest.
| Sora2 |
sora2_cat_run_sora_watermark_removed_combined_10M.mp4 |
| Google Veo3.1 |
Veo3_Cat_Running_In_Forest_Video_sora_watermark_removed_combined_10M.mp4 |
| Ruanway Gen4 |
gen4_cat_run_sora_watermark_removed_combined_10M.mp4 |
Moving beyond just Sora v2 in SoraWatermarkCleaner, DeMark-World is engineered to handle watermarks from the latest generation of video models, including Google Gemini/Veo, Runway Gen-3/Gen-4, Pika, Kling, and Luma Dream Machine.
Prerequisites: You must have FFmpeg installed and added to your system PATH.
We use uv for project management. It is significantly faster and more reliable than pip/poetry.
-
Clone the repository
Bash
git clone https://github.com/linkedlist771/DeMark-World.git cd DeMark-World -
Install environment
# This creates the virtual environment and installs all dependencies uv sync -
Activate environment
# Linux/MacOS source .venv/bin/activate # Windows .venv\Scripts\activate
Note on Models: Detector weights and Inpainting models will be downloaded automatically to the cache directory upon the first run.
The easiest way to use DeMark-World is via the modern Streamlit interface.
Bash
streamlit run app.py
Then open your browser to http://localhost:8501.
You can integrate DeMark-World into your own pipelines easily.
Python
from pathlib import Path
from src.demark_world.core import DeMarkWorld
from src.demark_world.schemas import CleanerType
if __name__ == "__main__":
input_video = Path("resources/Veo3_Cat_Running_In_Forest_Video.mp4")
output_video: Path = Path("outputs/cleaned.mp4")
# Option 1: LaMa (Fast)
demarker = DeMarkWorld(cleaner_type=CleanerType.LAMA)
# Option 2: E2FGVI_HQ (High Quality + Time Consistent)
# demarker = DeMarkWorld(cleaner_type=CleanerType.E2FGVI_HQ)
demarker.run(input_video, output_video)
DeMark-World operates in a two-stage pipeline, it just works like in SoraWatermarkCleaner.
Distributed under the Apache 2.0 License. See LICENSE for more information.
If you find this project helpful in your research or work, please cite:
@misc{DeMark-World2025,
author = {linkedlist771},
title = {DeMark-World},
year = {2025},
url = {https://github.com/linkedlist771/DeMark-World}
}- For the incredible implementation of SOTA inpainting models.
- For the YOLO object detection framework.
💝 If you find this project helpful, please consider starring the repo!
