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

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

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

[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sonoma 14.4.1
Xcode 15.3
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は以下のようにしてインストールする。

                    ./configure
                    make && sudo make 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