非常にニッチな状況だと思いますが、Xを立ち上げずに動画を再生したい機会がありました。
スペックもそんなに高くないため、なるべくCPU使用率も減らしたい。
結論
以下のコマンドで再生可能です。(hwdecは各自環境に合わせる)
(GPUあり)
$ mpv -vo gpu -gpu-context drm -hwdec=vaapi sample.mp4
(GPUなし)
$ mpv -vo drm sample.mp4
初めに試した方法
mplayerの頃からFrameBufferを利用して再生する機能がありますが、FrameBufferであるためCPUを利用したMemory Copyが走ってCPU使用率が非常に高いです。
$ mplayer -vo fbdev sample.mp4
mpvで同様のことをしようとすると、以下のコマンドで再生できます。
$ mpv -vo drm sample.mp4
こちらもDirect Rendering Managerを利用してXなしにvideo出力が出来ますが、非常にCPU利用率が高いです。
HW支援機能を使う
GPUがある場合、OpenGL/OpenGL ESを使って描画を高速化することができます。-vo gpu
オプションを使うと利用できますが、デフォルトではX用のgpu contextを選択しようとするため、コンソール上からは利用できません。GPU/DRMを組み合わせて使うオプションを指定すると再生が可能です。
$ mpv -vo gpu -gpu-context drm sample.mp4
また、video codecのHW decodeをサポートしている場合、HW支援機能を使うことができます。vaapiを利用してHWデコードを行う場合、以下のコマンドで利用できます。
$ mpv -vo drm -hwdec=vaapi sample.mp4
トラブルシューティング
- Q. 再生できません!
- mpvの最新版を使うと解決する可能性があります。私の環境だと0.28.2では再生できず、git cloneして最新版を利用しました。