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のビルドとインストール
libarib25
はB-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を使用したため、以下のような記述をname
とcommand
内の数字を変えながら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を記入すれば動きます。
あとはお好みでrecordedDir
やstorageLowSpaceThresholdMB
、storageLowSpaceAction
あたりを弄りましょう。
その後、以下のコマンドを実行します。
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敗)。