Raspberry Pi 4で地デジ4チャンネル同時録画するには

Raspberry Pi地デジ関連記事


以前、Rasbperry Piで、地デジを視聴するシステムを作ってみたのですが。

少々不満がありました。

録画したい番組が同じ時間で重複して、うまく録画できない場合がありました。この記事では4チャンネル同時録画可能なチューナーを取り付けて、録画したい番組をすべて録れるようにします。

また空き容量を心配しなくて済むように、USB 3.0端子に1TBのHDDを取り付けてみました。

実際に試してみたのですが、上図のように、Raspberry Pi 4で実際に4チャンネルの同時録画が可能のようです。

このようなシステムの構築手順を記録しておこうと思います。

※20.9.13追記:

半年ほど使っていましたが、microSDカードが壊れました。EPGデータの受信やmariadb等、microSDカードが酷使された感じです。

その後、実用的かつ快適な録画環境を追求したところ、最終的に64ビット+HDD版の次の記事にまとまりました。

以下32ビット+microSDカードの記事になります。


使用する機材

Raspberry Pi 4本体と起動用microSDカード

地デジの録画やエンコード等、負荷が大きいため、Raspberry Pi 4はメモリー4GBモデルを選択します。起動用のmicroSDカードは、ランダムアクセスが高速なUHS-I U3 A2対応がお勧めです。地デジの録画は外付けHDDに行うため、microSDカードの容量はそれほど大きくなくても大丈夫かと思います。

USB 3.0対応外付けHDD

コンセント(電源)が付いている3.5インチの外付けHDDを取り付けるのが楽です。その場合、Raspberry Pi、HDD、チューナーの3つのコンセントが必要になります。

2.5インチのHDDを取り付けてコンセントを節約したい場合、こちらの記事をご覧下さい。

B-CASカードとICカードリーダ

こちらのカードリーダを使用してみました。

4チャンネル対応フルセグ地デジチューナ

録画・視聴したい番組が重なった場合。予約を削除したり何だり調整が面倒ですし、まあどうせなら両方視聴・録画できたほうが便利ということで。通常のチューナと比較して価格は高いですが、見たいと思った番組はほぼ全て視聴・録画できるメリットは大きいかと思います。


機材の接続

これらの機材を接続すると、このような感じになります。

コンセントは2つ使用しますが、チューナのコンセントをUSBに変換できれば、使用するコンセントは1つで済む感じもします。このあたりは、あとで実験しようと思います。

B-CASカードは、白い面、電極がある面を上にして刺します。

USB端子は、HDD、B-CASカード、チューナで3つ消費します。

マウスとキーボードを接続しようとすると、端子が足りませんが・・・USB端子1つで、マウスとキーボードを同時に接続したい場合、こちらの記事を御覧ください。

ICカードリーダは、実際に地デジを視聴・録画する時に接続すれば良いため、セットアップ中は外しておいても大丈夫だったりします。


地デジ4チャンネル同時視聴・録画システムの構築 Raspbian・EPGStation編

Raspbianのインストール

使用するOSは、Raspbianをお勧め致します。初期設定は次の記事を御覧ください。

Raspbian Liteでも試したのですが、EPGStationのビルドに失敗して、うまく動かすことができませんでした。

通常版のRaspbianを使用しましょう。

外付けストレージのオートマウント

録画用のストレージは、autofs(オートマウント)でマウントしようと思います。アクセスがない場合、自動的にアンマウントされるため、ストレージの寿命を延ばす効果に期待できそうです。

最初に外付けストレージにファイルシステムを作成(フォーマット)します。

sudo fdisk /dev/sda
# Linuxパーティション作成
sudo mkfs.ext4 /dev/sda1

autofsをインストールして、/usb/hdd1にマウントする設定を行いました。

sudo apt install autofs
# USB接続ストレージは/usbディレクトリにマウントしようと思います
sudo mkdir /usb
# /etc/auto.master.d/usb.autofsファイル作成
echo "/usb /etc/auto.usb" | sudo tee /etc/auto.master.d/usb.autofs
# /etc/auto.usbファイル作成
echo "hdd1 -fstype=ext4,rw :/dev/disk/by-uuid/"`sudo blkid /dev/sda1 | grep -o '\sUUID=\"[0-9a-f\-]*\"' | grep -o '[0-9a-f\-]*'` | sudo tee -a /etc/auto.usb
# autofsサービス有効化
sudo systemctl enable autofs --now

再起動して設定変更を反映しました。

sudo reboot

再起動後、/usb/hdd1にアクセスすると、ストレージが自動マウントされました。

1TBの外付けHDDを接続、ext4でフォーマットしましたが、空き容量は870GBあります。当分、録画可能な容量を心配せずに済みそうです。

DVBインタフェース設定

Siano Rio DVBインタフェース用のファームウェアを/lib/firmwareにコピーします。

curl -O 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/x64/amd64/isdbt_rio.inp /lib/firmware/

USBチューナを取り付けます。正しく認識されているか確認してみました。

ls /dev/dvb/adapter*

adapter0から3までの4つが認識されているようです。

B-CASカードの確認

ICカードリーダを接続、B-CASカードを使用するため、pcscdをインストールしました。

sudo apt install -y pcscd pcsc-tools libpcsclite-dev
sudo pcsc_scan

Japanese Chijou Digital B-CAS Cardとして認識されているようです。

node.js、PM2インストール

視聴・録画システムは、EPGStationを使用させて頂こうと思います。EPGStationを動かすため、Miraurunのインストールが必要です。Mirakurun・EPGStationともにnode.jsで実装されているようです。node.js、PM2をインストールしましょう。

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install pm2 -g

Mirakurunインストール

MirakurunのAdvancedインストールを行いました。

sudo npm install mirakurun -g --production
sudo mirakurun init # to install as service
sudo mirakurun restart # when updated

dvbv5インストール

Mirakurunで使用するDVBツールをインストールしておきます。

sudo apt install -y dvb-tools

チャンネルの設定ファイルをダウンロードしておきます。

cd /usr/local
sudo mkdir conf
cd conf
sudo curl -O https://raw.githubusercontent.com/Chinachu/dvbconf-for-isdb/master/conf/dvbv5_channels_isdbt.conf

それとデコーダのテスト用にarib-b25-stream-testをインストールしました。

 sudo npm install arib-b25-stream-test -g --unsafe

Mirakurun設定

サーバ設定確認

sudo mirakurun config server

ポート番号40772でサーバ動作を確認しました。

チューナー設定

sudo mirakurun config tuners

4チャンネル同時録画可能なチューナ設定を追加します。

- name: PX-S1UD_0
  types:
    - GR
  command: /usr/bin/dvbv5-zap -a 0 -c /usr/local/conf/dvbv5_channels_isdbt.conf -r -P <channel>
  dvbDevicePath: /dev/dvb/adapter0/dvr0
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PX-S1UD_1
  types:
    - GR
  command: /usr/bin/dvbv5-zap -a 1 -c /usr/local/conf/dvbv5_channels_isdbt.conf -r -P <channel>
  dvbDevicePath: /dev/dvb/adapter1/dvr0
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PX-S1UD_2
  types:
    - GR
  command: /usr/bin/dvbv5-zap -a 2 -c /usr/local/conf/dvbv5_channels_isdbt.conf -r -P <channel>
  dvbDevicePath: /dev/dvb/adapter2/dvr0
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PX-S1UD_3
  types:
    - GR
  command: /usr/bin/dvbv5-zap -a 3 -c /usr/local/conf/dvbv5_channels_isdbt.conf -r -P <channel>
  dvbDevicePath: /dev/dvb/adapter3/dvr0
  decoder: arib-b25-stream-test
  isDisabled: false

31行、チューナ設定を追加しました。PX-S1UD_0からPX-S1UD_3までのエントリを追加しました。

mirakurunを再起動しました。

sudo mirakurun restart

チャンネル設定

チャンネルを手動で編集する場合。

sudo mirakurun config channels

下記の内容(餃子のまち向け)を入力しました。

- name: TBS
  type: GR
  channel: '15'
- name: テレビ朝日
  type: GR
  channel: '17'
- name: テレビ東京
  type: GR
  channel: '18'
- name: とちぎテレビ
  type: GR
  channel: '29'
- name: 日テレ
  type: GR
  channel: '34'
- name: フジテレビ
  type: GR
  channel: '35'
- name: NHKEテレ
  type: GR
  channel: '39'
- name: NHK総合
  type: GR
  channel: '47'

オートスキャンする場合、次のコマンドのようです。

sudo curl -X PUT "http://localhost:40772/api/config/channels/scan"

mirakurun再起動後、設定変更が反映されているか確認しました。

sudo mirakurun restart
curl http://localhost:40772/api/tuners
curl http://localhost:40772/api/channels

mariadbインストール

EPGStationで使用するデータベース、mariadbをインストールしておこうと思います。

sudo apt install -y mariadb-server

バイナリログを1日おきに削除するように

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

75行目付近のexpire_logs_daysを1に変更しました。mariadbの初期設定を行います。

sudo mysql_secure_installation
  1. rootパスワードを入力
  2. 必要があれば、rootパスワードを変更
  3. anonymousユーザ削除
  4. リモートログイン無効化
  5. テストデータベース削除
  6. 特権テーブル再読み込み

EPGStation用のデータベースを作成します。

sudo mysql -u root -p 
CREATE DATABASE epgstation CHARACTER SET utf8;
GRANT ALL ON epgstation.* TO epgstation@localhost IDENTIFIED BY 'epgstation';
GRANT ALL ON epgstation.* TO epgstation@127.0.0.1 IDENTIFIED BY 'epgstation';
exit

EPGStationインストール

たっぷり録画できるように。オートマウントした外付けUSBストレージにEPGStationをインストールしようと思います。

sudo apt install git
cd /usb/hdd1
sudo chown -R pi:pi .
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm install
npm audit fix
npm run build
cp config/config.sample.json config/config.json
cp config/operatorLogConfig.sample.json config/operatorLogConfig.json
cp config/serviceLogConfig.sample.json config/serviceLogConfig.json

config.jsonファイルを編集します。

vi config/config.json

dbTypeを変更、mysqlセクションを追加、ffmpegとffprobeのパスを変更しました。

"dbType": "mysql",
"mysql": {
    "host": "localhost",
    "port": 3306,
    "user": "epgstation",
    "password": "epgstation",
    "database": "epgstation",
    "connectTimeout": 20000,
    "connectionLimit": 10
 },
 "ffmpeg": "/usr/bin/ffmpeg",
 "ffprobe": "/usr/bin/ffprobe",

EPGStationを起動後、自動起動するように設定しました。

sudo pm2 start dist/server/index.js --name "epgstation"
sudo pm2 save

※20.3.20追記:

Raspberry Pi 4のH264ハードウェアエンコードを使用するため、ffmpegのオプションを変更してみましたが。確かに負荷は減ったものの、画面のアスペクト比がおかしいような?

# -c:v libx264オプションを-c:v h264_omxへ変更しました
# 変更を確認
sed -e 's/libx264/h264_omx/g' config/config.json 
# 問題なければ反映
sed -i 's/libx264/h264_omx/g' config/config.json 

エンコード機能を使う場合、調整が必要な感じです。


以上でRaspberry Pi 4に4チャンネル地デジ同時録画が可能なシステムを導入してみました。

Webブラウザで

http://<Raspberry PiのIPアドレス>:8888/

にアクセス後、録画予約してみたところ。確かに4チャンネルを同時に録画できました。

無変換で録画しましたが、このときのRaspberry Piの負荷は。

ロードアベレージは1.07程度で、CPUコアを4つ持つRaspberry Pi 4には余裕な感じです。

録画領域の空き容量も接続した1TBのストレージが正しく認識されているようです。

最後に。こちらを使用して、コンセントは1つで済みました。※こちらの製品を利用して正しく動作する保証は致しません。使用は自己責任でお願い致します。

最終的な配線はこのような感じになりました。

  1. 右下のコンセントに電源を接続。
  2. LANケーブルを接続
  3. チューナーにアンテナ線を接続

これで4チャンネル地デジ録画・視聴が可能になりました。

親ガメ子ガメ、HDD・Raspberry Pi 4本体・地デジチューナーの3段重ねで、放熱が少々不安ですが。少し動かして様子を見ようと思います。

※20.9.3追記:熱暴走のため、ケースをアーマーケースに変更する必要がありました。

宜しければお試し下さいませ。


Raspberry Pi地デジ関連記事

スポンサーリンク

フォローする

スポンサーリンク