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

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

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

[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sonoma 14.2.1
Xcode 15.2
CommandLine Tools for Xcode 15.1.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. libwebp(共有対象ではないが、共有の影響を受ける)

[手順]
それぞれ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は以下のようにしてインストールする。

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

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

                    ./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. 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.1 \
                    --with-giflibdir=${TARGET}/lib
                    make && install
                

[参考記事]

以上。

この投稿へのコメント

コメントはありません。

コメントを残す

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

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

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

トラックバック URL