2025-01-18
mpv は自由に使えるメディアプレーヤーで、次の特徴がある。
RAVU
をインストール。
RAVU は Google
の画像超解像技術からヒントを得たアップスケーラー。
DVD動画をFHDモニターで表示したり、FHD動画を4Kモニターで表示する場合に効果がある。
FHD動画をFHDモニターで表示する場合は、1倍表示なので効果はほとんどない。
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/
printf "vo=gpu-next
gpu-api=vulkan
hwdec=auto-safe
profile=high-quality
ao=pipewire
# 音声のみのファイルでもウィンドウを表示
force-window=yes
# 常にウィンドウを最大化
window-maximized=yes
# コンソールへのメッセージ出力を減らす
quiet=yes
# デフォルトのアップスケーラー
glsl-shaders=\"~~/shaders/ravu-lite-r2.hook\"
" > ~/.config/mpv/mpv.conf
モニターに超解像技術が搭載されている場合はオフにする。アップスケーラーの効果が分かりづらくなるので。
REGZA をモニターとして使用している場合は、
「低遅延モード: オン」「レゾリューションプラス: オフ」
「ヒストグラムバックライト制御: オン」「質感リアライザー:
オート」にする。
質感リアライザーをオフにすると、全体の色味が白っぽくなる。
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向けの設定はこちら。
低速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」が付くものは、追加でノイズ除去とシャープ化を行う。ほとんどのウェブ動画に適している。
# 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/*_DS.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_C4F16_DS.glsl"; show-text "ArtCNN_C4F16_DS.glsl"
CTRL+7 no-osd change-list glsl-shaders set "~~/shaders/ArtCNN_C4F32_DS.glsl"; show-text "ArtCNN_C4F32_DS.glsl"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
480p の動画をアップスケールして効果を比較。
# YouTube の画質指定には yt-dlp が必要
yay -S --needed yt-dlp
# 実写動画
mpv --ytdl-format=244+251 https://www.youtube.com/watch?v=ue4irL_g-UE --start=00:04:38 --fs --pause
# アニメ動画
mpv --ytdl-format=244+251 https://www.youtube.com/watch?v=d0jg9hNHqn8 --start=00:00:22 --fs --pause
「Ctrl+0」「Ctrl+1」…
と順に押していき、アップスケーラーの効果を比較。
細かい模様の静止した物体(マイクなど)が映り込んでいると、効果を比較しやすい。
480p の動画をアップスケールしてコマ落ちしないか確認。
mpv --ytdl-format=244+251 https://www.youtube.com/watch?v=ue4irL_g-UE --fs
「Shift+I」を押して情報画面を表示。
「Dropped Frames」の値が増えないか確認。
内蔵GPUだと「ArtCNN_C4F32_DS.glsl」(Ctrl+7)がコマ落ちするかもしれない。
アップスケーラーの画質比較はこちら。
画質の良し悪しは主観に左右されるので、数値がすべてではない。
アップスケーラーの速度比較はこちら。
「fast」プリセットの速度を1.0としたとき、「default」プリセットは0.78、「high-quality」プリセットは0.65。
~/.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
printf "timetotal=yes
" ~/.config/mpv/script-opts/osc.conf
動画の60秒目までの最大音量を測定し、それをもとに音量を調整する。
動画が20分以上ある場合は音量を調整しない。音量のピークがかなり先にあるかもしれないので。
使用方法: python mpv-adjustvol.py file