- mpv はコマンドライン中心の自由・オープンソースなメディアプレーヤーで、さまざまなメディアファイル形式、オーディオ・ビデオコーデック、字幕形式をサポートする
- 強力な スクリプティング 機能とユーザースクリプト集により、標準プレーヤーを好みの形に拡張しやすい
- ミニマルな設計を維持しているため独立した GUI はないが、映像上で基本操作を行える小さなオンスクリーンコントローラーを提供する
- OpenGL、Vulkan、D3D11 ベースの 高品質なビデオ出力 とハードウェアデコード API のサポートにより、さまざまな環境で再生品質を調整できる
- 最初からライブラリ統合を考慮した C API があり、他のアプリケーション内に mpv を組み込んで活用できる
コマンドライン中心のメディアプレーヤー
- mpv はコマンドラインで使用する自由なメディアプレーヤー
- 多様な メディアファイル形式、オーディオ・ビデオコーデック、字幕形式をサポートする
スクリプティングと操作方法
- スクリプティング 機能により、プレーヤーの動作を幅広く拡張できる
- ユーザースクリプトは wiki の User Scripts にまとまっている
- ミニマリズムを志向しており、独立した GUI は提供しない
- 基本操作には、映像上に表示される小さな オンスクリーンコントローラー を利用できる
ビデオ出力とデコード
- OpenGL、Vulkan、D3D11 ベースの ビデオ出力 を提供する
- ビデオ愛好家向けの再生機能も含まれる
- 高品質アルゴリズムベースの ビデオスケーリング
- カラー管理
- フレームタイミング
- 補間
- HDR
- ほとんどのプラットフォームで複数の ハードウェアデコード API を利用できる
- ハードウェアデコードは実行中に必要に応じて有効化できる
アプリケーション統合と開発状況
- mpv は他のアプリケーションに容易に統合できるよう、最初から C API を設計している
- API は client.h にある
- プロジェクトは活発に開発中で、コードのリファクタリングと整理、機能追加に重点を置いている
- 機能要望やパッチは mpv GitHub issues を通じて送ることができる
関連リソース
- Installation: インストール案内
- Source Code Repository: ソースコードリポジトリ
1件のコメント
Hacker Newsでの意見
mpv は優れたメディアプレーヤー。かなりミニマルで性能もよく、やるべきことをきちんとこなす。
作者がロケール(locale)について怒りをぶちまけた素晴らしいコミットもある: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02... 笑いながら読む価値あり
Zig、Go、Rust など多くの言語の標準ライブラリは、C 標準ライブラリや POSIX API よりはるかに先を行っている。それだけでも使う十分な理由になる
25年前に Spolsky が「everything you wanted to know about Unicode and character sets」という記事を書いているが、Unicode/UTF 以後の世界しか知らない人にも有益かもしれない
errnoでもこんなことをやったと想像してみろ、という話については、実際にそうなっている例がある。localtime、localtime_r、tzsetのような 時刻関数 がそれだ。ロケールに依存するのでロケール隣接領域ではあるが、タイムゾーンもグローバル状態なので、POSIX 移植可能なマルチスレッド C コードで標準 API だけを使って別のタイムゾーンの時刻を得ることは不可能だ
wchar_tはどちらも壊れたレガシーの脳死状態だ。C/POSIX 標準委員会に有能な人がいたなら、とっくに廃止されるか削除されていただろう。gets()は削除したではないか。知らない人には侮辱的に感じられるかもしれないこの感情的爆発を正当化するために、長い文章を書くことにする。きつい表現が苦手な人は、これを宗教文書だと思ってほしい。」本当に伝説的
数年前に Linux で使い始めたが、今では Android タブレットまで含め、すべてのデバイスにインストールしている。完璧。ミニマルなデフォルト、妥当な設定、速さ、ただちゃんと動く。
SSH 越しでもネイティブ再生できるのがすごい:
mpv sftp://mit@nyx/home/mit/Work/merged.mp4最近、動画を回転させるショートカットが必要になったが、他のプレーヤーでは簡単にはできなさそうで、mpv では
input.confにr cycle_values video-rotate "90" "180" "270" "0"を入れればよかったmpvLinux なら、
mpv.confにhwdec=autoを追加して ハードウェアアクセラレーション を有効にするのを忘れてはいけない。AMD/Intel/NVIDIA で動作する。https://interfacinglinux.com/2024/01/10/hardware-acceleratio...
vo=gpu-next、gpu-api=vulkan、hwdec=vulkan、gpu-context=waylandvkVulkan Video が動作しない場合は、
hwdec=vulkanをhwdec=vaapiに変えられるpacmanで mpv をインストールして 4K 動画を再生してみたところ、CPU ファンがすぐに回り始め、topでは複数のコアが使われているのが見えた。この HN スレッドを読み進めていてhwdec=autoを知った。mplayer と VLC を使ってきた立場からすぐに浮かぶ疑問は、「メンテナーはこれをデフォルトにしないことで、どんな トレードオフ を受け入れようとしているのだろうか?」というもの
このプロジェクトは非常に古い系譜を持つプロジェクトで、以前は mplayer として知られていた。2001年まで遡るコミットが50万件もあり、それも CVS リポジトリが Subversion に変換された後の基準だ。
Ubuntu を動かすファンレスの Minix z100 で streamlink と mpv を併用すると、オリンピック視聴環境としてほぼ完璧だった。
https://streamlink.github.io/
https://www.minix.com.hk/products/z100-0db-fanless-n100-mini...
ばかげて聞こえるかもしれないが、個人的に中核機能は複数の字幕を同時に表示できることだと思う。トラック、オフセット、位置、サイズなどを、いくつかのショートカットキーで簡単に設定できる。
どのストリーミングサービスもこれを提供しておらず、ユーザーの所在地と「関係ない」と判断した字幕言語は積極的に隠す。そういうサービスは尊重しにくい。
--sid1=と--sid2=から始めれば十分うまく動く。私と配偶者はどちらも英語ネイティブではなく、母語も互いに違う。私は英語にはかなり慣れているが、一部の方言は難しく、音声が騒がしいと単語を聞き逃すことがあるので英語字幕を好む。配偶者は自分の母語の字幕を好む。
複数の字幕を表示できれば、少し画面スペースを使う代わりに、二人とも望む視聴体験を得られるので、十分に価値がある。
これについて記事を書いた: https://www.baeldung.com/linux/mpv-subtitles-automatic。ただし、対応字幕形式のドキュメントが不足しているのは残念で、実際の対応形式を確認するには ffmpeg のコードをのぞく必要があった。
さらに https://subdl.com/ と https://github.com/alexanderwink/subdl は、コマンドラインで字幕を探してダウンロードするのに良いリソースだ。
mpv はいつもよく動き、投げ込まれたほぼ何でも簡単に処理してきた。
今は変わっているかもしれないが、数年前に初めて触れたとき、このプロジェクトが他のプレイヤーと違っていた点は、正確性と正確な再生を非常に重視しているように感じられたことだった。たとえば VLC では色再現が少しおかしいといった特異な問題を示すファイルでも、mpv では完璧に再生されたことがある。
ただ、なぜそうなのかはよく分からない。どちらも多くのコーデックについて、概ね同じライブラリに依存していると思うからだ。
mpv は素晴らしい。順不同でおすすめできるもの: Seeds of Might/JySzE の基本
mpv.conf、機能豊富だが依然としてミニマルな UI である uosc、uosc や他のカスタム UI と一緒に使う高速サムネイラー thumbfast、音声ベースでオープニングなどをスキップする Eisa01 の SmartSkip。[1] Windows: https://gist.github.com/JySzE/db4149cad726b3b6955dca8d47a197...、macOS: https://gist.github.com/JySzE/34ee131da3974811a9469e1e3b7d4d...
[2] https://github.com/tomasklaen/uosc
[3] https://github.com/po5/thumbfast
[4] https://github.com/Eisa01/mpv-scripts#smartskip
オープニングやエンディングクレジットを安定して見つけるには、非局所的な分析が必要になる。基本的には、1シーズンまたは作品全体のエピソード間で共通して現れる音声区間を見つける必要がある。
それを行える CLI ツールを作ったが、正直なところ「完成」した状態ではなく、おそらく今後もそうだと思う。当初の目標は Jellyfin プラグインを開発することだったが、後になって、すでにそういうプラグインがあることを知った。
https://github.com/aksiksi/needle
現存する最高のメディアプレイヤーだ。優れたミニマル UI、ハードウェアアクセラレーションの活用、ただ動画を再生するという点が良い。
これほど優れ続けているので、おそらく一生、海賊版利用を続ける理由の一つになる。ストリーミングサービスはプレイヤーに何百万ドルも費やしているのに、この水準には近づけていない。
MPV には多才なスクリプトがある。たとえば、視聴中の動画を切り出したりクロップしたりできる[1]
ほかのプレーヤーでは見たことのない機能をショートカットキーに割り当てることもできる。ときどき視聴中のシーンの明るさと色を正規化するために
input.confにn vf toggle normalize=smoothing=100と書いているが、ハードウェアデコードを使うと動作しない場合がある動画の回転は
Ctrl+r no-osd cycle-values video-rotate "90" "180" "270" "0"のように設定する[1] <https://github.com/occivink/mpv-scripts>
[1]: https://gist.github.com/madeindjs/f33225cf4d8fdc9f61e0fe3ebe...
あまり知られていない点として、mpv は YouTube 動画をストリーミングできるだけでなく、CLI から
mpv ytdl://ytsearch:queryで YouTube 検索もできるまた ASCII、sixel、kitty 画像プロトコルを使って、ターミナル内で動画を直接再生することもできるが、この中では kitty 画像プロトコルの品質が圧倒的に良い
これまで mpv でいちばん気に入っている機能は、コンテンツに CRT シェーダーをリアルタイムで適用できる点だ。この方式では、HD 映像を実際の 240p バッファへ適切にダウンスケールしたうえで、シェーダーが画面解像度に合わせたアップスケール処理も行う
https://i.imgur.com/akmgzxX.png
https://github.com/hhirtz/mpv-retro-shaders