FFmpeg – PNG/JPG – Bei der Verarbeitung der Eingabe wurden ungültige Daten gefunden

FFmpeg – PNG/JPG – Bei der Verarbeitung der Eingabe wurden ungültige Daten gefunden

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=pngund --enable-decoder=pngin 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:

  1. Die richtigen Abhängigkeiten
  2. Die richtigen configureOptionen

Dekodieren von Abhängigkeiten

  • Die PNG-Dekodierung hängt von der zlib-Bibliothek ab. Sie müssen daher installierenwelches Paket auch immer bietetzlib.hvor dem Kompilieren ffmpeg.

  • Für die JPEG-Dekodierung sind keine zusätzlichen externen Bibliotheken erforderlich.

configureOptionen

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.

verwandte Informationen