mpv の使いかた

2021-08-20

mpv の特徴

mpv は自由に使えるメディアプレーヤーで、次の特徴がある。

高品質設定で再生する

ArchWikiの高品質設定を参考にして次のように設定する。

mkdir -p ~/.config/mpv
printf "vo=gpu
   hwdec=auto
   profile=gpu-hq
   scale=ewa_lanczossharp
   cscale=ewa_lanczossharp
   video-sync=display-resample
   interpolation
   tscale=oversample
ao=pulse
force-window=yes
quiet=yes
" > ~/.config/mpv/mpv.conf

負荷が高い場合は控えめな品質にする。

mkdir -p ~/.config/mpv
printf "vo=gpu
   hwdec=auto
   profile=gpu-hq
ao=pulse
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

GPUレンダラー(動画再生支援)を使用できているか確認

mpv --vo=gpu --hwdec=auto --ao=pulse https://www.youtube.com/watch?v=sDyDHvZKl8g

Qを押して再生を止めたあと、ターミナルに次の表示があればOK。

# Using hardware decoding (vaapi).

--vo=vaapi は次の警告が出るので使わない。

# [vo/vaapi] Warning: this compatibility VO is low quality and may have # issues with OSD, scaling, screenshots and more.
# [vo/vaapi] vo=gpu is the preferred choice in any case and includes VA-# API support via hwdec=vaapi or vaapi-copy.
# [vo/vaapi] 警告: このVOは低品質であり、OSDやスケーリングやスクリーンショットなどに問題がある可能性があります。
# [vo/vaapi] vo=gpu はどの場合でも推奨される選択肢であり、hwdec=vaapi または vaapi-copy によるVA-APIサポートが含まれます。

アップスケーラーの画質比較

--vo=gpu を指定している場合はアップスケーラーの種類を選択できる。デフォルトの bilinear は非常に低品質。ハードウェアの性能に問題がない場合は ewa_lanczossharp が推奨される。
名前の部分をクリックすると、縦768ピクセルの画像を1080ピクセルにアップスケールしたときの画像が表示される。説明文は man mpv の抜粋。

名前 (クリックで画像) 説明
bilinear バイリニアハードウェアテクスチャフィルタリング(最速、非常に低品質)。これは互換性の理由からデフォルトです。
spline36 中程度の品質と速度。これは gpu-hq を使用する場合のデフォルトです。
lanczos ランチョススケーリング。中程度の品質と速度を提供します。一般的に spline36 よりも悪いですが、少しシャープな画像になり、一部のコンテンツタイプに適しています。
ewa_lanczos 楕円加重平均ランチョススケーリング。Jinc としても知られています。比較的遅いが非常に良い品質。
ewa_lanczossharp わずかにシャープなバージョンの ewa_lanczos。お使いのハードウェアで実行できる場合は、おそらくこれをデフォルトにするべきです。
(参考) Anime4K アニメ向けのアップスケーラー
(参考) FSRCNNX 高速超解像畳み込みニューラルネットワーク によるアップスケーラー

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

縦768ピクセルの画像をフルスクリーンでアップスケール表示する(ウィンドウでの原寸表示だとアップスケーラーが働かない)。

mpv --vo=gpu --hwdec=auto --scale=ewa_lanczossharp /usr/share/backgrounds/xfce/Klivia.jpg --fullscreen --pause
mpv --vo=gpu --hwdec=auto --glsl-shaders="~~/shaders/Anime4K_Upscale_CNN_L_x2_Denoise.glsl:~~/shaders/Anime4K_Auto_Downscale_Pre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl" /usr/share/backgrounds/xfce/Klivia.jpg --fullscreen --pause
mpv --vo=gpu --hwdec=auto --glsl-shader="~~/shaders/FSRCNNX_x2_8-0-4-1.glsl" /usr/share/backgrounds/xfce/Klivia.jpg --fullscreen --pause

PrintScreen キーを押してスクリーンショットを撮る。

アップスケーラーを追加: Anime4K

アニメ向けのアップスケーラーである Anime4K をインストールする。

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/3.1/Anime4K_v3.1.zip
unzip Anime4K_v3.1.zip
mv *.glsl ~/.config/mpv/shaders/

720pの動画をフルスクリーンでアップスケール表示する(ウィンドウでの原寸表示だとアップスケーラーが働かない)。

mpv --vo=gpu --hwdec=auto --glsl-shaders="~~/shaders/Anime4K_Upscale_CNN_L_x2_Denoise.glsl:~~/shaders/Anime4K_Auto_Downscale_Pre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl" --ao=pulse --ytdl-format="136+140" https://www.youtube.com/watch?v=BpiILiEZuF4 --fullscreen --start=53 --pause

Anime4Kでは複数のシェーダーを組み合わせる必要がある。詳細はこちら。Linuxではオプション内の ; を : に置き換える。~~/ は設定ファイルのディレクトリを指す(通常 ~/.config/mpv/ )。

キー割り当てを変更する

mkdir -p ~/.config/mpv

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

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

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

# Enterで終了
ENTER quit
# Escで終了
ESC quit
' > ~/.config/mpv/input.conf

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

画面右下の時間表示を「残り時間」から「全体の時間」に変更する。

mkdir -p ~/.config/mpv/script-opts

printf 'timetotal=yes
' > ~/.config/mpv/script-opts/osc.conf

他のオプションについてはこちらを参照。

mpv-adjustvol(音量自動補正ツール)

音量を自動的に補正する ruby コードを書いた。

mpv-adjustvol

ファイルの冒頭180秒間を読んで最大音量を検出したのち、音量を補正してファイルを再生する。音量検出には0.6秒ほどしかかからない。元のファイルには何も変更を加えない。ffmpeg で再生できる形式ならどれでも対応可能。

HOME