動画プレイヤーmpvのススメ

昨日知った。しかしこれは強い。

軽い、Blu-rayもYouTubeも再生できる、プレイリスト再生できる、ターミナルから操作できる、キーボード操作だけで完結する。もう完璧だ。

公式サイトはこちら。Macだとbrewで提供されているので、そちらがよい(Ports? 知らない子ですね)。

しかし初期設定のハードルが高いうえに、日本語の記事が少なくて古い。そのためちょっと設定を解説していこう。

まずはffmpegのほうから。brew install ffmpeg。Ubuntuとかだとavconvになるのかな。インストール時に --with-ffplay があるとffplayとかいうプレイヤーがターミナルから使えてちょっと便利。--with-opus や --with-webp も少し需要があるかもしれない。

次にbrew install mpv。オプションは --with-bundle があると超便利。

どちらも --HEAD オプションをつけてもいい。このオプションで過去に失敗したことがあるので僕はつけていない。

--with-bundle をつけるとMacのappが作られる。これのシンボリックリンクは brew linkapps mpv で作れるので、これを実行しておこう。そうするとmpvをアプリとして実行できる。さらにmp4とかをmpvに関連付けしておけば、mp4を開くだけでmpvで再生できる。超便利。

そして設定。マニュアルはこのあたりにあるのだが、長すぎてとてもつらい。とりあえずざっと見て、設定しておくべき内容をまとめてみた。これは ~/.config/mpv/mpv.conf に保存しておくと起動時に読み込んでくれる。

# fpsを動画に合わせる
correct-pts=yes

# スクリーンショットの設定
screenshot-format=png
screenshot-template=/Users/Ishotihadus/Pictures/mpv/%f-%P

# On Screen Displayの設定
osd-bar=no
osd-font-size=30
osd-duration=3000
osd-font="ヒラギノ角ゴ ProN W3"
osd-border-size=1
osd-scale-by-window=no

# 字幕は非表示
sub-visibility=no

# 再生はOpenGL-HQでハードウェアレンダリング
vo=opengl-hq
hwdec=auto

# キーバインドはとりあえずオフにする
input-default-bindings=no

# ボリュームの最大値を200%に
softvol=yes
softvol-max=200
volume=100

スクリーンショットの保存先は各自の環境に合わせるべし。%fは動画ファイル名、%Pはミリ秒まで含めた再生位置。

OSDは、早送りやボリューム変更した際のバーがうざいのでそれは消した。フォントや表示時間(duration [ms])はおこのみで。osd-scale-by-window を no にしておくとサイズが固定されるのでありがたい。

opengl-hq は opengl:scale=spline36:cscale=spline36:dscale=mitchell:dither-depth=auto:correct-downscaling:sigmoid-upscaling:deband:es=no のエイリアスになっている。ちゃんとopenglの設定がわかるのであれば、手動で設定したほうがいいかもしれない。hwdecをautoにしないとハードウェアを使ってくれないのでこれもon。

キーバインドは後で設定するのでここではオフにしている。ボリュームの最大値は、ときどきボリュームが小さい動画があるので大きくできるようにした。

次にキーバインドの設定。これは ~/.config/mpv/input.conf に書く。初期キーバインドを使っても良いのだが、ちょっとわかりにくかったので完全に書きなおした。初期キーバインドであれば input-default-bindings=no を消して、ファイルも作らなくて良い。デフォルトコマンドはここに一覧が載っている。

僕のキーバインドはこんな感じ。英字キーボード向けに作っている。なおMetaは⌘(Command)キーの意味。

# mpv keybindings

# Mouse clicks
MOUSE_BTN0      ignore
MOUSE_BTN0_DBL  ignore
MOUSE_BTN1      ignore
MOUSE_BTN2      ignore
MOUSE_BTN3      ignore
MOUSE_BTN4      ignore
MOUSE_BTN5      ignore
MOUSE_BTN6      ignore

# Mouse wheels
AXIS_UP     add volume 1
AXIS_DOWN   add volume -1
AXIS_LEFT   ignore
AXIS_RIGHT  ignore

# Player Commands
PLAY       cycle pause
PAUSE      cycle pause
PLAYPAUSE  cycle pause
FORWARD    seek 5
REWIND     seek -5
NEXT       playlist-next
PREV       playlist-prev

# Standard Commands
SPACE  cycle pause ; show-text "${?pause==no:Play}${?pause==yes:Pause}"
p      cycle pause ; show-text "${?pause==no:Play}${?pause==yes:Pause}"
m      cycle mute
l      set loop "${?loop==no:inf}${!loop==no:no}"
s      screenshot video
Ctrl+c quit
Meta+q quit
Meta+w stop

# Seek
LEFT        seek -5 exact
RIGHT       seek 5 exact
UP          seek -60
DOWN        seek 60
Shift+RIGHT seek 1 exact
Shift+LEFT  seek -1 exact
Shift+UP    seek 3 exact
Shift+DOWN  seek -3 exact
.           frame-step
,           frame-back-step

# Speed
[  multiply speed 0.90909091
]  multiply speed 1.1
\  set speed 1.0

# Volume
-  add volume -2
=  add volume 2

# Window Commands
# Meta+Number
Meta+`  set window-scale 0.75
Meta+0  set window-scale 0.5
Meta+1  set window-scale 1
Meta+2  set window-scale 1.5
Meta+3  set window-scale 2
Meta+-  multiply window-scale 0.92
Meta+=  multiply window-scale 1.08
f           cycle fullscreen
Ctrl+SPACE  set fullscreen yes
Esc         set fullscreen no

# Chapter Commands
# Ctrl+Shift+?
Ctrl+Shift+LEFT   add chapter -1
Ctrl+Shift+RIGHT  add chapter 1
Ctrl+S            show-text "${chapter-list}"

# Title Commands
Alt+Shift+LEFT    add disc-title -1
Alt+Shift+RIGHT   add disc-title 1
Alt+S             show-text "${disc-title-list}"

# Playlist Commands
# Meta+Shift+?
Meta+R            playlist-shuffle ; show-text "Playlist shuffle"
Meta+Shift+RIGHT  playlist-next
Meta+Shift+LEFT   playlist-prev
Meta+S            show-text "${playlist}"

# Track Commands
h      cycle video
j      cycle sub
k      cycle audio
Meta+j cycle sub-visibility

# Show Commands
i show-text "${media-title} (${playlist-pos}/${playlist-count})\n${time-pos} / ${duration} (${percent-pos}%)\nLoop: ${loop}\nVolume: ${volume}\nMute: ${mute}"
I show-text "${media-title}\n${path}\n${=file-size} bytes (${file-size})\n${=time-pos} / ${=duration}\nChapter: ${chapter} / ${chapters}\nEdition: ${edition} / ${editions}\nTitle: ${disc-title} / ${disc-titles}\nPlaylist: ${playlist-pos} / ${playlist-count}\nWorking Directory: ${working-directory}\n\n[Video Info]\n${vid}\nFormat: ${video-format}\nCodec: ${video-codec}\nBitrate: ${=video-bitrate}bps (${video-bitrate})\n${video-params/w} x ${video-params/h} (Aspect: ${video-params/aspect}) x${window-scale}\nFPS: ${fps} (display: ${display-fps})\nDropped: ${vo-drop-frame-count}\nDelay: ${vo-delayed-frame-count} frames\n\n[Subtitle Info]\n${sid}\nDelay: ${sub-delay}\nVisibility: ${sub-visibility}\n\n[Audio Info]\n${aid}\n${audio-params/samplerate}Hz ${audio-params/channels} ${audio-params/channel-count}ch ${audio-params/format}\nCodec: ${audio-codec} (${audio-codec-name})\nBitrate: ${=audio-bitrate}bps (${audio-bitrate})\nDelay: ${audio-delay}\nA/V Difference: ${avsync}\nVolume: ${volume}% / Mute: ${mute}\n\n[Filters]\nDeinterlace: ${deinterlace}\nFiled Dominance: ${field-dominance}\nColor Matrix: ${colormatrix}\nVideo: ${vf}\nAudio: ${af}\n\n[Hardwares]\nVideo Driver: ${current-vo}\nHardware Rendering: ${hwdec-active} (Detected: ${hwdec-detected})\nDisplays: ${display-names}\nAudio Driver: ${current-ao}\nAudio Device: ${audio-device}\nAuto AO Driver: ${audio-out-detected-device}"
t show-text "${track-list}"
o show-progress

マウス操作は上下ホイールの音量だけ。スペースもしくはPで再生・一時停止、Mでミュート、Lで(プレイリスト)ループ、Sでスクリーンショット、⌘Qで終了。

シークは左右キーで5秒ずつ。.と,でフレーム移動もできる。ボリューム設定は-と=だが、JIS配列の場合は-と^などでもいいだろう。

[および]でスピード操作ができる。\で等倍速に戻すが、これは英字配列だと[]の右が\だから。

ウインドウの設定は⌘+数字がキホン。チャプター操作(mkvなど)はCtrl+Shift+?、タイトル操作(DVDなど)はAlt+Shift+?、プレイリスト操作は⌘+Shift+?で統一した。すべてHoge+Shift+Sで一覧が表示できるようになっている。プレイリストシャッフルは⌘⇧R。

H, J, Kでそれぞれビデオ・字幕・音声の入れ替え。⌘Jで字幕の表示を切り替える。

Iで情報表示、⇧Iで詳細情報表示を作った。自作動画の検証などに使えるだろう。

あとはOで動画の進行状況が見れる感じ。

デフォルトだと1〜0にフィルターを割り当てているのだが、個人的にはそんなものは動画を作る段階で選べという話なので割り当てていない。設定する場合はコマンド一覧デフォルト設定ファイルなどを参照するとよいだろう。

最後にOSCの設定。OSCとはマウスカーソルを動かすと下に出てくるあの操作画面のこと。デフォルトだとでかくてうざいのでいじっている。この設定は ~/.config/mpv/lua-settings/osc.conf に書く。

layout=bottombar
vidscale=no
scalewindowed=1.75
scalefullscreen=1.75
boxalpha=160
hidetimeout=2000

レイアウトをbottombarにして下にひっそりだすようにした。vidscaleは動画の大きさに合わせてOSCのサイズを変える設定で、これもウザイのでoffにしている。

OSCの好みのサイズや透明度はひとによって違うので、scaleとalphaはおこのみで。hidetimeoutも人それぞれだろう。

こんな感じで設定して、mp4が大量に入ったフォルダで

mpv --loop=inf --shuffle *.mp4

とか実行すると、mp4をシャッフル再生して作業用BGMになってくれる。動画が重い時にはHキーを押して動画を切ってやればよい(動画ソースの切り替え)。

なおmpvは

mpv "https://www.youtube.com/watch?v=Nkjb5_w24Gw"

もしくは

mpv ytdl://Nkjb5_w24Gw

などとすればYouTubeの動画も再生できる。これはyoutube-dlの機能を使っている。

ちなみに --o ファイル名 のオプションを付けることでエンコードもできる。詳細な内容はこちらを参照のこと。


カテゴリー: Mac

動画プレイヤーmpvのススメ」への3件のフィードバック

  1. しらたま

    初めまして。しらたまと申します。

    自分もmpvを貴ページを参考に設定しているのですが
    ストリーミングムービーを再生している時に
    タスクバーが黄色(一時停止)、再生(緑)と点滅して困っております。

    説明書がたぶん英語ではないからわからないのだと思うのですが
    自分のパソコンはWindows7でして、ムービー再生の際に
    そういったカラーの機能があるのです。

    普通のムービープレイヤーですと「表示」の項目などのオプションで
    そういった機能のオフができるのですが、mpvに関してはどうすればいいか
    全くわかりません。

    もし何かお分かりの点がありましたら、教えて頂きたく存じます。
    長文にて失礼しました。

    返信
    1. イショティハドゥス 投稿作成者

      はじめまして。
      ちょこっと調べてみましたが、そういう要望を出している人は他にいるものの、実装予定はないそうです。
      [make] taskbar progress indicator on windows [optional] · Issue #2535 · mpv-player/mpv – https://github.com/mpv-player/mpv/issues/2535
      どうしてもやりたいのなら、その部分のソースコードを見つけてビルドし直すしかないんでしょうかね。とてもめんどくさそうですけど。

      返信
  2. ピンバック: mpvで動画の音ズレを修正しながら見る方法など色々な動画再生方法 | inabamasaki.com

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です