2024-11-21
mpv は自由に使えるメディアプレーヤーで、次の特徴がある。
RAVU は RAISR(Google
の画像超解像技術)からインスピレーションを得たアップスケーラー。
DVD動画をFHDで表示したり、FHD動画を4Kで表示する場合に効果がある。
FHD動画をFHDモニターで再生する場合は、1倍表示なので効果はほとんどない。
# https://github.com/bjin/mpv-prescalers
rm -rf ~/tmp_mpv/RAVU
mkdir -p ~/tmp_mpv/RAVU
cd ~/tmp_mpv/RAVU/
wget https://github.com/bjin/mpv-prescalers/archive/refs/heads/master.zip
unzip -q master.zip
mkdir -p ~/.config/mpv/shaders
# gather ディレクトリのものが高速版
cp mpv-prescalers-master/gather/ravu-lite-r*.hook ~/.config/mpv/shaders/
~/.config/mpv/mpv.conf
に次の内容を書く。
vo=gpu-next
gpu-api=vulkan
profile=high-quality
ao=pipewire
# 音声のみのファイルでもウィンドウを表示
force-window=yes
# 常にウィンドウを最大化
window-maximized=yes
# コンソールへのメッセージ出力を減らす
quiet=yes
# デフォルトのアップスケーラー
glsl-shaders="~~/shaders/ravu-lite-r2.hook"
上の設定の gpu-api=vulkan
を
hwdec=auto-safe
に変更。
この変更を行うと一部の外部アップスケーラー(ArtCNN
CMP)を使用できなくなる。
ターミナルを開いて次のコマンドで動画を再生。数秒経ったら「Q」を押して終了。
mpv --vo=gpu-next --hwdec=auto-safe --ao=pipewire https://www.youtube.com/watch?v=sDyDHvZKl8g
ターミナルに「Using hardware decoding」の表示があれば成功。
NVIDIA Image Scaling。Radeonでも使用できる。
# https://gist.github.com/agyild
rm -rf ~/tmp_mpv/NVScaler
mkdir -p ~/tmp_mpv/NVScaler
cd ~/tmp_mpv/NVScaler
wget https://gist.github.com/agyild/7e8951915b2bf24526a9343d951db214/raw/05f00864228871ffd157daa9beb2db8fa7412cfa/NVScaler.glsl
mkdir -p ~/.config/mpv/shaders
cp NVScaler.glsl ~/.config/mpv/shaders/
AMD FidelityFX Super Resolution
# https://gist.github.com/agyild
rm -rf ~/tmp_mpv/FSR
mkdir -p ~/tmp_mpv/FSR
cd ~/tmp_mpv/FSR
wget https://gist.github.com/agyild/82219c545228d70c5604f865ce0b0ce5/raw/2623d743b9c23f500ba086f05b385dcb1557e15d/FSR.glsl
mkdir -p ~/.config/mpv/shaders
cp FSR.glsl ~/.config/mpv/shaders/
アニメの4K化に特化したアップスケーラー。
「Mode A」は1080pアニメの4K化、「Mode B」は720pアニメの4K化、「Mode
C」は480pアニメの4K化に最適化されている。
低速GPU向けの設定はこちら。高速GPU向けの設定はこちら。
# https://github.com/bloc97/Anime4K/blob/master/md/GLSL_Instructions_Linux.md
rm -rf ~/tmp_mpv/Anime4K/Low-end
mkdir -p ~/tmp_mpv/Anime4K/Low-end
cd ~/tmp_mpv/Anime4K/Low-end
wget https://github.com/Tama47/Anime4K/releases/download/v4.0.1/GLSL_Mac_Linux_Low-end.zip
unzip -q GLSL_Mac_Linux_Low-end.zip
mkdir -p ~/.config/mpv/shaders
cp shaders/*.glsl ~/.config/mpv/shaders/
高速超解像畳み込みニューラルネットワークによるアップスケーラー。
# https://github.com/igv/FSRCNN-TensorFlow/releases
rm -rf ~/tmp_mpv/FSRCNN
mkdir -p ~/tmp_mpv/FSRCNN
cd ~/tmp_mpv/FSRCNN/
wget https://github.com/igv/FSRCNN-TensorFlow/releases/download/1.1/FSRCNNX_x2_16-0-4-1.glsl
wget https://github.com/igv/FSRCNN-TensorFlow/releases/download/1.1/FSRCNNX_x2_8-0-4-1.glsl
mkdir -p ~/.config/mpv/shaders
cp FSRCNNX_x2_*.glsl ~/.config/mpv/shaders/
アニメコンテンツに最適化されたアップスケーラー。
「DS」が付くものはノイズ除去とシャープ化が行われ、ほとんどのWebソースで有用。
「CMP」が付くものは高速版で、Vulkan
が必要(--gpu-api=vulkan
)。
# https://github.com/Artoriuz/ArtCNN
rm -rf ~/tmp_mpv/ArtCNN
mkdir -p ~/tmp_mpv/ArtCNN
cd ~/tmp_mpv/ArtCNN/
wget https://github.com/Artoriuz/ArtCNN/archive/refs/heads/main.zip
unzip -q main.zip
mkdir -p ~/.config/mpv/shaders
cp ArtCNN-main/GLSL/Compute/ArtCNN_C4F{8,16}_DS_CMP.glsl ~/.config/mpv/shaders/
~/.config/mpv/input.conf
に次の内容を書く。
# シェーダー変更
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/ravu-lite-r2.hook"; show-text "ravu-lite-r2.hook"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/NVScaler.glsl"; show-text "NVScaler.glsl"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/FSR.glsl"; show-text "FSR.glsl"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode C (Fast)"
CTRL+5 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+6 no-osd change-list glsl-shaders set "~~/shaders/ArtCNN_C4F8_DS_CMP.glsl"; show-text "ArtCNN_C4F8_DS_CMP.glsl"
CTRL+7 no-osd change-list glsl-shaders set "~~/shaders/ArtCNN_C4F16_DS_CMP.glsl"; show-text "ArtCNN_C4F16_DS_CMP.glsl"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
480p の動画をフルスクリーンで表示して一時停止。
yay -S --needed yt-dlp
# 実写動画
mpv --ytdl-format=244+251 --vo=gpu-next --gpu-api=vulkan --ao=pipewire https://www.youtube.com/watch?v=ue4irL_g-UE --start=00:04:38 --fs --pause
# アニメ動画
mpv --ytdl-format=244+251 --vo=gpu-next --gpu-api=vulkan --ao=pipewire https://www.youtube.com/watch?v=d0jg9hNHqn8 --start=00:00:22 --fs --pause
Ctrl+0, 1, 2… と順に押していき、アップスケーラーの効果を比較。
細かい模様の静止した物体(マイクなど)が映り込んでいると、効果を比較しやすい。
mpv --ytdl-format=244+251 --vo=gpu-next --gpu-api=vulkan --ao=pipewire https://www.youtube.com/watch?v=ue4irL_g-UE --fs
Shift+I を押して情報画面を表示。
Ctrl+0, 1, 2… と順に押していき、「Dropped
Frames」の値が増えないか確認。
アップスケーラーの画質比較はこちら。
ただし画質の良し悪しは主観に左右されるので、数値がすべてではない。単一の画像を使用して画質を比較しているので、別の画像だと別の結果になるかもしれない。
アップスケーラーの速度比較はこちら。
「fast」プリセットの速度を1.0としたとき、「default」プリセットは0.78、「high-quality」プリセットは0.65、「ravu-lite-r2」シェーダーは0.70。
~/.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
~/.config/mpv/script-opts
に次の内容を書く。
timetotal=yes
動画の120秒目までの最大音量を測定し、それを基に適切な音量で再生する。
使用方法: python mpv-adjustvol.py file