Seedance 2.5 est en ligne | Essayez-le dans le générateur vidéo →

wavespeed-ai/

Remove unwanted objects, people, or elements from videos while preserving quality; supports many formats and 10-minute files. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

ai-remover
Entrée

En attente

$0.1par exécution·~10 / $1

ExemplesTout voir

flower

compass

Modèles associés

README

WaveSpeedAI Video Object Remover

WaveSpeedAI Video Object Remover is a video inpainting model that removes unwanted objects, people, logos, and watermarks from your clips. You provide a video, a binary mask indicating the region to edit, and an optional text prompt that describes what should be removed. The model fills the masked area with temporally consistent background content, producing a clean, natural-looking result.

Key Features

  • Object / person / watermark removal from video
  • Mask-based control over the exact region to edit
  • Optional text prompt to clarify what should be removed
  • Temporally consistent inpainting to avoid flicker
  • Ideal for static overlays, logos, subtitles, and watermarks
  • Supports typical short-form and mid-length videos

Pricing

  • Minimum charge: $0.10 for any clip up to 5 seconds.
  • Effective rate: $0.02 per second for durations above 5 seconds, capped at 600 seconds (10 minutes).
  • Clips longer than 600 seconds are billed as if they were 600 seconds.

Example costs:

DurationTotal price
5 s$0.10
10 s$0.20
20 s$0.40
60 s$1.20
600 s$12.00

How to Use

  1. Upload your video.
  2. Prepare and upload a mask_image where the area to remove is white and everything else is black.
  3. (Optional) Enter a short prompt describing what to remove and the surrounding context.
  4. Submit the job.
  5. Review the preview and download the cleaned video from the WaveSpeedAI dashboard.

Tips for Best Results

  • Use a precise mask that closely hugs the unwanted object.
  • For static watermarks or corner logos, limit the mask to just that overlay area.
  • Keep clips reasonably short when editing fast motion or complex scenes.
  • If artifacts appear, try tightening the mask, shortening the clip, or simplifying the prompt.
  • It works better for removing static objects or watermarks. If the people in the video are moving too much, the effect may be greatly reduced.

Remove Anything Tool box:

  • Image Eraser – fast, general-purpose image inpainting that cleanly removes objects while preserving local texture and lighting.
  • BRIA Eraser – premium semantic eraser that intelligently understands scene context for high-fidelity, artifact-free edits.
  • Video Watermark Remover – temporally consistent video inpainting that removes logos and overlays without flicker across frames.
  • Image Watermark Remover – targeted watermark and logo cleaner optimized for text, corner badges, and overlay graphics.
Remarque :Ce site utilise des modèles d'IA fournis par des tiers. Les prix de la documentation sont indicatifs et peuvent être obsolètes. Le bouton Generate affiche une estimation ; le montant final de la tâche prévaut.

Video Eraser API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/video-eraser with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Video Eraser below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/video-eraser" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/video-eraser";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/wavespeed-ai/video-eraser", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Video Eraser API — Frequently asked questions

What is the Video Eraser API?

Video Eraser is a WaveSpeedAI model for object / watermark removal, exposed as a REST API on WaveSpeedAI. Remove unwanted objects, people, or elements from videos while preserving quality; supports many formats and 10-minute files. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Video Eraser API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/wavespeed-ai/video-eraser.

How much does Video Eraser cost per run?

Video Eraser starts at $0.10 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Video Eraser accept?

Key inputs: `prompt`, `video`, `mask_image`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/wavespeed-ai/video-eraser.

How long does Video Eraser take to generate?

Median end-to-end generation time on WaveSpeedAI is around 97 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Video Eraser outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Video Eraser | AI Background & Object Remover API on WaveSpeedAI