mpvプレーヤーをコンパイルする
mpvという名前の動画プレーヤーがある。かってVLCとしのぎを削ったmplayer/mplayer2の流れを汲むソフトだ。
筆者も長い間VLCを使ってきた。だが、ブルーレイディスクの再生時に音が途切れたりするのと、余計なファイルタイプまで開けると主張するのがうるさく、別のソフトを探していた。そこに現れたのがmpvである。
本稿では、そのmpvを利用するにあたってのコンパイル方法について述べる。(最終更新日:2025.12.27)
-
用意するもの
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/3.01/nasm-3.01.tar.xz cd ${CMPL} rm -fr nasm-* tar xf ${SRC}/nasm-3.01.tar.xz cd nasm-3.01 ./configure make && sudo make install -
GNU M4のコンパイル&インストール(autocoonfのコンパイルに用いる)
cd ${SRC} curl -LO https://ftp.gnu.org/gnu/m4/m4-1.4.20.tar.xz cd ${CMPL} tar xf ${SRC}/m4-1.4.20.tar.xz cd m4-1.4.20 ./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.18.1.tar.xz cd ${CMPL} tar xf ${SRC}/automake-1.18.1.tar.xz cd automake-1.18.1 ./configure make && sudo make install -
libtoolのコンパイル&インストール(fribidiのコンパイルに用いる)
cd ${SRC} 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.14
フォルダが開く。ここでフォルダ内のInstall Certificates.command
をダブルクリックして実行すること。なお、2025.12.27時点でのバージョンは3.14.2である。
-
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)に入れる。
なお、2025.12.27時点でのバージョンは1.13.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.53.tar.xz cd ${CMPL} rm -fr libpng-* tar xf ${SRC}/libpng-1.6.53.tar.xz cd libpng-1.6.53 ./configure --prefix=${TARGET} --disable-shared make && make install -
freetypeの仮コンパイル&インストール
freetypeとharfBuzzは、お互いが依存しあっているので、まず、harfBuzzなしでfreetypeをビルドする。
cd ${SRC} rm freetype-* curl -LO curl -LO https://download.savannah.gnu.org/releases/freetype/freetype-2.14.1.tar.xz cd ${CMPL} rm -fr freetype-* tar xf ${SRC}/freetype-2.14.1.tar.xz cd freetype-2.14.1 ./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/12.2.0/harfbuzz-12.2.0.tar.xz cd ${CMPL} rm -fr harfbuzz-* tar xf ${SRC}/harfbuzz-12.2.0.tar.xz cd harfbuzz-12.2.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.14.1 ./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_7_3/expat-2.7.3.tar.xz cd ${CMPL} rm -fr expat-* tar xf ${SRC}/expat-2.7.3.tar.xz cd expat-2.7.3 ./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://gitlab.freedesktop.org/api/v4/projects/890/packages/generic/fontconfig/2.17.1/fontconfig-2.17.1.tar.xz cd ${CMPL} rm -fr fontconfig-* tar xf ${SRC}/fontconfig-2.17.1.tar.xz cd fontconfig-2.17.1 ./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.4/libass-0.17.4.tar.xz cd ${CMPL} rm -fr libass-* tar xf ${SRC}/libass-0.17.4.tar.xz cd libass-0.17.4 ./configure --prefix=${TARGET} --disable-shared make && make install -
libxml2のコンパイルとインストール
cd ${SRC} rm libxml2-* curl -LO https://download.gnome.org/sources/libxml2/2.15/libxml2-2.15.1.tar.xz cd ${CMPL} rm -rf libxml2-* tar xf libxml2-2.15.1.tar.xz cd libxml2-2.15.1 ./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.4.0/libbluray-1.4.0.tar.xz cd ${CMPL} rm -rf libbluray-* tar xf ${SRC}/libbluray-1.4.0.tar.xz cd libbluray-1.4.0 export CFLAGS="-arch arm64" LDFLAGS="-L/usr/local/lib -lexpat -lfreetype -lfontconfig -lbz2 -lz -liconv" \ meson setup \ --prefix=${TARGET} \ --default-library=static \ -Dbdj_jar=disabled \ build ninja -C build ninja -C build install unset CFLAGS -
dav1dのコンパイルとインストール(更新)
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 cleanconfigureとmake(共通)
./configure \ --prefix=${TARGET} \ --pkg-config-flags=--static \ --enable-libass \ --enable-libbluray \ --enable-libdav1d \ --disable-programs \ --disable-doc make -j$(sysctl -n hw.ncpu) && make install -
littleCMS2のコンパイル&インストール
cd ${SRC} curl -LO https://github.com/mm2/Little-CMS/releases/download/lcms2.17/lcms2-2.17.tar.gz cd ${CMPL} tar xf ${SRC}/lcms2-2.17.tar.gz cd lcms2-2.17 ./configure \ --prefix ${TARGET} \ --disable-shared make && make install -
Shadercのコンパイル&インストール(追加)
新規インストールの場合
cd ${CMPL} git clone "https://github.com/google/shaderc.git" cd shaderc ./utils/git-sync-deps mkdir -p ../shaderc_build cd ../shaderc_build #GoogleTestをビルドしない。(DSHADERC_SKIP_TESTS) #https://www.reddit.com/r/vulkan/comments/ecnjn7/converting_shader_source_to_spirv_on_the_fly/ cmake -GNinja \ -DCMAKE_BUILD_TYPE=Release \ -DSHADERC_SKIP_COPYRIGHT_CHECK=True \ -DSHADERC_SKIP_TESTS=True \ ../shaderc ninja sudo ninja install更新インストールの場合
cd ${CMPL}/shaderc git pull ./utils/git-sync-deps mkdir -p ../shaderc_build cd ../shaderc_build #GoogleTestをビルドしない。(DSHADERC_SKIP_TESTS) #https://www.reddit.com/r/vulkan/comments/ecnjn7/converting_shader_source_to_spirv_on_the_fly/ cmake -GNinja \ -DCMAKE_BUILD_TYPE=Release \ -DSHADERC_SKIP_COPYRIGHT_CHECK=True \ -DSHADERC_SKIP_TESTS=True \ ../shaderc ninja sudo ninja install -
vulkan(Vulkan Loader及びVulkan Header)のコンパイルとインストール(追加)
新規インストールの場合
cd ${CMPL} git clone "https://github.com/KhronosGroup/Vulkan-Loader.git" git clone "https://github.com/KhronosGroup/Vulkan-Headers.git" export PKG_CONFIG="pkgconf" export CMAKE_GENERATOR="Ninja" export MACOSX_DEPLOYMENT_TARGET="26.0" cd Vulkan-Headers mkdir -p build cd build cmake \ -DCMAKE_BUILD_TYPE=Release \ .. cd ../ sudo cmake --install build cd ${CMPL}/Vulkan-Loader mkdir -p build cd build cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ -DSYSCONFDIR=/usr/local/etc \ .. cd ../ cmake --build build sudo cmake --install build unset PKG_CONFIG unset CMAKE_GENERATOR unset MACOSX_DEPLOYMENT_TARGET更新インストールの場合
export PKG_CONFIG="pkgconf" export CMAKE_GENERATOR="Ninja" export MACOSX_DEPLOYMENT_TARGET="26.0" cd ${CMPL}/Vulkan-Headers git pull mkdir -p build cd build cmake \ -DCMAKE_BUILD_TYPE=Release \ .. cd ../ sudo cmake --install build cd ${CMPL}/Vulkan-Loader mkdir -p build cd build cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ -DSYSCONFDIR=/usr/local/etc \ .. cd ../ cmake --build build sudo cmake --install build unset PKG_CONFIG unset CMAKE_GENERATOR unset MACOSX_DEPLOYMENT_TARGET -
MoltenVKのコンパイルとインストール(追加)
新規インストールの場合
cd ${CMPL} git clone "https://github.com/KhronosGroup/MoltenVK.git" cd MoltenVK ./fetchDependencies --macos make macos MVK_CONFIG_LOG_LEVEL=1 sed -i '' "s|./libMoltenVK|/usr/local/lib/libMoltenVK|g" Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json cat Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json sudo install -d /usr/local/{lib,etc/vulkan/icd.d} sudo install -vm755 Package/Latest/MoltenVK/dylib/macOS/libMoltenVK.dylib /usr/local/lib sudo install -vm644 Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json /usr/local/etc/vulkan/icd.d更新インストールの場合
cd ${CMPL}/MoltenVK git pull ./fetchDependencies --macos make macos MVK_CONFIG_LOG_LEVEL=1 sed -i '' "s|./libMoltenVK|/usr/local/lib/libMoltenVK|g" Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json cat Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json sudo install -d /usr/local/{lib,etc/vulkan/icd.d} sudo install -vm755 Package/Latest/MoltenVK/dylib/macOS/libMoltenVK.dylib /usr/local/lib sudo install -vm644 Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json /usr/local/etc/vulkan/icd.d -
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 \ -Dbuildtype=release \ -Db_lto=true \ -Db_lto_mode=thin \ -Dvulkan-registry="/usr/local/share/vulkan/registry/vk.xml" \ -Dvulkan=enabled \ -Dshaderc=enabled \ -Dxxhash=enabled \ -Dopengl=disabled \ -Dd3d11=disabled \ -Dglslang=disabled \ -Ddemos=false \ build meson compile -C build sudo meson install -C build unset CFLAGS unset CPPFLAGS更新インストールの場合
cd ${CMPL}/libplacebo git pull git submodule update --init export CFLAGS="-arch arm64" export CPPFLAGS="-arch arm64" meson \ setup \ --wipe \ -Dbuildtype=release \ -Db_lto=true \ -Db_lto_mode=thin \ -Dvulkan-registry="/usr/local/share/vulkan/registry/vk.xml" \ -Dvulkan=enabled \ -Dshaderc=enabled \ -Dxxhash=enabled \ -Dopengl=disabled \ -Dd3d11=disabled \ -Dglslang=disabled \ -Ddemos=false \ build meson compile -C build sudo meson install -C build 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=26.0 make PREFIX=${TARGET} make install PREFIX=${TARGET}更新インストールの場合
cd ${CMPL}/luajit git pull export MACOSX_DEPLOYMENT_TARGET=26.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.41.0
cd ${SRC} rm v0.3* rm v0.4* curl -LO https://github.com/mpv-player/mpv/archive/refs/tags/v0.41.0.tar.gz cd ${CMPL} rm -fr mpv-* tar xf ${SRC}/v0.41.0.tar.gz cd mpv-0.41.0 export CFLAGS="-arch arm64" export CPPFLAGS="-arch arm64" meson \ setup \ --prefix ${TARGET} \ --default-library=static \ -Dswift-flags="-target arm64-apple-macosx26.0" \ -Dbuildtype=release \ -Db_lto=true \ -Db_lto_mode=thin \ -Dgl=disabled \ buildgit 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-macosx26.0" \ -Dbuildtype=release \ -Db_lto=true \ -Db_lto_mode=thin \ -Dgl=disabled \ 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-macosx26.0" \ -Dbuildtype=release \ -Db_lto=true \ -Db_lto_mode=thin \ -Dgl=disabled \ buildビルドとインストール(共通)
meson compile -C build meson install -C buildmacOSアプリケーションバンドルパッケージの作成
meson compile -C build macos-bundle出来上がったコマンドライン版のmpvは
${TARGET}/bin
に、GUI版のmpvは${TARGET}/compile/mpv/build
にある。筆者の場合、コマンドライン版は/usr/local/bin
に置いている。なお、確認の結果、mpvのコンパイルに用いるmesonビルドシステムには、依然として、コマンドライン版の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などは全て最新にしてあります。環境は同じのはずなので、自分には理由はよく分かりません。
記事は大変分かりやすかったです。ありがとうございました。