Watermarking mit ffmpeg

  • Hallo,

    ich möchte gern in meine Encodingprozesse ein Watermarking einbringen. Im Netz habe ich dazu den Verweis auf eine Funktion namens vhook gefunden. Nachdem, was ich gelesen habe, scheint dies jedoch eine veraltete Funktion zu sein. Zudem ist sie wohl nicht für das Platzieren farbiger Logos gedacht.
    Gibt es unter ffmpeg eine Alternative?

  • soweit mit bekannt ist vhook die einzige Möglichkeit dies in ffmpeg zu tun, wichtig ist dabei, dass:
    1. das Bild die gleiche Auflösung hat wie das Video
    2. das Bild die HintergrundFarbe 808080

    Dann kann man mit:

    Code
    -vhook "Pfad zur watermark.dll*" "Pfad zum Bild"


    (* unter Linux läd man die watermark.so)
    das Logo einfügen.

    Wenn man einen ffmpeg build hat in den der vhook Support integriert ist und auch die entsprechende .dll/library hat sollte die eigentlich gehen.
    (Hab das nur mal vor Jahren gemacht um zu sehen ob es geht. ;))

    Ein Problem ist unter Windows, dass man einen shared build von ffmpeg braucht, da sich der vhook support wohl nicht statisch integrieren lässt.
    Das sinnigste wäre wohl ffmpeg&co selber unter MinGW(+Msys) zu bauen.
    (shared ffmpeg builds findet man z.B. bei: http://ffmpeg.arrozcru.org/autobuilds/, weiß aber nicht ob die vhook support haben und selbst wenn fehlt einem noch die watermark.dll)

    Cu Selur

    Ps.: Falls Du ffmpeg und die Libaries unter Windows selber bauen solltest würde ich mich über eine entsprechende Anleitung wie Du dies gemacht hast freuen. Falls Du einen Download findest wo jemand aktuelle shared builds mit watermarking support anbietet würde ich mich über entsprechende Infos freuen.

  • Danke für die Antwort. Ich nutze ffmpeg unter Linux, kann dir also bezüglich deines Windowsproblems nicht weiterhelfen.
    Momentan arbeite ich mit einer neueren Version von ffmpeg, da ist vhook nicht mehr dabei. Laut ffmpeg-Wiki arbeitet man derzeit an der neuen Library, scheinbar gibt es aber bis dahin keine andere Möglichkeit.
    Kann ich deshalb auch eine ältere Version nehmen, die codeclibraries jedoch gegen neuere austauschen?

  • Static build: Die ausführbare Datei braucht alle referenzierten Bibliotheken vorhanden und verfügbar, sonst startet sie gar nicht erst.

    Vorteil: Der Compiler macht das schon... evtl. wird gar nur eine Programmdatei erzeugt.
    Nachteil: Fehlt eine notwendige Bibliothek-Datei, geht gar nichts.
    __

    Dynamic/Shared build: Die ausführbare Datei startet erst mal relativ unabhängig von zusätzlichen Bibliotheken (über evtl. notwendige Laufzeit-Bibliotheken hinaus) und lädt diese dann, wenn sie benötigt werden. Das ermöglicht überhaupt erst die eigene Behandlung von Fehlern der Art, dass eine eigentlich erwartete Bibliothek doch fehlt, sowie ein Plugin-Konzept in der Art, dass Funktionen nur angeboten werden, wenn die dafür nötige Bibliothek verfügbar ist.

    Vorteil: sehr flexibel
    Nachteil: Programmierer muss sich um alles kümmern
    __

    Ein "shared ffmpeg" wird möglicherweise eine "libavcodec.so"-Bibliothek laden, statt alles in einer Programmdatei zu sammeln. Falls die API gleich bleibt, kann man also eventuell tauschen.

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten

    Einmal editiert, zuletzt von LigH (13. August 2009 um 15:02)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!