2025-09-03
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/
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