Ich versuche, einem Video mit FFmpeg ein Wasserzeichen hinzuzufügen. Ich habe eine benutzerdefinierte Version von FFmpeg erstellt, um die Binärgröße gering zu halten. Dabei habe ich anscheinend die Möglichkeit von FFmpeg ausgeschlossen, PNG-/JPG-Bilder zu lesen:
ffmpeg -i ../weather.png
ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --prefix=/home/user/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --bindir=/home/user/bin --enable-gpl --disable-doc --enable-yasm --disable-decoders --enable-decoder=mpeg4 --enable-decoder=aac --enable-decoder=h264 --enable-decoder=mpegvideo --enable-decoder=mpeg1video --enable-decoder=mpeg2video --enable-decoder=png --disable-encoders --enable-encoder=mpeg4 --enable-encoder=aac --enable-encoder=h264 --enable-encoder=libx264 --enable-encoder=mpeg1video --enable-encoder=mpeg2video --enable-encoder=png --disable-parsers --enable-parser=aac --enable-parser=mpeg4video --enable-parser=ac3 --enable-parser=h261 --enable-parser=h264 --enable-parser=vc1 --enable-parser=mpegvideo --disable-demuxers --enable-demuxer=aac --enable-demuxer=h264 --enable-demuxer=mpegvideo --enable-demuxer=m4v --enable-demuxer=mov --enable-demuxer=vc1 --enable-demuxer=mp4 --enable-demuxer=concat --disable-muxers --enable-muxer=h264 --enable-muxer=mpeg1video --enable-muxer=mpeg2video --enable-muxer=m4v --enable-muxer=mov --enable-muxer=vc1 --enable-muxer=md5 --enable-muxer=mp4 --enable-protocols --enable-indev=v4l --enable-indev=v4l2 --disable-filters --enable-filter=aresample --enable-filter=scale --enable-filter=movie --enable-avfilter --disable-indevs --enable-indev=lavfi --disable-outdevs --enable-hwaccels --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-symver --enable-network --enable-libx264 --enable-zlib
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 12.100 / 5. 12.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
../weather.png: Invalid data found when processing input
Ich interessiere mich hauptsächlich für PNG-Bilder, aber ich dachte, ich probiere auch mal JPG. Sie werden feststellen, dass ich --enable-encoder=png
und --enable-decoder=png
in meiner Konfiguration habe. Ich habe bemerktauf SOdass ich überprüfen sollte, ob ich zlib1g-dev (Ubuntu) installiert habe, was ich auch habe. Muss ich FFmpeg anweisen, dies bei meiner Kompilierung zu verwenden?
Welcher Codec fehlt mir sonst, um Bilder in FFmpeg einzubinden?
Wasserzeichenbefehl:
ffmpeg -y -i input.mp4 -i image.png -filter_complex "overlay=0:0" -codec:a copy -strict -2 output.mp4
Antwort1
Sie müssen zwei Dinge angeben:
- Die richtigen Abhängigkeiten
- Die richtigen
configure
Optionen
Dekodieren von Abhängigkeiten
Die PNG-Dekodierung hängt von der zlib-Bibliothek ab. Sie müssen daher installierenwelches Paket auch immer bietet
zlib.h
vor dem Kompilierenffmpeg
.Für die JPEG-Dekodierung sind keine zusätzlichen externen Bibliotheken erforderlich.
configure
Optionen
Standardmäßig müssen Sie keine Konfigurationsoptionen für die PNG- und JPEG-Dekodierung hinzufügen.
Wenn Sie --disable-*
Optionen wie in der obigen Frage verwendet haben, können diese Komponenten deaktivieren, die für die PNG- und JPEG-Dekodierung erforderlich sind. Wenn dies der Fall ist, müssen Sie möglicherweise Folgendes hinzufügen:
--enable-decoder=mjpeg,png
--enable-demuxer=image2
--enable-protocol=file
--enable-zlib
Stellen Sie sicher, dass keine der folgenden widersprüchlichen --disable-*
Optionen verwendet werden, die eine dieser Optionen aufheben.