エンコード サーバー

[ハードウェアエンコード/VAAPI] EPGStation v2 への対応

投稿日:

昨夏頃から比較的大きなパフォーマンスのチューニングが入り、
近く大きなアップデートがありそうな(※筆者の主観です) Mirakurun 周りですが、
その大きなアップデートに追随できるようにクライアント側の一つ、EPGStation のアップデートを試みた。

ちょうど1年前に EPGStation v1系 で VAAPI を用いたハードウェアエンコードをセットアップした。
当時はまだリリース直後だったので、v2 系の採用は保留したのだが、
なかなか魅力的な改良も施されており、これを契機にできればアップデートしたいところ。
ハードウェアエンコード周りがすんなり移行できるか否かが今回のポイントである。


 

環境

OS は Ubuntu Server 20.04 LTS (x86_64)。
録画環境は Mirakurun + Chinachu(自分用) + EPGStation(家族用)の構成。
Mirakurun, Chinachu は実機システム上で直接稼働(*)、
EPGStation(v1) はこちらをベースに (rootless-)docker で稼働中。
(*: Mirakurun は別途 docker 化の予定。Chinachu は、、、 Air化!?)
 

VAAPI on EPGStation-v2 docker

以下、docker-mirakurun-epgstation の 2021年末のコミットをベースに記述する。
編集するファイルは以下。

  • docker-compose.yml
  • epgstation/debian.Dockerfile
  • epgstation/config/config.yml
  • epgstation/config/enc.js

    Google Adsense

docker-compose.yml

v1 での対応とほぼ変わらない。

  • epgstation/devices: /dev/dri:/dev/dri の有効化
  • epgstation/environment: LIBVA_DRIVER_NAME: "iHD" の明示化
  • (Mirakurun 関連の削除)

 

Dockerfile

epgstation/debian.Dockerfile をベースにする。
元の v1系がこちら系列であったこと、別件で alpine をベースにして性能が出なくてハマったなどによる。
dockerfile も v1系の時と同様に VAAPI環境を構築し、vaapi対応ffmpeg をビルドする。

 

config.yml

epgstation/config/config.yml.template をベースにする。
以前 json で記述した内容を yml で書き直すだけ。

Google Adsense

 

enc.js

テンプレートも色々細かくアップデートされているようなので、
epgstation/config/enc.js.template をコピーしてベースにする。
vaapi 用と一部ハードウェアエンコードがうまく動作しない時用のソフトエンコを用意する。

Google Adsense

enc_vaapi.js

Google Adsense

enc_software.js

 

動作確認

録画予約, 録画, トランスコード, 録画ファイルの視聴、ライブ視聴などを
いくつか軽く試してみたが、ハードウェアエンコードを含めいずれも正しく動作しているようだ。
enc.js.template への変更を吸収したため、「エンコード」内で進捗率が確認できるようになっていた。
 

感想

v1 から v2 系へメジャーバージョンがあがり、
UI はもちろん設定ファイルも json から yml に変わったので少し腰が重くなっていたものの、
当然といえば当然だが、試してみると思いのほかすんなり移行ができそうなことが確認でき、
config.yml は必要箇所をコピペで微調整するレベルであった。

enc.js については 同template がアップデートされているので、
それを吸収することで追加された機能をフルに活用できるようであるが、
書き方自体は既存のものと同じように見えるので特に大きな問題にならないだろう。

近々、稼働中の v1 系のデータ, db などを含めて本格的に移行予定。

毎回こんな変更を手作業でするのは面倒なので、本家と自分用とを git 管理して追随できるようにしておいた。
# というか、既に今回のマージ作業自体が半分 git の力でなんとかした。
 

Google Adsense

-エンコード, サーバー
-, , , , ,

Copyright© P-Life, 2022 All Rights Reserved.