ffmpegコンパイルガイド

macOSでHomebrewを使わずにffmpegをコンパイル&インストールする方法を説明したい。(最終更新日:2025.04.02)

  1. 準備するもの
    XcodeCommand Line Tools for Xcodeをインストールする必要がある。

    XcodeはMac App Storeから、
    Command Line Tools for Xcodeは、ターミナル.appでxcode-select –installを実行することでインストールできる。

    /usr/includeディレクトリについて

    • macOS Mojaveの場合
      Command Line Tools for Xcodeをインストールしただけでは/usr/includeディレクトリが作られない。/Library/Developer/CommandLineTools/Packages/にある以下のパッケージをインストールすること。

      macOS_SDK_headers_for_macOS_10.14.pkg

    • macOS Catalina以降の場合
      /usr/includeディレクトリは存在しないだけでなく、作ることができない。(正確にはXcode内のSDK内にある)よってmacOS Catalina以降では、次のコマンドを実行する必要がある。

      export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"

      (Special Thanks to macOS 10.15 Catalinaで、”fatal error: ‘stdio.h’ file not found”が出てしまう!
      )

  2. 本ガイドについて
    本ガイドでは音声・映像関連ライブラリをできるだけ取り込むようにしてあるが、コンパイルする外部ライブラリを必要なものに絞り、最後のffmpegのコンフィギュアオプションを編集すれば、より少ない機能にすることもできる。

  3. ライブラリのインストール場所について
    音声・映像関連ライブラリは、デフォルトでインストールされる場所(/usr/local)にインストールしても特に問題はないのだが、大量のファイルが発生する。
    そこで、本ガイドではffmpegに関係するディスクイメージを作成して、そこにインストールすることにする。
    なお、本ガイドではffmpegとライブラリをstaticリンキングするので、ライブラリは一緒にインストールする必要はない。

    ディスクイメージのフォーマットは何でも良いが、筆者はディスク使用効率が良いスパースバンドル・ディスクイメージを利用した。(下図参照)


    ffmpegコンパイル&インストール用ディスクイメージの作成

  4. 注意
    この手順書で説明するffmpegは外部ライブラリによるaacエンコーダーを含むため、再配布は不可である。

  5. 補足
    ffplayを合わせてコンパイルする場合は、ffmpegのコンパイル&インストールの段階の前でffplayコンパイルのための追記事項を参照されたい。

  6. コンパイルとインストール
    ディスクイメージが出来上がったら、いよいよコンパイル&インストールである。準備項目、音声・映像関連ライブラリ、ffmpeg本体の順に作業を進める。(全てターミナル.appを用いる)

    準備項目 (開く)
    音声・映像関連ライブラリのコンパイル&インストール (開く)
    ffmpegのコンパイル&インストール (開く)
  7. 改訂履歴 (開く)
  8. 参考サイト (開く)

この投稿へのコメント

  1. hiska said on 2017年10月3日 at 5:59 PM

    いつもの更新、ありがとうございます。

    libcdioの場合、
    githubからclone直後は、./configureが不在なので、
    ./autogen.sh –prefix=${TARGET} –disable-cxx –disable-example-progs –disable-shared
    が必要でした。

    • xanadu6291 said on 2017年10月3日 at 8:07 PM

      ご指摘ありがとうございます。
      うっかりしていて自分の作業記録から見落としました。
      ご指摘内容に添い、修正いたしました。

  2. hiska said on 2018年5月13日 at 7:31 PM

    いつも更新ありがとうございます。

    y4mファイルのダウンロードするところに、reCAPTCHA認証が入った様で、
    curl -LO http://media.xiph.org/video/derf/y4m/sintel_trailer_2k_480p24.y4m
    で正しいファイルがダウンロード出来なくなりました。
    reCAPTCHAをスキップできなければブラウザーでダウンロードするしかないでしょうか。

    もう一つ、別件ですが、
    今回High Sierraで始めてのコンパイルですし、まだ原因を調べているところですが、
    libass-0.14.0のコンパイルによく分からないエラーが出るんですね。。。。
    回避方法をご存知でしょうか?

    libass-0.14.0 hiska$ make
    /Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive
    Making all in libass
    CC ass_coretext.lo
    In file included from ass_coretext.c:27:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ApplicationServices.framework/Headers/ApplicationServices.h:23:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:23:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/hfs/hfs_format.h:794:2: error: unknown type name ‘uuid_string_t’; did you
    mean ‘io_string_t’?
    uuid_string_t ext_jnl_uuid;
    ^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/device/device_types.h:89:16: note: ‘io_string_t’ declared here
    typedef char io_string_tÿ512¦;
    ^
    In file included from ass_coretext.c:27:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ApplicationServices.framework/Headers/ApplicationServices.h:23:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:23:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/hfs/hfs_format.h:796:20: error: use of undeclared identifier
    ‘uuid_string_t’
    char reservedÿJIB_RESERVED_SIZE¦;
    ^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/hfs/hfs_format.h:787:61: note: expanded from macro ‘JIB_RESERVED_SIZE’
    £define JIB_RESERVED_SIZE ((32*sizeof(u_int32_t)) – sizeof(uuid_string_t) – 48)
    ^
    2 errors generated.
    makeÿ2¦: *** ÿass_coretext.lo¦ Error 1
    makeÿ1¦: *** ÿall-recursive¦ Error 1
    make: *** ÿall¦ Error 2
    libass-0.14.0 hiska$

    • xanadu6291 said on 2018年5月14日 at 11:25 AM

      コメントありがとうございます。y4mの件、確認しました。ブラウザーで落とすしかないでしょうね。今ガイドを更新中ですので、それに反映させます。もう一件、libassの‘uuid_string_t’エラーは、私も昨晩(2018/5/13)確認しました。mvで対応し、fontconfig側も問題ないようです。これも更新するガイドに反映させます。

  3. hiska said on 2018年5月14日 at 8:23 AM

    昨夜コメントさせて頂いたlibass-0.14.0コンパイル時のuuid_string_t関連エラーの答えは以下のURLに書いていました。

    https://github.com/Homebrew/legacy-homebrew/issues/32587#issuecomment-56769620

    一時的に${TARGET}/include/uuidディレクトリを別名(自分は適当にuuid-0に)にmvしてからlibassのコンパイルが出来ました。

    • xanadu6291 said on 2018年5月14日 at 11:29 AM

      コメントありがとうございます。uuidはfontconfigが必要とするようですが、uuid.hは使っていないようです。取り敢えず、私は一時的でなく変更してみました。(今日中にガイドをアップします)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL