[Raspberry Pi4] [再]ラズパイで地デジ4チャンネル同時録画サーバ

Docker

ラズパイで動かしている Epgstationでハードウェアエンコードを有効にするためのメモ。前回=[Raspberry Pi4] Ubuntu で地デジ4チャンネル同時録画サーバー with PX-Q1UD の続き。まだうまく行っていない部分はありますが、概ね運用できるようになりました。

素人作業なので参考にする方は自己責任で。

試した環境

今回も docker-mirakurun-epgstation を利用させていただきます。

ハードウェアの準備

チューナー、B-CASカードリーダー、SSDを接続します。かなり熱がでるのでアルミケースにヒートシンクを貼り付けています。

コンパクトなラズパイが台無しです。

ドライバのインストール

チューナーのドライバを入れます。

# PX-Q1UD/PX-S1UD V2.0 の場合は下記が必要。
$ sudo apt-get install -y unzip
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
$ unzip PX-S1UD_driver_Ver.1.0.1.zip
$ sudo cp PX-S1UD_driver_Ver.1.0.1/x86/i386/isdbt_rio.inp /lib/firmware/
$ rm -rf PX-S1UD_driver_Ver.1.0.1.zip PX-S1UD_driver_Ver.1.0.1

# コンテナからもデバイスにアクセスできるようにパーミッションを変更する
$ echo 'SUBSYSTEM=="vchiq",GROUP="video",MODE="0666"' | sudo tee /etc/udev/rules.d/10-vchiq-permissions.rules

同じことを gist に書いてあるので、そのまま流用する場合は以下のコマンドを実行。

$ curl -sf https://gist.githubusercontent.com/hagewashi/afb8b4a20480acb6d75d0dcee88c9d3e/raw/4659bfbba7d1fc12ce007924169d6b409a3cf8ae/PXQ1UD_driver_install.sh | sudo sh -s

GPUでエンコーディングするので、GPUのメモリサイズも増やしておくと良い。💯。
[Raspberry Pi4] GPUに割り当てるメモリを増やす

ここでいちど再起動します。

$  sudo shutdown -h now

reboot だと起動後にデバイスが認識されないことが多いため、チューナーも含め、一度電源を完全に切ってから、再度入れ直すようにしています。 特にPX-Q1UD は外部電源も切断しないとチューナーが不安定になることが多いです。

Mirakurun と EPGStation のコンテナを動かす

Mirakurun と EPGStation のコンテナを動かします。

公式の手順を真似して、必要な作業を gist上のシェルスクリプトにまとめてみました。

$ curl -sf https://gist.githubusercontent.com/hagewashi/91c4c739ec5ab64b2a7078d7b815d6e3/raw/35583fcd4711d58dbfeb48512dd76277b08621fa/docker-mirakurun-epgstation-pi4-setup.sh | sh -s
公式の手順とラズパイ用の違いメモ
  • docker-compose.yml
    • epgstation が /dev/video* /dev/vchiq を使えるように devices を追加
    • epgstation のコンテナに privileged: true を追加(いらない?)
  • epgstation/pi4.Dockerfile
    • ffmpegは バージョン 4.4 を使うように。
  • epgstation/config/config.yml
    • エンコード済みの録画をHLS再生する場合に、ハードウェアエンコード(hls h264_v4l2m2m)を使うように。
    • ライブ視聴などはCPUエンコードのままなので、実質見れない。
  • epgstation/config/enc.js
    • 録画後のエンコード方法をlibx264 から h264_v4l2m2m に変更

コンテナを起動する

コンテナを起動します。

初回はコンテナイメージのビルド(ffmpegのビルド)が行われるため時間がかかります。コーヒーでものみながら、気長に待ちましょう☕

$ cd docker-mirakurun-epgstation
$ docker-compose run --rm -e SETUP=true mirakurun
$ docker-compose up -d
...
(それなりにビルドに時間がかかります。SDカードだと20分ぐらい。SSDだと少し早くなります。)

コンテナが起動したら、http://<ラズパイのホスト名>:8888 で、EPGStationにアクセスできるようになります。番組表などの取得には少し時間が必要です。しばらく放置しておくと下記のように取得されていました。

GPUでエンコード&ストレージをSSDにしたところ、若干ですが安定度がましたような気がします。

課題

録画後はGPUエンコードできているが、設定が至らないところは多々あって、いまは運用でごまかしている。ライブ配信やストリーミング配信はCPUエンコードのままだし、HLS配信はh264_v4l2m2m でエンコードしているけど、縦横比がおかしくなる。

わし
わし

PCやAndroidでは外部アプリで視聴できるので、それなりに見れるようになった。iPhoneだとHLS配信でしかみれないから縦長になるょ🍣🐟

わし
わし

なんかラズパイ値上がりしてま?💸

コメント

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