FFmpeg - PNG / JPG - при обработке ввода найдены неверные данные
Я пытаюсь добавить водяной знак в видео с помощью 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-*
используются параметры, которые отменяют любой из этих параметров.