EPGStation v2でハードウェア動画再生支援機能(vaapi)を使ってエンコードする方法①

自宅サーバー

先日、EPGStation v2に移行する方法について解説しました。

この度、EPGStation v2に移行しましたので、改めてvaapiエンコード設定をしました。

基本的には以下の記事と同じ手順ですが、若干修正がありましたので内容を更新しておきます。

EPGStation v2コンテナへのvaapi導入手順

前提

本手順はDockerにてEPGStation v2が導入されていることを前提とします。

私は以下の記事の手順で導入しました。

ハードウェアビデオアクセラレーション - ArchWiki

docker-compose.ymlの修正

VAAPIをdockerコンテナ内で利用するために、ホストのデバイスをコンテナと共有します。

ホストのデバイスをコンテナと共有するために、docker-compose.ymlを修正します。

修正箇所は以下です。

66~67行目:devicesを追記

参考:Intel(VAAPI)ドライバ

今回もIntelのi965-va-driverを使用します。

幸いなことに、i965-va-driverはUbuntuでは現在標準ドライバとなっていて、自分でインストールする必要はありません。

Dockerfileの修正

VAAPI対応のffmpegをビルドするために、Dockerfileを修正します。

修正箇所は以下です。

  • 11~13行目:i965-va-driver-shadersのpkgをインストール
  • 39行目:ffmpegのビルド時にvaapiを有効化
私

ここまで

コンテナ起動

実行中のEPGStationのDockerコンテナを停止して、再ビルドします。

ハードウェアエンコード

コンテナ内では、VAAPIエンコードが可能な状態になっています。

エンコードのサンプルとして、./recorded/hogehoge.m2ts./recorded/hogehoge.mp4にハードウェアエンコードしてみます。

試しに以下のコマンドでエンコードしてみます。

コンテナ内で以下のコマンドを実行します。

もしくは、ホストから以下のコマンドで実行します。

パラメータはお好みで追加してください。

しばらく待って、./recorded/hogehoge.mp4が生成されていたらOKです。

せっかちな方は実行中にtopコマンドなどでffmpegの実行プロセスを確認してみてください。

もし、エンコード時にエラーを吐くようなら、コマンドの-vaapi_device /dev/dri/card0の部分を-vaapi_device /dev/dri/renderD128としてみてください。

私

まずはここまで

Raspberry Pi 4 Model B /ラズベリーパイ4B(8GB RAM)技適マーク付/MicroSDHCカード128GB 一式セット
NTTコミュニケーションズ 接触型ICカードリーダー・ライター e-Tax Win&Mac対応 SCR3310-NTTCom

まとめ

この記事では、EPGStation v2のコンテナをVAAPIエンコード可能にする方法について紹介しました。

EPGStation v2のGUIからエンコードする方法は、以下の記事で解説したいと思います。

私

もはや趣味の世界で需要は無いと思いますが・・・。

参考になれば幸いです。

コメント

タイトルとURLをコピーしました