Я пытаюсь добавить водяной знак к видео с помощью FFmpeg. У меня есть пользовательская сборка FFmpeg, которую я создаю с целью уменьшить размер двоичного файла. Кажется, я исключил возможность FFmpeg читать изображения PNG / JPG в этом процессе:
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
Я в основном интересуюсь изображениями PNG, но подумал, что стоит попробовать и JPG. Вы заметите, что у меня в конфигурации есть --enable-encoder=png
и . Я заметил--enable-decoder=png
на SOчто я должен проверить, что у меня установлен zlib1g-dev (Ubuntu), что я и делаю. Нужно ли мне указывать FFmpeg использовать это в моей компиляции?
В противном случае, какой кодек мне не хватает для включения изображений в FFmpeg?
Команда для добавления водяного знака:
ffmpeg -y -i input.mp4 -i image.png -filter_complex "overlay=0:0" -codec:a copy -strict -2 output.mp4
решение1
Вам необходимо предоставить две вещи:
- Правильные зависимости
- Правильные
configure
варианты
декодирование зависимостей
Декодирование PNG зависит от библиотеки zlib, поэтому вам необходимо установитьлюбой пакет предоставляет
zlib.h
перед компиляциейffmpeg
.Для декодирования JPEG не требуются дополнительные внешние библиотеки.
configure
параметры
По умолчанию вам не нужно добавлять какие-либо параметры настройки для декодирования PNG и JPEG.
Если вы использовали какие-либо --disable-*
опции, например, в вопросе выше, они могут отключить компоненты, необходимые для декодирования PNG и JPEG. Если это так, то вам может потребоваться добавить:
--enable-decoder=mjpeg,png
--enable-demuxer=image2
--enable-protocol=file
--enable-zlib
Убедитесь, что не --disable-*
используются следующие конфликтующие параметры, которые могут аннулировать любой из этих параметров.