2019年2月24日 星期日

[FFmpeg] build ffmpeg


  • 目的: 產生 FFmpeg binaries
    • FFmpeg: 主要做 encode/decode
    • FFprobe: 主要做 container及 metadata 的 parsing
    • FFplay: based on SDL 的 player, 主要做 display的動作
  • How to build
    • 同一般 linux project, configure->make->install
      • ./configure --prefix=/Users/hank/Projects/build/ffmpeg --enable-libx265 --enable-libx264 --enable-gpl
    • 值得注意的是 ffmpeg 主要搭配非常多 3rdparty libraries
      • demuxer
        • demuxer 可以理解成 container 的封裝格式, 諸如 dash, mpeg-TS, iso-bmff (mp4) 等格式, 可透過 ffmpeg -formats 或 ffmpeg --list-demuxers 查看
      • codec
        • codec 則可透過 ffmpeg -codecs 或 ffmpeg -encoders 或 ffmpeg --list decoders 查看.
          • e.g. x264(depends on nasm), x265, ...
      • filters
    • 而這邊則可以針對需要支援的 codecs / container 在 configure 階段進行 link
      • e.g. 3rdparty
        • codecs: x265, x264, aom
        • demuxer: dash
    • Q&A
      • ./configure 後, Tools 只有看到 ffmpeg, ffprobe, 卻沒有看到 ffplay
        • 那是因為 configure 的時候沒有找到 sdl2 library, 而 ffplay depends on sdl2
          • sudo port install libsdl2