Estoy intentando agregar una marca de agua a un video con FFmpeg. Tengo una compilación personalizada de FFmpeg que estoy creando con miras a mantener bajo el tamaño binario. Parece que he excluido la capacidad de FFmpeg de leer imágenes PNG/JPG en este proceso:
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
Lo que más me interesan son las imágenes PNG, pero pensé en probar también las JPG. Notarás que tengo --enable-encoder=png
y --enable-decoder=png
en mi configuración. Me di cuenta deen loque debería comprobar que tenía instalado zlib1g-dev (Ubuntu), lo cual hago. ¿Necesito decirle a FFmpeg que use esto en mi compilación?
De lo contrario, ¿qué códec me falta para incluir imágenes en FFmpeg?
Comando de marca de agua:
ffmpeg -y -i input.mp4 -i image.png -filter_complex "overlay=0:0" -codec:a copy -strict -2 output.mp4
Respuesta1
Debes proporcionar dos cosas:
- Las dependencias adecuadas
configure
Las opciones adecuadas
dependencias de decodificación
La decodificación PNG depende de la biblioteca zlib, por lo que debe instalarcualquier paquete que proporcione
zlib.h
antes de compilarffmpeg
.La decodificación JPEG no necesita bibliotecas externas adicionales.
configure
opciones
De forma predeterminada, no es necesario agregar ninguna opción de configuración para la decodificación PNG y JPEG.
Si utilizó alguna --disable-*
opción, como en la pregunta anterior, es posible que deshabilite los componentes necesarios para la decodificación PNG y JPEG. Si ese es el caso, es posible que deba agregar:
--enable-decoder=mjpeg,png
--enable-demuxer=image2
--enable-protocol=file
--enable-zlib
Asegúrese de que no --disable-*
se utilicen las siguientes opciones conflictivas que anulen cualquiera de estas opciones.