FFmpeg - PNG / JPG - 입력 처리 중 잘못된 데이터가 발견되었습니다.

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

다음 두 가지를 제공해야 합니다.

  1. 적절한 종속성
  2. 적절한 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-*이러한 옵션을 취소하는 다음과 같은 충돌 옵션이 사용되지 않았는지 확인하십시오 .

관련 정보