mpv の使いかた

20200131

mpv の特徴

mpv はmplayer2とMPlayerのフォークで、次の特徴がある。

高品質設定で再生する

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

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

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

mkdir -p ~/.config/mpv
rm ~/.config/mpv/mpv.conf
printf "vo=gpu
   hwdec=auto
   profile=gpu-hq
ao=pulse
quiet=yes" > ~/.config/mpv/mpv.conf

gpu-hq プロファイルの内容は「mpv --show-profile=gpu-hq」で確認できる。

GPUレンダラーを使う(動画再生支援)

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

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

Using hardware decoding (vaapi).

“–vo=vaapi” は次の警告が出るので使わない。「警告: このVOは低品質であり、OSDやスケーリングやスクリーンショットなどに問題がある可能性があります。vo=gpu はどの場合でも推奨される選択肢であり、hwdec=vaapi または vaapi-copy によるVA-APIサポートが含まれます。」

GPUレンダラーのオプション: アップスケール

–vo=gpu または --vo=libmpv を指定している場合はアップスケールの種類を選択できる。ハードウェアが実行できる場合は scale=ewa_lanczossharp が推奨される。デフォルトの bilinear は非常に低品質。以下は man mpv からの抜粋。

名前 説明
bilinear バイリニアハードウェアテクスチャフィルタリング(最速、非常に低品質)。これは互換性の理由からデフォルトです。
spline36 中程度の品質と速度。これは gpu-hq を使用する場合のデフォルトです。
lanczos ランチョススケーリング。中程度の品質と速度を提供します。一般に spline36 よりも悪いが、一部のコンテンツに適したわずかにシャープな画像になります。
ewa_lanczos 楕円加重平均ランチョススケーリング。Jinc とも呼ばれます。比較的遅いが、非常に良い品質。
ewa_lanczossharp 理想的な radius とパラメーターを使用するよう事前に構成された、ewa_lanczos のわずかにシャープなバージョン。ハードウェアがこれを実行できる場合は、おそらくデフォルトで使用すべきものです。
mitchell Mitchell-Netravali。このフィルターはダウンスケーリングが非常に優れています(–dscaleを参照)。
oversample ピクセルを(単純に)オーバーサンプリングする近傍法。エッジの重なるピクセルを丸めるのではなく、線形に補間する。このフィルターは時間的補間に優れており、「スムーズモーション」とも呼ばれます(–tscaleを参照)。

外部のアップスケールを使う: Anime4K

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

mkdir -p ~/.config/mpv/shaders
rm -f ~/.config/mpv/shaders/Anime4K*
wget https://github.com/bloc97/Anime4K/releases/download/v1.0-RC2/Anime4K_GLSL_v1.0RC2.zip
unzip Anime4K_GLSL_v1.0RC2.zip -d ~/.config/mpv/shaders 

実際に使ってみる。

mpv --vo=gpu --hwdec=auto --glsl-shaders="~/.config/mpv/shaders/Anime4K_Adaptive_v1.0RC2.glsl" https://www.youtube.com/watch?v=BpiILiEZuF4

キー割り当てを変更する

mkdir -p ~/.config/mpv
cd ~/.config/mpv/
cp -f /usr/share/doc/mpv/input.conf .
# マウスホイールによる音量操作を無効にする
sed -i -e "s/#WHEEL_UP      seek 10$/WHEEL_UP      ignore/g" input.conf
sed -i -e "s/#WHEEL_DOWN    seek -10$/WHEEL_DOWN    ignore/g" input.conf
sed -i -e "s/#WHEEL_LEFT    add volume -2$/WHEEL_LEFT    ignore/g" input.conf
sed -i -e "s/#WHEEL_RIGHT   add volume 2$/WHEEL_RIGHT   ignore/g" input.conf
# PGUP/PGDWNで10分移動
sed -i -e "s/#Shift+PGUP seek 600$/PGUP seek 600/g" input.conf
sed -i -e "s/#Shift+PGDWN seek -600$/PGDWN seek -600/g" input.conf
# Enterで終了
sed -i -e "s/#q quit$/ENTER quit/g" input.conf
# Escで終了
sed -i -e "s/#ESC set fullscreen no$/ESC quit/g" input.conf

オンスクリーンコントローラの設定を変更する

オンスクリーンコントローラの右側の時間表示を「残り時間」から「全体の時間」に変更する。

mkdir -p ~/.config/mpv/script-opts
rm -f ~/.config/mpv/script-opts/osc.conf
printf "timetotal=yes" > ~/.config/mpv/script-opts/osc.conf

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

その他

# HaswellとBroadwell: VP9 用のドライバをインストール

HaswellとBroadwellの場合は intel-hybrid-driverintel-vaapi-driver がないとVP9をVA-APIで再生できない。こちらのページを参照。

Arch Linux の場合は次のパッケージをインストールする。

intel-hybrid-codec-driver libva-intel-driver-hybrid

VP9がサポートされていることを確認。

sudo pacman -S libva-utils
vainfo | grep VP9

次の行があればVP9がサポートされている。

VAProfileVP9Profile0: VAEntrypointVLD

コンポジット処理に対応したデスクトップ環境での注意

PlasmaやXfceではコンポジット処理を有効にしておく。インテルのグラフィックスドライバを使っているときにコンポジット処理を無効にすると、動画再生をフルスクリーンで行ったとき画面にノイズが出る。

音量を自動的に調節(ノーマライズ)

ffmpegの loudnorm というフィルタを挟むと音量が自動的に調節される。ただしこれを使うとリアルタイムに音量が調節されるので、演奏前のささやき声が過剰に拡大される。

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

再生画面のコントローラを非表示にする

mpv --osc=no

ターミナルへの出力を最小限にする

mpv --quiet=yes

HOME