DebianでのHW動画再生支援機能
しばらく触っていなかったサブPCでm2tsの動画を再生しようとしたらカクカクで使い物にならなかった。CPUはAthlon5350という安いAPUでOSはDebianのStretchだった。
Linuxはデスクトップとしてよりサーバーとしての使用がメインだったので動画のハードウェアデコードに関しては殆ど気にしたことがなかった。気になったのでちょっと調べてみた。
Linuxにおける動画再生支援機能のAPIは大きく分けて2種類らしい。VA APIとVDPAUの2つがあるのだが、これらの違いは他に詳しいサイトがあるのでリンクを貼っておく。
LinuxでGPUの動画再生支援を用いる(主にDebian/Ubuntu向け) - kakurasan
また、Radeonの機能のサポートについてはこのページが詳しい。
上のページのAthlon5350(KABINI)の欄を見ると、H264とMPEG2のハードウェアデコードはしてくれそうである。自分のPCに載っているGPUが何なのかについては、lspciで確認してもいいがscreenfetchというコマンドを使うと見やすくていいかもしれない。
手動でのインストールが必要なパッケージはfirmware-linuxだけのようで、/etc/apt/sources.listにcontribとnon-freeを追加してからインストールすると、他の必要なパッケージを一緒にインストールしてくれる。また、vainfo又はvdpauinfoを入れると同名のコマンドで使える支援機能の確認ができるようになる。
再生用ソフトについてはmpvを使用した。--hwdecオプションにvdpauかvaapiを引数として渡すと再生支援機能を使ってくれる。
mpv --hwdec vdpau movie.mp4
のように使う。
実際に試してみると--hwdecを付けた時のほうがCPU使用率が低く、しっかり再生できていた。実は以前にプロプライエタリなドライバを入れ、その後アンイストールした経験があり、そのせいか一度インストールし直すまではvaapiもvdpauも初期化に失敗していた。動画の再生時にやたらカクついていたのも以前のプロプライエタリドライバの残滓が何か悪さをしていた様でクリーンインストール後は--hwdecを使わずともカクつかずに再生できるようになった。