FFmpeg - PNG / JPG - при обработке ввода найдены неверные данные

6441
Jon G

Я пытаюсь добавить водяной знак в видео с помощью 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 
3

1 ответ на вопрос

2
LordNeckbeard

Вам нужно предоставить две вещи:

  1. Правильные зависимости
  2. Правильные configureварианты

зависимости декодирования

  • Декодирование PNG зависит от библиотеки zlib, поэтому перед компиляцией необходимо установить любой пакет, который предоставляетzlib.hffmpeg .

  • Для декодирования JPEG не требуются дополнительные внешние библиотеки.

configure опции

По умолчанию вам не нужно добавлять какие-либо параметры конфигурации для декодирования PNG и JPEG.

Если вы использовали какие-либо --disable-*параметры, например, в приведенном выше вопросе, они могут отключить компоненты, необходимые для декодирования PNG и JPEG. Если это так, то вам может потребоваться добавить:

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

Убедитесь, что не используются следующие конфликтующие --disable-*параметры, которые отменят любой из этих параметров.

Незначительное добавление: мне нужно было добавить "--enable-filter = overlay". Jon G 8 лет назад 0
Имея аналогичную проблему, но с выводом я решил, добавив --enable-muxer = image2 Shebuka 8 лет назад 1

Похожие вопросы