2023-01-17
mpv は自由に使えるメディアプレーヤーで、次の特徴がある。
ArchWikiの高品質設定を参考にして次のように設定する。
mkdir -p ~/.config/mpv
printf 'vo=gpu
hwdec=auto-safe
profile=gpu-hq
scale=ewa_lanczossharp
cscale=ewa_lanczossharp
video-sync=display-resample
interpolation
tscale=oversample
ao=pipewire
# 音声のみのファイルでもウィンドウを表示する
force-window=yes
# コンソールへのメッセージ出力を減らす
quiet=yes
' > ~/.config/mpv/mpv.conf
負荷が高い場合は控えめな品質にする。
mkdir -p ~/.config/mpv
printf 'vo=gpu
hwdec=auto-safe
profile=gpu-hq
ao=pipewire
# 音声のみのファイルでもウィンドウを表示する
force-window=yes
# コンソールへのメッセージ出力を減らす
quiet=yes
' > ~/.config/mpv/mpv.conf
gpu-hq プロファイルの内容は次の通り。
mpv --show-profile=gpu-hq
# Profile gpu-hq:
# scale=spline36
# cscale=spline36
# dscale=mitchell
# dither-depth=auto
# correct-downscaling=yes
# linear-downscaling=yes
# sigmoid-upscaling=yes
# deband=yes
mpv --vo=gpu --hwdec=auto-safe --ao=pipewire https://www.youtube.com/watch?v=sDyDHvZKl8g
q を押して再生を止めたあと、ターミナルに次の表示があればOK。
# Using hardware decoding (vaapi).
# RAVU: RAISR(高速で正確な画像超解像技術)に触発されたアップスケーラー
mkdir -p ~/tmp_arch/
cd ~/tmp_arch/
wget https://github.com/bjin/mpv-prescalers/raw/master/ravu-lite-r2.hook
wget https://github.com/bjin/mpv-prescalers/raw/master/ravu-lite-r3.hook
wget https://github.com/bjin/mpv-prescalers/raw/master/ravu-lite-r4.hook
mkdir -p ~/.config/mpv/shaders
mv ravu-lite-r*.hook ~/.config/mpv/shaders/
# FSRCNNX: 高速超解像畳み込みニューラルネットワーク によるアップスケーラー
mkdir -p ~/tmp_arch/
cd ~/tmp_arch/
wget https://github.com/igv/FSRCNN-TensorFlow/releases/download/1.1/FSRCNNX_x2_8-0-4-1.glsl
mkdir -p ~/.config/mpv/shaders
mv FSRCNNX_x2_*.glsl ~/.config/mpv/shaders/
# Anime4K: 1080pアニメの4K化に特化したアップスケーラー
mkdir -p ~/.config/mpv/shaders
rm -f ~/.config/mpv/shaders/Anime4K*
mkdir -p ~/tmp_arch/Anime4K
cd ~/tmp_arch/Anime4K
wget https://github.com/bloc97/Anime4K/releases/download/v4.0.1/Anime4K_v4.0.zip
unzip Anime4K_v4.0.zip
mv *.glsl ~/.config/mpv/shaders/
# adaptive-sharpen
# こちらからダウンロード
# https://gist.github.com/igv
mkdir -p ~/.config/mpv/shaders
mv adaptive-sharpen.glsl ~/.config/mpv/shaders/
# SSimSuperRes
# こちらからダウンロード
# https://gist.github.com/igv
mkdir -p ~/.config/mpv/shaders
mv SSimSuperRes.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"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/ravu-lite-r3.hook"; show-text "ravu-lite-r3"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/ravu-lite-r4.hook"; show-text "ravu-lite-r4"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/FSRCNNX_x2_8-0-4-1.glsl"; show-text "FSRCNNX_x2_8-0-4-1"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_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 A (Fast)"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_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 B (Fast)"
CTRL+7 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+8 no-osd change-list glsl-shaders set "~~/shaders/adaptive-sharpen.glsl"; show-text "adaptive-sharpen"
CTRL+9 no-osd change-list glsl-shaders set "~~/shaders/SSimSuperRes.glsl"; show-text "SSimSuperRes"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
CTRL+1 で “ravu-lite-r2”、
CTRL+2 で “ravu-lite-r3”、
CTRL+3 で “ravu-lite-r4”、
CTRL+4 で “FSRCNNX_x2_8-0-4-1”、
CTRL+5 で “Anime4K: Mode A (Fast)”、
CTRL+6 で “Anime4K: Mode B (Fast)”、
CTRL+7 で “Anime4K: Mode C (Fast)”、
CTRL+8 で “adaptive-sharpen”、
CTRL+9 で “SSimSuperRes”、
CTRL+0 で 外部シェーダーを無効にする。
# 元画像
mpv https://c4.wallpaperflare.com/wallpaper/300/319/704/5bd32e94974f2-wallpaper-preview.jpg --fs --pause
ディスプレイ解像度の縦横半分程度の画像を用意し、フルスクリーンで表示する。
小さい画像をウィンドウで等倍表示すると、アップスケーラーの効果が出にくい。
“spline36”。gpu-hq プロファイルのデフォルトのアップスケーラー。画像がぼやける。
“ravu-lite-r2”。品質が高く負荷は低い。実写映像に向いている。
“ravu-lite-r3”。品質が高く負荷は低い。実写映像に向いている。
“ravu-lite-r4”。品質が高く負荷は低い。実写映像に向いている。
“FSRCNNX_x2_8-0-4-1”。品質は高いが内蔵GPUだと負荷が高め。
“Anime4K: Mode A (Fast)”。“Anime4K” は1080pアニメを4Kにアップスケールすることに特化している。480p程度の画像には向いていないが参考情報として。実写だと蝶の羽の鱗粉が潰れてのっぺりとした質感になる。イラストには向いているが FSRCNNX より更に負荷が高く、動画をリアルタイムに4Kへアップスケールする場合は GTX 1060 程度のGPU が必要。
“Anime4K: Mode B (Fast)”。実写だとぼやけて見えるがイラストだと髪の周りのノイズが減る。
“Anime4K: Mode C (Fast)”。“Mode A (Fast)” より鱗粉の潰れが少なく、高速。実写映像にも向いている。
“adaptive-sharpen”。シャープで明るい。
“SSimSuperRes”。adaptive-sharpen より少しぼやけるが自然。
例として ravu-lite-r2 に変更する。
mkdir -p ~/.config/mpv
printf 'vo=gpu
hwdec=auto-safe
profile=gpu-hq
glsl-shaders="~~/shaders/ravu-lite-r2.hook"
ao=pipewire
# 音声のみのファイルでもウィンドウを表示する
force-window=yes
# コンソールへのメッセージ出力を減らす
quiet=yes
# 常にウィンドウを最大化
#window-maximized=yes
' > ~/.config/mpv/mpv.conf
João Vitor Chrisóstomo が mpv のアップスケーラーの品質を数値で比較している。
次の行を ~/.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
画面右下の時間表示を「残り時間」から「全体の時間」に変更する。
mkdir -p ~/.config/mpv/script-opts
printf 'timetotal=yes
' > ~/.config/mpv/script-opts/osc.conf