6. Mirakurunのインストール
当初は14にしたのですが,Mirakurunが動いても後述のChinachuが動かなかったので,無難にLTSにしました.Nodejsはバージョン変更がapt-getだとめんどくさいので,nodejsのバージョン管理システム"n"を使います.
$ sudo apt-get install nodejs npm
$ sudo npm install –g n
$ sudo n lts
もし事前にapt-getでNode.jsをインストールしていた場合削除しておきます.
$ sudo apt-get purge nodejs npm
$ sudo apt-get autoremove
バージョンを確認すると,今回はv12.18.3でした
$ node –v
・タスク管理ソフトのPM2をインストールします.
$ sudo npm install pm2 -g
・Mirakurun本体をインストールします.
$ sudo npm install mirakurun -g --unsafe --production
$ sudo npm install rivarun -g
$ sudo npm install arib-b25-stream-test -g –unsafe
$ sudo pm2 status
pm2のステータスでMirakurun-serverがonlineになっていればOKです.
・録画チューナー設定を書き換えます.前回の記事で,4つのビデオデバイスが使えるようになったので,以下のようにチューナーを使うコマンドを設定します.
$sudo EDITOR=nano mirakurun config tuners
- name: PX4-S1
types:
- BS
- CS
command: recpt1 --device /dev/px4video0 --lnb 15 <channel> - -
decoder: arib-b25-stream-test
isDisabled: false
- name: PX4-S2
types:
- BS
- CS
command: recpt1 --device /dev/px4video1 --lnb 15 <channel> - -
decoder: arib-b25-stream-test
isDisabled: false
- name: PX4-T1
types:
- GR
command: recpt1 --device /dev/px4video2 <channel> - -
decoder: arib-b25-stream-test
isDisabled: false
- name: PX4-T2
types:
- GR
command: recpt1 --device /dev/px4video3 <channel> - -
decoder: arib-b25-stream-test
isDisabled: false
$ sudo mirakurun restart
epgdumpをインストールします.
$ git clone https://github.com/stz2012/epgdump
$ cd epgdump
$ make
$ sudo make install
$ wget https://www.jifu-labo.net/files/mcconfig.pl.gz
$ gzip -d mcconfig.pl.gz
$ sudo install -m 755 mcconfig.pl /usr/local/bin/
$ sudo apt-get install libxml-libxml-perl libyaml-perl
Mirakurunを停止し,ダウンロードしたチャンネル設定スクリプトを実行します.
$ sudo mirakurun stop
$ sudo mcconfig.pl -f
チャンネル設定を確認してMirakurunを再起動すれば完了です.
$ sudo nano /usr/local/etc/mirakurun/channels.yml
$ sudo mirakurun restart
・録画動作が正しく動くか確認しておきます.
$ rivarun --b25 --mirakurun localhost:40772 --ch GR/27 15 /home/video/test2.ts
・Mirakurunはログを多く記録するので,ログローテーション設定をします.
pm2のlogrotateをインストールします.
$ sudo pm2 install pm2-logrotate
$ sudo nano /etc/logrotate.d/mirakurun
以下の内容を記載して保存し,mirakurnを7日周期で圧縮して保存する動作と設定します.
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
daily
compress
rotate 7
missingok
Notifempty
}
Mirakurunを再起動して完了です.
$ sudo mirakurun restart
7. Chinachuの導入
・以下のコマンドでインストールします.
$ git clone -b gamma git://github.com/kanreisa/Chinachu.git
$ cd Chinachu
$ sudo ./chinachu installer
・設定ファイルを作成します.
内容を以下の3行変更しておきます.
"uid":"userid",
"recordedDir":"/home/video/", # 録画先ディレクトリ
"wuiOpenHost": "0.0.0.0",
・ログローテーション設定
Mirakurunと同様にPM2によるログローテーション設定をしておきます.
$ sudo nano /etc/logrotate.d/chinachu
/usr/local/var/log/chinachu-operator.stderr.log
/usr/local/var/log/chinachu-operator.stdout.log
/usr/local/var/log/chinachu-wui.stderr.log
/usr/local/var/log/chinachu-wui.stdout.log
{
weekly
compress
rotate 4
missingok
notifempty
}
・起動設定
Chinachuをインストールしたディレクトリで以下を実行し,Chinachu本体が起動するか試します.
$ ./chinachu service wui execute
うまく起動するようならインストールはうまく行っています.Ctrl+Cで落とし,PM2による自動起動設定をします.ただし,PM2で起動しようとするとNode.jsにパスが通ってないと怒られたため,先にNode.jsにシンボリックリンクを貼っておきます.
$ ln -sf /usr/bin/node .nave/node
$ ln -sf /usr/bin/npm .nave/npm
pm2で自動起動設定をします.
$ sudo pm2 start processes.json
$ sudo pm2 save
ChinachuからMirakurunを使ってEPG取得テストをします.うまく動いていれば成功です.
$ ./chinachu update
http://[RPiのIPアドレス]:20772/にアクセスするとChinachuにアクセスでき,録画スケジュールや検索が可能になります.
8. 動画エンコード設定
録画した動画はm2tsのままですと30分3GB程度の容量になり,HDDを圧迫しますので,できればエンコードして容量を小さくしておきたいところです.Raspberry Pi 4BはH.264のハードウエアエンコーダを持っており,それを使えばCPUに負荷をかけず高速にエンコードできます.
手順としては以下の通りです.
・ffmpegをインストールします.
$ sudo apt install ffmpeg
・ハードウエアエンコーダ"h264_omx"があるか確認します.
$ ffmpeg-codecs
・エンコードを以下のコマンドで試します.
$ ffmpeg -i /home/video/test.ts -codec:v h264_omx -b:v 3000k /home/video/test.mp4
ただし,今回はOSとしてUbuntu 64bitを用いたのですが,このOSではハードウエアエンコーダは現状使えないとのことでした.
H264_v4l2m2mが使えるという記載がありますが,試したところエンコード後の画像が緑がかってしまい,うまく行きませんでした.ffmgegを自前でビルドすれば行けるかとも思ったのですが,ビルドもうまく通らず,諦めています.おとなしく最初からRaspbian 32bitとしておき,余ったメモリはRAMディスクにでもしたほうが良かったと思います.
まあ速度は遅いもののソフトウエアエンコードは可能であるため,ソフトウエアエンコードをスケジュールします.
まず,引数に与えたディレクトリに存在する".m2ts"ファイル全てにffmpegのコマンドを適用するシェルスクリプト"m2ts2mp4.sh"を作成します.
#!/bin/bash
#第一引数がなければ終了
[ "x$1" = "x" ] && exit 1
# 引数にファイルパスを代入
DIR=$1
# ディレクトリ直下の"*.m2ts"ファイル全てに対しエンコード
for file in `\find $DIR -maxdepth 1 -name '*.m2ts'`; do
ffmpeg -dual_mono_mode main -i $file -vcodec libx264 -crf 25 -s 1280x720 -aspect 16:9 -acodec aac -strict experimental -q:a 0.8 -ac 2 -vf yadif -f mp4 $DIR/mp4/${file##*/}.mp4
done
これをCronを使って定期的にプログラム実行する設定をします.
$ sudo cp /etc/crontab /etc/cron.d/cron_edit
$ sudo nano /etc/cron.d/cron_edit
# 毎日10時に実行する設定を追加
00 10 * * * user_name /home/video/m2ts2mp4.sh
これで安定した録画サーバを比較的安価に構築することができました.
前の記事: