Ich entferne ein statisches Logo-Wasserzeichen, das bei kurzen MP4-Clips immer im gleichen festen Rechteck (z. B. in der unteren rechten Ecke) angezeigt wird.
Ziel:
Frames dekodieren → eine feste Maske anwenden → maskierten Bereich einfärben → Video neu kodieren
Ausgabe über Frames hinweg stabil halten (Flimmern vermeiden)
Eine schnelle Lösung bevorzugen Ausreichend für die Stapelverarbeitung
Problem
Das Frame-by-Frame-Inpainting funktioniert bei einzelnen Bildern „gut“, aber im Video flackert der Inpaint-Bereich, da die Rekonstruktion je nach Frame leicht variiert (insbesondere entlang von Kanten/Texturen).
Fragen
Was ist für die Entfernung eines Logos in einem festen Bereich der empfohlene Ansatz, um Flimmern zu reduzieren?
Gibt es eine bekannte Technik dazu? die Rekonstruktion zeitlich verbreiten (z. B. optische Flussführung, zeitliche Glättung)?
Wenn Sie nur OpenCV verwenden: Was ist ein minimaler technischer Ansatz (ohne Training eines Modells), um die Ergebnisse konsistent zu halten?
Beispiel: Soll ich auf einem Keyframe einfärben und dann den Patch mithilfe des optischen Flusses verfolgen/verzerren?
Gibt es eine FFmpeg-native Möglichkeit, dies besser zu machen als die Frame-Extraktion? (z. B. delogo + etwas), oder ist OpenCV der richtige Weg?
Ich bin mit einer praktischen Antwort einverstanden, auch wenn sie nicht perfekt ist, solange sie stabil und einigermaßen schnell ist.
Ich entferne ein statisches Logo-Wasserzeichen, das bei kurzen MP4-Clips immer im gleichen festen Rechteck (z. B. in der unteren rechten Ecke) angezeigt wird. Ziel: [list] [*]Frames dekodieren → eine feste Maske anwenden → maskierten Bereich einfärben → Video neu kodieren [*]Ausgabe über Frames hinweg stabil halten (Flimmern vermeiden) [*]Eine schnelle Lösung bevorzugen Ausreichend für die Stapelverarbeitung [/list] Eingabe-/Wasserzeicheninformationen [list] [*]Eingabe: H.264 MP4, 1080p, 30fps, Dauer ~10s [*]Wasserzeichenbereich (fest): x=1600, y=900, w=280, h=120 (Beispiel) [*]Das Logo ist größtenteils undurchsichtig, manchmal mit halbtransparenten Kanten [/list] Was ich versucht habe Ich habe FFmpeg verwendet, um Frames zu extrahieren, dann OpenCV, um einzelne Frames einzuzeichnen. [b]FFmpeg extrahiert Frames[/b]: [code]ffmpeg -i input.mp4 -vsync 0 frames/%06d.png [/code] [b]OpenCV inpaint (Python)[/b] [code]import cv2 import numpy as np
result = cv2.inpaint(img, mask, 3, cv2.INPAINT_TELEA) cv2.imwrite("out/000001.png", result) [/code] [b]FFmpeg neu kodieren[/b] [code]ffmpeg -framerate 30 -i out/%06d.png -c:v libx264 -pix_fmt yuv420p output.mp4 [/code] Problem Das Frame-by-Frame-Inpainting funktioniert bei einzelnen Bildern „gut“, aber im Video flackert der Inpaint-Bereich, da die Rekonstruktion je nach Frame leicht variiert (insbesondere entlang von Kanten/Texturen). Fragen [list] [*]Was ist für die Entfernung eines Logos in einem festen Bereich der empfohlene Ansatz, um Flimmern zu reduzieren?
Gibt es eine bekannte Technik dazu? die Rekonstruktion zeitlich verbreiten (z. B. optische Flussführung, zeitliche Glättung)? [*]Wenn Sie nur OpenCV verwenden: Was ist ein minimaler technischer Ansatz (ohne Training eines Modells), um die Ergebnisse konsistent zu halten?
Beispiel: Soll ich auf einem Keyframe einfärben und dann den Patch mithilfe des optischen Flusses verfolgen/verzerren? [*]Gibt es eine FFmpeg-native Möglichkeit, dies besser zu machen als die Frame-Extraktion? (z. B. delogo + etwas), oder ist OpenCV der richtige Weg? [/list] Ich bin mit einer praktischen Antwort einverstanden, auch wenn sie nicht perfekt ist, solange sie stabil und einigermaßen schnell ist.
Ich baue einen webbasierten Videoeditor, mit dem Benutzer Folgendes tun können:
Mehrere Videos hinzufügen
Bilder hinzufügen
Textüberlagerungen mit Hintergrundfarbe hinzufügen
Das Frontend sendet...
Ich habe eine Python -GUI für einen Media -Player geschrieben (eine gemeinsame Bibliothek, die ich von FFPlay in FFMPEG erstellt habe). Es verwendet die Wiederholungsverstärkung, um die Lautstärke so...
Ich versuche, eine WebM-Videodatei mit fluent-ffmpeg und @ffmpeg-installer/ffmpeg in einer Next.js 14-API-Route (unter Verwendung des App Routers) in MP4 zu konvertieren. Der gleiche Code...