Question FFmpeg - PNG / JPG - Données invalides trouvées lors du traitement des entrées


J'essaie d'ajouter un filigrane à une vidéo avec FFmpeg. J'ai une version personnalisée de FFmpeg que je crée en vue de réduire la taille binaire. Je semble avoir exclu la possibilité pour FFmpeg de lire des images PNG / JPG dans ce processus:

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

Je suis surtout intéressé par les images PNG, mais je pensais aussi essayer le format JPG. Vous remarquerez que j'ai --enable-encoder=png et --enable-decoder=png dans ma configuration j'ai remarqué sur SO que je devrais vérifier que j'avais zlib1g-dev (Ubuntu) installé, ce que je fais. Dois-je demander à FFmpeg de l'utiliser dans ma compilation?

Sinon, quel codec me manque-t-il pour inclure des images dans FFmpeg?

Commande de filigranage:

ffmpeg -y -i input.mp4 -i image.png -filter_complex "overlay=0:0" -codec:a copy -strict -2 output.mp4

3
2018-05-15 16:51


origine




Réponses:


Vous devez fournir deux choses:

  1. Les dépendances appropriées
  2. Le bon configure options

dépendances de décodage

  • Le décodage PNG dépend de la bibliothèque zlib. Vous devez donc installer quel que soit le forfait fourni zlib.h avant de compiler ffmpeg.

  • Le décodage JPEG ne nécessite aucune bibliothèque externe supplémentaire.

configure options

Par défaut, vous n'avez pas besoin d'ajouter d'options de configuration pour le décodage PNG et JPEG.

Si vous avez utilisé --disable-* les options, comme dans la question ci-dessus, peuvent désactiver les composants nécessaires au décodage PNG et JPEG. Si tel est le cas, vous devrez peut-être ajouter:

--enable-decoder=mjpeg,png
--enable-demuxer=image2
--enable-protocol=file
--enable-zlib

Assurez-vous qu'aucune suite de conflit --disable-* des options sont utilisées pour annuler l'une de ces options.


2
2018-05-15 18:34



Addition mineure: J'avais aussi besoin d'ajouter "--enable-filter = overlay". - Jon G
Avoir le même problème mais avec la sortie que j'ai résolue en ajoutant --enable-muxer = image2 - Shebuka