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-*使用以下衝突選項來取消任何這些選項。

相關內容