昨日知った。しかしこれは強い。
軽い、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 ファイル名 のオプションを付けることでエンコードもできる。詳細な内容はこちらを参照のこと。
初めまして。しらたまと申します。
自分もmpvを貴ページを参考に設定しているのですが
ストリーミングムービーを再生している時に
タスクバーが黄色(一時停止)、再生(緑)と点滅して困っております。
説明書がたぶん英語ではないからわからないのだと思うのですが
自分のパソコンはWindows7でして、ムービー再生の際に
そういったカラーの機能があるのです。
普通のムービープレイヤーですと「表示」の項目などのオプションで
そういった機能のオフができるのですが、mpvに関してはどうすればいいか
全くわかりません。
もし何かお分かりの点がありましたら、教えて頂きたく存じます。
長文にて失礼しました。
はじめまして。
ちょこっと調べてみましたが、そういう要望を出している人は他にいるものの、実装予定はないそうです。
[make] taskbar progress indicator on windows [optional] · Issue #2535 · mpv-player/mpv – https://github.com/mpv-player/mpv/issues/2535
どうしてもやりたいのなら、その部分のソースコードを見つけてビルドし直すしかないんでしょうかね。とてもめんどくさそうですけど。
現在は no-taskbar-progress オプションで無効化できるようです
ピンバック: mpvで動画の音ズレを修正しながら見る方法など色々な動画再生方法 | inabamasaki.com