ffmpegとmpvでの共通外部ライブラリの共有
[主題]
ffmpegとmpvで共通に使用する外部ライブラリを、静的ライブラリから、動的ライブラリに変更する方法について述べる。(最終更新日:2024.09.29)
[背景]
筆者は、ffmpegとmpvを自前でビルドして使っている。両者は、どちらか一方のみビルドするケースを考慮して、両者で共通する外部ライブラリについても、それぞれ静的ライブラリとしてビルド、リンクしている。
だが、ffmpegとmpv両方ともビルドする際には、これらは、二度手間になる。そこで、本稿では、共通する外部ライブラリを、静的ライブラリから動的ライブラリに変更することで、ビルドの作業効率をアップすることを狙いとする。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sonoma 14.7
Xcode 16.0
CommandLine Tools for Xcode 16.0.0.0.1
[前提]
以下にリンクする記事に従って、ffmpegとmpvを自前ビルドしていることを前提とする。(Homebrew等のパッケージマネージャーを使っている場合は、対象外である)
[対象とするライブラリ]
以下のライブラリが変更の対象となる。
- libjpeg
- libpng
- freetype(仮)
- harfBuzz
- freetype(本番)
- expat XML Parser
- libuuid
- fontconfig
- fribidi
- libass
- libxml2
- libbluray
- libdav1d
- libplacebo
- libwebp(共有対象ではないが、共有の影響を受ける)
- libtiff(共有対象ではないが、共有の影響を受ける)
[手順]
それぞれconfigureスクリプト実行以降の手順を書く。(各ライブラリのバージョン管理は、本稿では行わない)
-
libjpegは以下のようにしてインストールする。
./configure make && sudo make install
-
libpngは以下のようにしてインストールする。
./configure make && sudo make install
-
freetype(仮)は以下のようにしてインストールする。
./configure --with-harfbuzz=no make && sudo make install
-
harfBuzzは以下のようにしてインストールする。
meson setup \ --buildtype=release \ build cd build ninja sudo ninja install
-
freetype(本番)は以下のようにしてインストールする。
sudo make uninstall make clean ./configure make && sudo make install
-
Expat XML Parserは以下のようにしてインストールする。
./configure make && sudo make install
-
libuuidは以下のようにしてインストールする。
./configure make && sudo make install cd /usr/local/include/uuid sudo mv uuid.h uuid.h.bak
-
fontconfigは以下のようにしてインストールする。
./configure --disable-docs --with-add-fonts=/Library/Fonts,~/Library/Fonts make && sudo make install
-
fribidiは以下のようにしてインストールする。
./autogen.sh make && sudo make install
-
libassは以下のようにしてインストールする。
./configure make && sudo make install
-
libxml2は以下のようにしてインストールする。
./configure --without-python make && sudo make install
-
libblurayは以下のようにしてインストールする。
./configure --disable-bdjava-jar make && sudo make install
-
dav1dは以下のようにしてインストールする。
CFLAGSのセット/アンセットは、Rosetta2をインストールしたAapple Silicon Macのみ。export CFLAGS="-arch arm64" meson setup --wipe \ --buildtype=release \ build cd build ninja sudo ninja install unset CFLAGS
-
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
-
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
-
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
この投稿へのコメント