Estou tentando adicionar uma marca d'água a um vídeo com FFmpeg. Eu tenho uma versão personalizada do FFmpeg que estou criando com o objetivo de manter o tamanho do binário baixo. Parece que excluí a capacidade do FFmpeg de ler imagens PNG/JPG neste processo:
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
Estou mais interessado em imagens PNG, mas pensei em tentar JPG também. Você notará que tenho --enable-encoder=png
e --enable-decoder=png
na minha configuração. Percebiem SOque devo verificar se tenho o zlib1g-dev (Ubuntu) instalado, o que eu faço. Preciso dizer ao FFmpeg para usar isso na minha compilação?
Caso contrário, qual codec estou faltando para incluir imagens no FFmpeg?
Comando de marca d’água:
ffmpeg -y -i input.mp4 -i image.png -filter_complex "overlay=0:0" -codec:a copy -strict -2 output.mp4
Responder1
Você precisa fornecer duas coisas:
- As dependências adequadas
- As
configure
opções adequadas
dependências de decodificação
A decodificação PNG depende da biblioteca zlib, então você precisa instalarqualquer pacote fornece
zlib.h
antes de compilarffmpeg
.A decodificação JPEG não precisa de bibliotecas externas adicionais.
configure
opções
Por padrão, você não precisa adicionar nenhuma opção de configuração para decodificação PNG e JPEG.
Se você usou alguma --disable-*
opção, como na pergunta acima, ela pode desativar os componentes necessários para a decodificação de PNG e JPEG. Se for esse o caso, talvez seja necessário adicionar:
--enable-decoder=mjpeg,png
--enable-demuxer=image2
--enable-protocol=file
--enable-zlib
Certifique-se de que nenhuma --disable-*
opção conflitante a seguir seja usada, o que cancelará qualquer uma dessas opções.