mpvプレーヤーをコンパイルする
mpvという名前の動画プレーヤーがある。かってVLCとしのぎを削ったmplayer/mplayer2の流れを汲むソフトだ。
筆者も長い間VLCを使ってきた。だが、ブルーレイディスクの再生時に音が途切れたりするのと、余計なファイルタイプまで開けると主張するのがうるさく、別のソフトを探していた。そこに現れたのがmpvである。
本稿では、そのmpvを利用するにあたってのコンパイル方法について述べる。(最終更新日:2024.12.21)
-
用意するもの
XcodeとCommand line Tools for Xcodeが必要である。
XcodeはMac App Storeから、
Command Line Tools for Xcode
は、ターミナル.appでxcode-select –install
を実行することでインストールできる。 -
ディスクイメージの作成
始めにディスクユーティリティを用いてmpv_compile
というボリューム名のディスクイメージを作る。容量は4GBもあれば十分である。 -
環境変数のセット
export VOLNAME=mpv_compile export TARGET="/Volumes/${VOLNAME}" export SRC="${TARGET}/src" export CMPL="${TARGET}/compile" export PATH=${TARGET}/bin:$PATH mkdir -p ${CMPL} mkdir -p ${SRC} export PKG_CONFIG_PATH=${TARGET}/lib/pkgconfig export LIBTOOL=`which glibtool` export LIBTOOLIZE=`which glibtoolize` #macOS Ctalina以降向け export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
git pullでvimエディタが開くのを防止(1回のみ)
echo 'export GIT_MERGE_AUTOEDIT=no' >> $HOME/.bash_profile && . $HOME/.bash_profile
-
pkg-configのコンパイル&インストール
cd ${SRC} curl -LO https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz cd ${CMPL} tar xf ${SRC}/pkg-config-0.29.2.tar.gz cd pkg-config-0.29.2 ./configure --with-internal-glib make && sudo make install
-
nasmのコンパイル&インストール(ffmpeg, libass等のコンパイルに用いる)
cd ${SRC} rm nasm-* curl -LO https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.xz cd ${CMPL} rm -fr nasm-* tar xf ${SRC}/nasm-2.16.03.tar.xz cd nasm-2.16.03 ./configure --prefix=/usr/local make && sudo make install
-
GNU M4のコンパイル&インストール(autocoonfのコンパイルに用いる)
cd ${SRC} curl -LO https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz cd ${CMPL} tar xf ${SRC}/m4-1.4.19.tar.xz cd m4-1.4.19 ./configure make && sudo make install
-
autoconfのコンパイル&インストール(fribidiのコンパイルに用いる)
cd ${SRC} curl -LO https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz cd ${CMPL} tar xf ${SRC}/autoconf-2.72.tar.xz cd autoconf-2.72 ./configure make && sudo make install
-
automakeのコンパイル&インストール(fribidiのコンパイルに用いる)
cd ${SRC} curl -LO https://ftp.gnu.org/gnu/automake/automake-1.17tar.xz cd ${CMPL} tar xf ${SRC}/automake-1.17.tar.xz cd automake-1.17 ./configure make && sudo make install
-
libtoolのコンパイル&インストール(fribidiのコンパイルに用いる)(更新)
cd ${SRC} curl -LO curl -LO https://repo.jing.rocks/gnu/libtool/libtool-2.5.4.tar.xz cd ${CMPL} tar xf ${SRC}/libtool-2.5.4.tar.xz cd libtool-2.5.4 ./configure --program-prefix=g make && sudo make install
-
python3のインストール(mpvのコンパイルに用いる)(更新)
mpvは、バージョン0.33.0から、python2.xのサポートを止めた。よってpython3.xをインストールする必要がある。
このpythonは、起動ディスク直下のライブラリにpython.frameworkとしてインストールされ、呼び出しはpython3となる。
インストーラーパッケージの処理が終わった後、Finderで、
/Applications/Python 3.12
フォルダが開く。ここでフォルダ内のInstall Certificates.command
をダブルクリックして実行すること。なお、2024.12.21時点でのバージョンは3.13.1である。
-
mesonビルドシステムのインストール(mpvのコンパイルに用いる)(更新)
mesonビルドシステムはpip3を用いてインストールする。
pip3 install meson
アップデートの確認
pip3 list -o
アップデート
pip3 install -U meson
-
packagingモジュールのインストール(mpvのコンパイルに用いる)
python 3.12以降でmpvをコンパイルする際に必要である。packagingモジュールはpip3を用いてインストールする。
pip3 install packaging
アップデートの確認
pip3 list -o
アップデート
pip3 install -U packaging
-
ninjaビルドシステムのインストール(mpvのコンパイルに用いる)
mesonビルドシステムに加えてninjaビルドシステムも必要である。
ダウンロードしたファイルを解凍するとできるninjaバイナリをパスが通っている場所(筆者は/usr/local/bin)に入れる。
なお、2024.12.21時点でのバージョンは1.12.1である。
Big Sur以降では、以下のコマンドを実行すること。
sudo xattr -dr com.apple.quarantine /usr/local/bin/ninja
-
libpngのコンパイル&インストール
cd ${SRC} rm libpng-* curl -LO http://prdownloads.sourceforge.net/libpng/libpng-1.6.44.tar.xz cd ${CMPL} rm -fr libpng-* tar xf ${SRC}/libpng-1.6.44.tar.xz cd libpng-1.6.44 ./configure --prefix=${TARGET} --disable-shared make && make install
-
freetypeの仮コンパイル&インストール
freetypeとharfBuzzは、お互いが依存しあっているので、まず、harfBuzzなしでfreetypeをビルドする。
cd ${SRC} rm freetype-* curl -LO https://download.savannah.gnu.org/releases/freetype/freetype-2.13.3.tar.xz cd ${CMPL} rm -fr freetype-* tar xf ${SRC}/freetype-2.13.3.tar.xz cd freetype-2.13.3 ./configure --prefix=${TARGET} --disable-shared --with-harfbuzz=no make && make install
-
harfBuzzのコンパイル&インストール
freetypeとharfBuzzは、お互いが依存しあっているので、次に、harfBuzzをfreetypeを含めてビルドする。
cd ${SRC} rm harfbuzz-* curl -LO https://github.com/harfbuzz/harfbuzz/releases/download/10.1.0/harfbuzz-10.1.0.tar.xz cd ${CMPL} rm -fr harfbuzz-* tar xf ${SRC}/harfbuzz-10.1.0.tar.xz cd harfbuzz-10.1.0 meson setup --prefix ${TARGET} \ --default-library static \ --buildtype=release build cd build ninja ninja install
-
freetypeのコンパイル&インストール
freetypeとharfBuzzは、お互いが依存しあっているので、今度は、harfBuzzありでfreetypeをビルドする。
cd ${CMPL}/freetype-2.13.3 ./configure --prefix=${TARGET} --disable-shared make clean make && make install
-
Expat XML Parserのコンパイル&インストール(更新)
cd ${SRC} rm expat-* curl -LO https://github.com/libexpat/libexpat/releases/download/R_2_6_4/expat-2.6.4.tar.xz cd ${CMPL} rm -fr expat-* tar xf ${SRC}/expat-2.6.4.tar.xz cd expat-2.6.4 ./configure --prefix=${TARGET} --disable-shared --enable-static make && make install
-
libuuidのコンパイル&インストール
fontconfigのコンパイルに必要である。
cd ${SRC} curl -LO http://sourceforge.net/projects/libuuid/files/libuuid-1.0.3.tar.gz cd ${CMPL} tar xf ${SRC}/libuuid-1.0.3.tar.gz cd libuuid-1.0.3 ./configure --prefix=${TARGET} --disable-shared --enable-static make && make install mv ${TARGET}/include/uuid/uuid.h ${TARGET}/include/uuid/uuid.h.bak
-
fontconfigのコンパイル&インストール
freetypeとexpatはfontconfigの依存ライブラリである。
cd ${SRC} rm fontconfig-* curl -LO https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.15.0.tar.xz cd ${CMPL} rm -fr fontconfig-* tar xf ${SRC}/fontconfig-2.15.0.tar.xz cd fontconfig-2.15.0 ./configure --prefix=${TARGET} --disable-shared --disable-docs --enable-static --with-add-fonts=/Library/Fonts,~/Library/Fonts make && make install
-
fribidiのコンパイル&インストール(更新)
新規インストールの場合
cd ${CMPL} git clone https://github.com/fribidi/fribidi.git cd fribidi ./autogen.sh ./configure --prefix=${TARGET} --disable-shared --enable-static make && make install
更新インストールの場合
cd ${CMPL}/fribidi git pull ./autogen.sh ./configure --prefix=${TARGET} --disable-shared --enable-static make clean make && make install
-
libassのコンパイル&インストール
fontconfigとFriBidiは、libassの依存ライブラリである。
cd ${SRC} rm libass-* curl -LO https://github.com/libass/libass/releases/download/0.17.3/libass-0.17.3.tar.xz cd ${CMPL} rm -fr libass-* tar xf ${SRC}/libass-0.17.3.tar.xz cd libass-0.17.3 ./configure --prefix=${TARGET} --disable-shared make && make install
-
libxml2のコンパイルとインストール
cd ${SRC} curl -LO curl -LO https://download.gnome.org/sources/libxml2/2.13/libxml2-2.13.5.tar.xz tar xf libxml2-2.13.5.tar.xz cd libxml2-2.13.5 ./configure --prefix=${TARGET} --without-python make && make install
-
libblurayのコンパイル&インストール
freetype、fontconfigとlibxml2はlibblurayの依存ライブラリである
cd ${SRC} rm libbluray-* curl -LO https://download.videolan.org/pub/videolan/libbluray/1.3.4/libbluray-1.3.4.tar.bz2 cd ${CMPL} rm -fr libbluray-* tar xf ${SRC}/libbluray-1.3.4.tar.bz2 cd libbluray-1.3.4 ./configure --prefix=${TARGET} --disable-shared --disable-bdjava-jar make && make install
-
libdav1dのコンパイルとインストール(更新)
CFLAGSのセット/解除は、Apple Silicon Macのみ(Rosetta 2?)
新規インストールの場合
cd ${CMPL} git clone https://code.videolan.org/videolan/dav1d.git cd dav1d mkdir -p build export CFLAGS="-arch arm64" meson setup --prefix ${TARGET} \ --default-library static \ --buildtype=release build cd build ninja ninja install unset CFLAGS
更新インストールの場合
cd ${CMPL}/dav1d git pull export CFLAGS="-arch arm64" meson setup --wipe --prefix ${TARGET} \ --default-library static \ --buildtype=release build cd build ninja ninja install unset CFLAGS
-
ffmpegのコンパイル&インストール(更新)
新規インストールの場合
cd ${CMPL} git clone git://source.ffmpeg.org/ffmpeg.git cd ffmpeg
更新インストールの場合
cd ${CMPL}/ffmpeg git pull make clean
configureとmake(共通)
./configure \ --prefix=${TARGET} \ --pkg-config-flags=--static \ --enable-libass \ --enable-libbluray \ --enable-libdav1d \ --disable-programs \ --disable-doc make && make install
-
libplaceboのコンパイル&インストール(更新)
libplaceboは、mpvから分離独立された必須モジュールである。新規インストールの場合
cd ${CMPL} git clone https://github.com/haasn/libplacebo.git cd libplacebo git submodule update --init export CFLAGS="-arch arm64" export CPPFLAGS="-arch arm64" meson setup --prefix ${TARGET} \ --default-library=static \ build cd build ninja ninja install unset CFLAGS unset CPPFLAGS
更新インストールの場合
cd ${CMPL}/libplacebo git pull git submodule update --init export CFLAGS="-arch arm64" export CPPFLAGS="-arch arm64" meson setup --wipe --prefix ${TARGET} \ --default-library=static \ build cd build ninja ninja install unset CFLAGS unset CPPFLAGS
-
luaスクリプト言語のコンパイルとインストール
(現行バージョンではなく、5.2.xを用いる)
luaはmpvビルドに必須ではない。yt-dlpと連携して、youtubeストリーミング動画を再生するために導入する。cd ${SRC} curl -LO https://www.lua.org/ftp/lua-5.2.4.tar.gz cd ${CMPL} tar xf ${SRC}/lua-5.2.4.tar.gz cd lua-5.2.4 make macosx install INSTALL_TOP=${TARGET}
mpvがluaパッケージを見つけられるようにlua.pcファイルを作成する。
cat >${TARGET}/lib/pkgconfig/lua.pc <<EOF prefix=/Volumes/mpv_compile exec_prefix=\${prefix} libdir=\${prefix}/lib/ includedir=\${prefix}/include Name: lua Description: lua Requires: Version: 5.2.4 Libs: -L\${libdir} -llua Cflags: -I\${includedir} EOF
-
luaだけでなくluaJITも必要である。よってluaJITをコンパイル&インストールする。(更新)
新規インストールの場合
git clone https://luajit.org/git/luajit.git cd luajit export MACOSX_DEPLOYMENT_TARGET=14.0 make PREFIX=${TARGET} make install PREFIX=${TARGET}
更新インストールの場合
cd ${CMPL}/luajit git pull export MACOSX_DEPLOYMENT_TARGET=14.0 make clean make PREFIX=${TARGET} make install PREFIX=${TARGET}
3行目、MACOSX_DEPLOYMENT_TARGETは、お使いのmacOSバージョンに合わせる。
ダイナミックローダブルライブラリの削除
rm -v ${TARGET}/lib/libluajit*dylib
-
mpvのコンパイルとインストール(更新)
git headまたは、安定版リリースを用いる。CFLAGS/CPPFLAGSおよび-Dswift-flagsのセットは、Apple Silicon Macのみ(Rosetta 2?)
安定版リリース Ver.0.39.0
cd ${SRC} rm v0.3* curl -LO https://github.com/mpv-player/mpv/archive/refs/tags/v0.39.0.tar.gz cd ${CMPL} rm -fr mpv-* tar xf ${SRC}/v0.39.0.tar.gz cd mpv-0.39.0 export CFLAGS="-arch arm64" export CPPFLAGS="-arch arm64" meson setup --prefix ${TARGET} \ --default-library=static \ -Dswift-flags="-target arm64-apple-macosx14.0" \ build
git head
新規インストールの場合
cd ${CMPL} git clone https://github.com/mpv-player/mpv.git cd mpv export CFLAGS="-arch arm64" export CPPFLAGS="-arch arm64" meson setup --prefix ${TARGET} \ --default-library=static \ -Dswift-flags="-target arm64-apple-macosx14.0" \ build
更新インストールの場合
cd ${CMPL}/mpv git pull export CFLAGS="-arch arm64" export CPPFLAGS="-arch arm64" meson setup --wipe --prefix ${TARGET} \ --default-library=static \ -Dswift-flags="-target arm64-apple-macosx14.0" \ build
ビルドとインストール(共通)
meson compile -C build meson install -C build
macOSアプリケーションバンドルパッケージの作成
meson compile -C build macos-bundle
出来上がったコマンドライン版のmpvは
${TARGET}/bin
に、GUI版のmpvは${TARGET}/compile/mpv/build
にある。筆者の場合、コマンドライン版は/usr/local/bin
に置いている。なお、確認の結果、mpvのコンパイルに用いるmesonビルドシステムのバージョン1.6.xには、依然として、コマンドライン版のmpvを
${TARGET}/bin
にインストールする際、mpvのファイル属性を変更してしまうバグがあると思われる。
これを避けるためには、${TARGET}/compile/mpv/build
にあるコマンドライン版のmpvを用いられたい。注意:
macOS 10.14 Mojave以降でアプリケーションバンドルを起動しようとすると、次のようなダイアログが出る。これを拒否せずに、システム環境設定のアクセシビリティ項目で許可する必要がある。
参考サイト
- mpv
- Compiling distro releases for macOS · mpv-player/mpv Wiki
- COMPILING MPV FOR MACOS X – SIMPLE THINGS
以上
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント
一通りやりましたが、
26のビルドとインストール meson compile -C buildの所で、fatal error: ‘uchardet.h’ file not foundと出てビルドが失敗してしまいます。
解決策をご提示いただけないでしょうか
kannagiさん、初めまして。xanadu6291です。
ご指摘の現象を経験していないので、何とも言えないのですが、エラーが出ているのが、
../misc/charset_conv.c:32:10: fatal error: ‘uchardet.h’ file not found
である場合、mpvのソースコード内miscフォルダに「charset_conv.c」というファイルがあり、このファイルに、「uchardet」がある場合は、そのヘッダーを参照すると書いてあります。
「uchardet」は、エンコーディングを検出するライブラリのようです。もしかして、ご自身で入れた覚えはありませんか?
ご返信ありがとうございます。解決できましたのでご報告をさせていただきます。
問題箇所はご指摘のとおりでしたが、別のMacで試したらうまくいけました。
最初はM2 ProのMac Miniでうまくいかず、M1 MaxのMacbook Proでは成功しました。
OSなどは全て最新にしてあります。環境は同じのはずなので、自分には理由はよく分かりません。
記事は大変分かりやすかったです。ありがとうございました。