mpv の設定

2025-09-03

mpv の特徴

mpv はフリー(フリーダム)のメディアプレーヤーで、次の特徴がある。

基本設定

アップスケーラーをインストール

# RAVU
# Google の超解像技術から着想を得たアップスケーラー。
#     私の環境では compute ディレクトリのものが最速だった。
# https://github.com/bjin/mpv-prescalers
wget https://raw.githubusercontent.com/bjin/mpv-prescalers/refs/heads/master/compute/ravu-lite-r3.hook
mkdir -p ~/.config/mpv/shaders
mv ravu-lite-r3.hook ~/.config/mpv/shaders/

mpv.conf を設定

mousepad ~/.config/mpv/mpv.conf

次の行を追加。詳しい説明についてはマニュアルを参照。

# ビデオ出力
vo=gpu-next
gpu-api=vulkan
hwdec=auto

# デフォルトのアップスケーラー
glsl-shaders="~~/shaders/ravu-lite-r3.hook"

# オーディオ出力
ao=pipewire

# 音声のみのファイルでもウィンドウを表示
force-window=yes

# 常にウィンドウを最大化
window-maximized=yes

# コンソールへのメッセージ出力を減らす
quiet=yes

モニターに超解像技術が搭載されている場合

モニターに超解像技術が搭載されている場合はオフにする。アップスケーラーの効果がわかりづらくなるので。
REGZA をモニターとして使用している場合は次のようにする。

質感リアライザーをオフにすると全体の色味が白っぽくなる。

アップスケーラーの効果を比較

効果を比較する際は元の画像を縦2倍以上にアップスケールしないと変化がわかりづらい。1080p動画をFHDモニターで表示しても、1倍表示なのでほとんど変化はない。
デフォルトのアップスケーラーは Bilinear だったが、2023年9月に Lanczos に変更されて品質が向上した。

アップスケーラーをインストール

# RAVU
# Google の超解像技術から着想を得たアップスケーラー。
#     私の環境では compute ディレクトリのものが最速だった。
# https://github.com/bjin/mpv-prescalers
wget https://raw.githubusercontent.com/bjin/mpv-prescalers/refs/heads/master/compute/ravu-lite-r2.hook
wget https://raw.githubusercontent.com/bjin/mpv-prescalers/refs/heads/master/compute/ravu-lite-r3.hook
wget https://raw.githubusercontent.com/bjin/mpv-prescalers/refs/heads/master/compute/ravu-lite-r4.hook
mkdir -p ~/.config/mpv/shaders
mv ravu-lite-r*.hook ~/.config/mpv/shaders/

# FSRCNNX
# CNN (畳み込みニューラルネットワーク) を使用した超解像アップスケーラー。
# https://github.com/igv/FSRCNN-TensorFlow/releases
wget https://github.com/igv/FSRCNN-TensorFlow/releases/download/1.1/FSRCNNX_x2_8-0-4-1.glsl
wget https://github.com/igv/FSRCNN-TensorFlow/releases/download/1.1/FSRCNNX_x2_16-0-4-1.glsl
mv FSRCNNX_x2_*.glsl ~/.config/mpv/shaders/

# SSimSuperRes
# https://gist.github.com/igv
wget https://gist.githubusercontent.com/igv/2364ffa6e81540f29cb7ab4c9bc05b6b/raw/15d93440d0a24fc4b8770070be6a9fa2af6f200b/SSimSuperRes.glsl
mv SSimSuperRes.glsl ~/.config/mpv/shaders/

# adaptive-sharpen
# https://gist.github.com/igv
wget https://gist.githubusercontent.com/igv/8a77e4eb8276753b54bb94c1c50c317e/raw/572f59099cd0e3eb5e321a6da0a3d90a7382e2dc/adaptive-sharpen.glsl
mv adaptive-sharpen.glsl ~/.config/mpv/shaders/

# NVScaler
# NVIDIA Image Scaling の移植。AMDでも使用できる。
# https://gist.github.com/agyild
wget https://gist.github.com/agyild/7e8951915b2bf24526a9343d951db214/raw/05f00864228871ffd157daa9beb2db8fa7412cfa/NVScaler.glsl
mv NVScaler.glsl ~/.config/mpv/shaders/

# SGSR
# Qualcomm Snapdragon Game Super Resolution (GSR) v1 の移植。
# https://gist.github.com/agyild
wget https://gist.githubusercontent.com/agyild/7715b6b1f38427839d58f80884902cab/raw/3255192a8d49af76bf41e9b40fdbcc5f9d9450da/SGSR.glsl
mv SGSR.glsl ~/.config/mpv/shaders/

# ArtCNN
# アニメコンテンツを対象としたアップスケーラー。
# https://github.com/Artoriuz/ArtCNN
wget https://raw.githubusercontent.com/Artoriuz/ArtCNN/refs/heads/main/GLSL/ArtCNN_C4F16.glsl
wget https://raw.githubusercontent.com/Artoriuz/ArtCNN/refs/heads/main/GLSL/ArtCNN_C4F32.glsl
mv ArtCNN_C4F*.glsl ~/.config/mpv/shaders/

# CuNNy
# CNN(畳み込みニューラルネットワーク)ベースのアップスケーラー。
# https://github.com/funnyplanter/CuNNy
wget https://raw.githubusercontent.com/funnyplanter/CuNNy/refs/heads/master/mpv/ds/CuNNy-fast-DS.glsl
wget https://raw.githubusercontent.com/funnyplanter/CuNNy/refs/heads/master/mpv/ds/CuNNy-4x12-DS.glsl
wget https://raw.githubusercontent.com/funnyplanter/CuNNy/refs/heads/master/mpv/soft/CuNNy-fast-SOFT.glsl
wget https://raw.githubusercontent.com/funnyplanter/CuNNy/refs/heads/master/mpv/soft/CuNNy-4x12-SOFT.glsl
mv CuNNy-*-*.glsl ~/.config/mpv/shaders/

# Anime4K
# 1080pアニメの4K化に最適化されたシェーダー。
#     本来はいくつかのシェーダーを組み合わせて使用するが、
#     標準の組み合わせだと色化けすることがあるので、
#     ここでは Anime4K_Upscale_Denoise_CNN_x2 のみを使用する。
# https://github.com/bloc97/Anime4K
wget https://raw.githubusercontent.com/bloc97/Anime4K/refs/heads/master/glsl/Upscale%2BDenoise/Anime4K_Upscale_Denoise_CNN_x2_S.glsl
wget https://raw.githubusercontent.com/bloc97/Anime4K/refs/heads/master/glsl/Upscale%2BDenoise/Anime4K_Upscale_Denoise_CNN_x2_M.glsl
wget https://raw.githubusercontent.com/bloc97/Anime4K/refs/heads/master/glsl/Upscale%2BDenoise/Anime4K_Upscale_Denoise_CNN_x2_L.glsl
mv Anime4K_Upscale_Denoise_CNN_x2_*.glsl ~/.config/mpv/shaders/

# ACNet
# Anime4KCPP によって実装されたCNNアルゴリズム。
# https://github.com/TianZerL/ACNetGLSL
wget https://raw.githubusercontent.com/TianZerL/ACNetGLSL/refs/heads/master/glsl/ACNet.glsl
mv ACNet.glsl ~/.config/mpv/shaders/

# FSR
# AMD FidelityFX Super Resolution v1.0.2 の移植。NVIDIAでも使用できる。
#     ソースのコメントによると、アップスケールできるのは最大で縦2倍まで。
#     それ以上はデフォルトのアップスケーラーが行う。
#     縦480から縦1080へのアップスケールには使えない。
# https://gist.github.com/agyild

アップスケーラーにショートカットキーを割り当てる

mousepad ~/.config/mpv/input.conf

次の行を追加。

# シェーダーの切り替え
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/ravu-lite-r3.hook"; show-text "ravu-lite-r3.hook"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/FSRCNNX_x2_8-0-4-1.glsl"; show-text "FSRCNNX_x2_8-0-4-1.glsl"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/SSimSuperRes.glsl"; show-text "SSimSuperRes.glsl"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/NVScaler.glsl"; show-text "NVScaler.glsl"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/SGSR.glsl"; show-text "SGSR.glsl"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/ArtCNN_C4F16.glsl"; show-text "ArtCNN_C4F16.glsl"
CTRL+7 no-osd change-list glsl-shaders set "~~/shaders/CuNNy-4x12-DS.glsl"; show-text "CuNNy-4x12-DS.glsl"
CTRL+8 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl"; show-text "Anime4K_Upscale_Denoise_CNN_x2_M.glsl"
CTRL+9 no-osd change-list glsl-shaders set "~~/shaders/ACNet.glsl"; show-text "ACNet.glsl"
CTRL+0 no-osd change-list glsl-shaders clr ""; set scale lanczos; show-text "lanczos"

画像を表示して違いを比較

Source: “Portrait of Woman Wearing Blue Hijab” by osama naser
License: https://www.pexels.com/license/

mpv で縦480の画像を全画面にアップスケール。

mpv http://linuxplayers.g1.xrea.com/images/mpv/pexels-osamanaser-2109998_480.jpg --fs --pause

「Ctrl」を押したまま 0 から 9 まで押していき、違いを比較する。


Source: “Gray and Black Hive Printed Textile” by Iva Muškić
License: https://www.pexels.com/license/

mpv で縦480の画像を全画面にアップスケール。

mpv http://linuxplayers.g1.xrea.com/images/mpv/pexels-ivaoo-691710_480.jpg --fs --pause

「Ctrl」を押したまま 0 から 9 まで押していき、違いを比較する。


Source: “千と千尋の神隠し 作品静止画” by STUDIO GHIBLI
License: 画像は常識の範囲でご自由にお使いください。

mpv で縦480の画像を全画面にアップスケール。

mpv http://linuxplayers.g1.xrea.com/images/mpv/chihiro030_480.jpg --fs --pause

「Ctrl」を押したまま 0 から 9 まで押していき、違いを比較する。


好みのアップスケーラーが決まったらデフォルトに指定。

mousepad ~/.config/mpv/mpv.conf

「Anime4K_Upscale_Denoise_CNN_x2_M.glsl」をデフォルトにする場合は次のとおり。

# デフォルトのアップスケーラー
glsl-shaders="~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl"

縦480の画像は次のように作成した。

# デフォルトの Quality は 73 なので「-quality 90」を指定。
#     Quality の確認方法: identify -verbose test.jpg | grep "Quality"
for file in pexels-*.jpg
do
  magick "$file" -resize x480 -quality 90 "${file%.jpg}_480.jpg"
done

コマ落ちが発生しないか確認

Source: “Aerial view of a boat sailing in the sea” by Burak Evlivan
License: https://www.pexels.com/license/

縦480の動画をノーウェイトで全画面再生して、終了までの時間を計測。

wget http://linuxplayers.g1.xrea.com/images/mpv/12393381_3840_2160_60fps_480.mp4

# SGSR.glsl の場合
time mpv --audio=no --untimed=yes --video-sync=display-desync --vulkan-swap-mode=immediate --opengl-swapinterval=0 --glsl-shaders="~~/shaders/SGSR.glsl" --fs 12393381_3840_2160_60fps_480.mp4

結果が「real 0m3.869s」のように表示される。
動画の収録時間は25秒なので、25秒以上かかるものはコマ落ちする。

縦480の動画は次のように作成した。

ffmpeg -i 12393381_3840_2160_60fps.mp4 -vf scale=854:480:flags=lanczos 12393381_3840_2160_60fps_480.mp4

# サムネイル
mpv 12393381_3840_2160_60fps_480.mp4 --window-maximized=no \
--screenshot-format=jpg --screenshot-jpeg-quality=90 \
--screenshot-template=%F_%02n --pause

# 「Ctrl+S」を押してスクリーンショットを撮る。カレントディレクトリに保存される。

アップスケーラーの処理速度を比較

Upscaler Time (sec)
SGSR 3.88
Lanczos 4.01
NVScaler 5.03
ravu-lite-r2_compute 6.83
ravu-lite-r3_compute 6.92
ravu-lite-r2_gather 7.15
ravu-lite-r4_compute 7.18
ravu-lite-r2_normal 7.23
ravu-lite-ar-r4_compute 7.28
ravu-lite-r3_gather 7.43
ravu-lite-r3_normal 7.65
ravu-lite-r4_gather 7.85
ravu-lite-r4_normal 8.22
Anime4K_Upscale_CNN_x2_S 8.27
Anime4K_Upscale_Denoise_CNN_x2_S 8.4
adaptive-sharpen 9.07
Anime4K_Upscale_CNN_x2_M 10.27
Anime4K_Upscale_Denoise_CNN_x2_M 10.35
SSimSuperRes 10.37
CuNNy-fast-DS 10.47
CuNNy-2x12-DS 11.62
FSRCNNX_x2_8-0-4-1 13.47
CuNNy-3x12-DS 13.6
Anime4K_Upscale_CNN_x2_L 14.93
Anime4K_Upscale_Denoise_CNN_x2_L 15.25
CuNNy-4x12-DS 15.52
ACNet 16.3
ArtCNN_C4F16 19.07
AiUpscale_Fast_2x_Photo 21.92
CuNNy-4x16-DS 23.2
Anime4K_Upscale_CNN_x2_VL 25.23

Measured with mpv_shader_benchmark.py.

Conditions:

CPU Ryzen 5 5600G
GPU Integrated Graphics
Scale 854x480 to 1920x1079
File 12393381_3840_2160_60fps_480.mp4

その他の設定

ショートカットキーをカスタマイズ

mousepad ~/.config/mpv/input.conf

次の行を追加。

# 右クリックによる一時停止を無効にする
MBTN_RIGHT ignore

# マウスホイールによる音量操作を無効にする
WHEEL_UP ignore
WHEEL_DOWN ignore
WHEEL_LEFT ignore
WHEEL_RIGHT ignore

# PageUp/PageDown で10分移動
PGUP seek 600
PGDWN seek -600

# Shift + PageUp/PageDown でチャプター移動
Shift+PGUP add chapter 1
Shift+PGDWN add chapter -1

# Enter/Esc で終了
ENTER quit
ESC quit

右下の時間表示を「残り時間」から「全体の時間」に変更

mousepad ~/.config/mpv/script-opts/osc.conf

次の行を追加。

timetotal=yes

HOME