よわよわ大学生の掃き溜め

自分の興味があることを備忘録も兼ねて記録するところ。

MirakurunとChinachuを使った録画サーバー構築

年末年始の特番攻勢に備えてMirakurunとChinachuを使った録画サーバーを構築しました。 その作業ログを備忘録も兼ねて残しておきます。

環境紹介

某メル○リで購入したFujitsuのESPRIMOを使用しています。

  • Core2 Quad Q8200 4C4T 2.33GHz
  • RAM PC3-16000 2GBx2
  • HDD 1TB
  • Debian Buster(10.11)
  • PLEX PX-MLT5PE
  • ACR39-NTTCom

チューナードライバのビルドとインストール

今回、チューナーのドライバとしてnns779さんが開発されたpx4_drvを使用させていただきました。

まずはビルドなどに必要なパッケージをインストールします。

sudo apt install git unzip gcc make linux-headers-$(uname -r)

リポジトリをクローンします。

git clone https://github.com/nns779/px4_drv.git

px4_drvを使用するためにはファームウェアPLEXが出している公式ドライバから抽出し、インストールをする必要があるため、まずはその作業を行います。

cd px4_drv/fwtool/
make
wget http://plex-net.co.jp/download/pxmlt5pev1.3.zip
unzip pxmlt5pev1.3.zip
./fwtool pxmlt5pev1.3/x64/PXMLT5PE.sys it930x-firmware.bin
sudo mkdir -p /lib/firmware
sudo cp it930x-firmware.bin /lib/firmware/

wgetをする対象のURLは、手持ちのチューナー用の「旧ドライバ」のダウンロードリンクをhttp://plex-net.co.jp/download/から探して置きかえてください。

ファームウェアをインストールしたらドライバのビルドとインストールを行います。

cd ../driver
make
sudo make install
sudo reboot

正常にインストールされているか確認します。

lsmod | grep -e ^px4_drv
ls /dev/pxmlt5video*

1つ目のコマンドでpx4_drvから始まる行が表示され、2つ目のコマンドで以下のような結果が表示されれば成功です。

2つ目のコマンドに関しては、使用するチューナーがPX-MLT5PEでない場合は別のコマンドを入力する必要があります。 これについてはpx4_drvのREADMEを参照してください。

/dev/pxmlt5video0  /dev/pxmlt5video1  /dev/pxmlt5video2  /dev/pxmlt5video3  /dev/pxmlt5video4

カードリーダー(ACR39-NTTCom)のセットアップ

まずはhttps://www.acs.com.hk/en/driver/302/acr39u-smart-card-reader/からPC/SC Driver Packageをダウンロードしておきます。

以下はここでACS-Unified-PKG-Lnx-118-P.zipというファイル名でPC/SC Driver Packageをダウンロードできた前提で記載しています。

以下のコマンドを実行します。

unzip ACS-Unified-PKG-Lnx-118-P.zip
sudo dpkg -i ACS-Unified-PKG-Lnx-118-P/debian/buster/libacsccid1_1.1.8-1~bpo10+1_amd64.deb
sudo apt install pcscd libpcsclite-dev pcsc-tools
sudo reboot

カードリーダーを接続、B-CASカードを挿入して以下のコマンドを実行し、Japanese Chijou Digital B-CAS Card (pay TV)と表示されればインストールは成功です。 表示が確認できたらCtrl+Cで抜けましょう。

sudo pcsc_scan

libarib25のビルドとインストール

libarib25B-CASカードを使用し、放送波を復号(B25デコード)してくれるすごいやつです。

sudo apt install g++ cmake
wget https://github.com/stz2012/libarib25/archive/master.zip
unzip master.zip
cd libarib25-master
cmake .
make
sudo make install

recpt1のビルドとインストール

recpt1はチューナーとカードリーダーをうまいこと使って番組を録画してくれるやつ(だと思っている)。

sudo apt install autoconf automake
git clone https://github.com/stz2012/recpt1.git
cd recpt1/recpt1
vi pt1_dev.h

ここで、pt1_dev.hにチューナーのデバイスファイルの場所を追記します。 PX-MLT5PEを使用する場合は以下のようになるはずです。

char *bsdev[NUM_BSDEV] = {
    "/dev/pxmlt5video0",
    "/dev/pxmlt5video1",
    "/dev/pxmlt5video2",
    "/dev/pxmlt5video3",
    "/dev/pxmlt5video4",
};
char *isdb_t_dev[NUM_ISDB_T_DEV] = {
    "/dev/pxmlt5video0",
    "/dev/pxmlt5video1",
    "/dev/pxmlt5video2",
    "/dev/pxmlt5video3",
    "/dev/pxmlt5video4",
};

追記したら保存し、以下のコマンドを実行します。

./autogen.sh
./configure --enable-b25
make
sudo make install

これでrecpt1のインストールは完了です。 ここまで正常にインストールができていれば、以下のコマンドでTOKYO MXを10秒間録画できます。

recpt1 --b25 --strip 16 10 test.m2ts

Node.jsのインストール

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo bash -
sudo apt update
sudo apt install nodejs
sudo npm install -g npm

PM2のインストール

Node.js上でdocker-composeにおけるrestart: always相当の動作をさせるための何か。

sudo npm install pm2 -g
sudo pm2 startup

Mirakurunのインストール

sudo npm install mirakurun -g --unsafe-perm --production
sudo vi /usr/local/etc/mirakurun/tuners.yml

/usr/local/etc/mirakurun/tuners.ymlにチューナーの種類を記入します。 今回はPX-MLT5PEを使用したため、以下のような記述をnamecommand内の数字を変えながら5つ書きました。

- name: PX-MLT5PE-0
  types:
    - BS
    - CS
    - GR
  command: recpt1 --b25 --strip --device /dev/pxmlt5video0 <channel> - -
  isDisabled: false

追記して保存したら以下のコマンドを実行します。 2つ目のコマンドではチャンネルスキャンを行うため、かなり時間がかかると思います(10〜20分程度)。

sudo mirakurun restart
curl -X PUT "http://localhost:40772/api/config/channels/scan?reflesh=true"
sudo mirakurun restart

Chinachuのインストール

まずはリポジトリをクローンして中に入ります。

git clone https://github.com/Chinachu/Chinachu.git
cd Chinachu

その後、以下のコマンドを3回実行し、各回で2, 4, 5のオプションを選択します。

./chinachu installer

コンフィグを編集します。

cp config.sample.json config.json
vi config.json

基本的にuidに自分のユーザーIDを記入すれば動きます。 あとはお好みでrecordedDirstorageLowSpaceThresholdMBstorageLowSpaceActionあたりを弄りましょう。

その後、以下のコマンドを実行します。

echo [] > rules.json
./chinachu update
vi processes.json

ここで、"exec_interpreter": ".nave/node",という行を削除します(おそらく2箇所あります)。

これでChinachuのインストールは完了です。 続けて以下のコマンドでChinachuをPM2に登録します。

sudo pm2 start processes.json
sudo pm2 save

再起動してもChinachuが起動しているか確認します。

sudo reboot
sudo pm2 list

URL

Mirakurun:http://<IPアドレス>:40772

Chinachu:http://<IPアドレス>:20772

内部DNSを利用している場合、MirakurunはlocalhostもしくはIPアドレス直打ちのアクセスでしか使用できないので注意しましょう(1敗)。