ffmpegとmpvでの共通外部ライブラリの共有

[主題]
ffmpegとmpvで共通に使用する外部ライブラリを、静的ライブラリから、動的ライブラリに変更する方法について述べる。(最終更新日:2024.07.05)

[背景]
筆者は、ffmpegmpvを自前でビルドして使っている。両者は、どちらか一方のみビルドするケースを考慮して、両者で共通する外部ライブラリについても、それぞれ静的ライブラリとしてビルド、リンクしている。
だが、ffmpegmpv両方ともビルドする際には、これらは、二度手間になる。そこで、本稿では、共通する外部ライブラリを、静的ライブラリから動的ライブラリに変更することで、ビルドの作業効率をアップすることを狙いとする。

[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sonoma 14.5
Xcode 15.4
CommandLine Tools for Xcode 15.3.0.0.1

[前提]
以下にリンクする記事に従って、ffmpegmpvを自前ビルドしていることを前提とする。(Homebrew等のパッケージマネージャーを使っている場合は、対象外である)

[対象とするライブラリ]
以下のライブラリが変更の対象となる。

  1. libjpeg
  2. libpng
  3. freetype(仮)
  4. harfBuzz
  5. freetype(本番)
  6. expat XML Parser
  7. libuuid
  8. fontconfig
  9. fribidi
  10. libass
  11. libxml2
  12. libbluray
  13. libdav1d
  14. libplacebo
  15. libwebp(共有対象ではないが、共有の影響を受ける)
  16. libtiff(共有対象ではないが、共有の影響を受ける)

[手順]
それぞれconfigureスクリプト実行以降の手順を書く。(各ライブラリのバージョン管理は、本稿では行わない)

  1. libjpegは以下のようにしてインストールする。

    ./configure
    make && sudo make install
  2. libpngは以下のようにしてインストールする。

    ./configure
    make && sudo make install
  3. freetype(仮)は以下のようにしてインストールする。

    ./configure --with-harfbuzz=no
    make && sudo make install
  4. harfBuzzは以下のようにしてインストールする。

    meson setup \
    --buildtype=release \
    build
    cd build
    ninja
    sudo ninja install
  5. freetype(本番)は以下のようにしてインストールする。

    ./configure
    make && sudo make install
  6. Expat XML Parserは以下のようにしてインストールする。

    ./configure
    make && sudo make install
  7. libuuidは以下のようにしてインストールする。

    ./configure
    make && sudo make install
    cd /usr/local/include/uuid
    sudo mv uuid.h uuid.h.bak
  8. fontconfigは以下のようにしてインストールする。

    ./configure  --disable-docs --with-add-fonts=/Library/Fonts,~/Library/Fonts
    make && sudo make install
  9. fribidiは以下のようにしてインストールする。

    ./autogen.sh
    make && sudo make install
  10. libassは以下のようにしてインストールする。

    ./configure
    make && sudo make install
  11. libxml2は以下のようにしてインストールする。

    ./configure --without-python
    make && sudo make install
  12. libblurayは以下のようにしてインストールする。

    ./configure --disable-bdjava-jar
    make && sudo make install
  13. dav1dは以下のようにしてインストールする。
    CFLAGSのセット/アンセットは、Rosetta2をインストールしたAapple Silicon Macのみ。

    export CFLAGS="-arch arm64"
    meson setup --wipe \
    --buildtype=release \
    build
    cd build
    ninja
    sudo ninja install
    unset CFLAGS
  14. libplaceboは以下のようにしてインストールする。

    export CFLAGS="-arch arm64"
    export CPPFLAGS="-arch arm64"
    meson setup --wipe \
    --buildtype=release
    build
    cd build
    ninja
    sudo ninja install
    unset CFLAGS
    unset CPPFLAGS
  15. libtiff
    libtiffはffmpegでのみリンクされ、共有対象ではない。しかし、configureスクリプトに渡す引数が、共有の影響を受ける。

    ./configure --prefix=${TARGET} --disable-shared \
    --with-jpeg-include-dir=/usr/local/include \
    --with-jpeg-lib-dir=/usr/local/lib
    make && make install
  16. libwebp
    libwebpはffmpegでのみリンクされ、共有対象ではない。しかし、configureスクリプトに渡す引数が、共有の影響を受ける。

    ./configure --prefix=${TARGET} --disable-shared \
    --with-jpegincludedir=/usr/local/include \
    --with-jpeglibdir=/usr/local/lib \
    --with-tiffincludedir=${TARGET}/include \
    --with-tifflibdir=${TARGET}/lib \
    --with-gifincludedir=${CMPL}/giflib-5.2.2 \
    --with-giflibdir=${TARGET}/lib
    make && make install

[参考記事]

以上。

この投稿へのコメント

コメントはありません。

コメントを残す

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

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

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

トラックバック URL