RaspberryPi で録画サーバを構築する(2)

事前作業
チューナーサーバ (Mirakurun) のインストール
チューナーサーバ Mirakurun をインストールしていく。 これにより、録画コマンドの並列処理や、複数チューナーの管理、優先度処理が可能になる。今回使う Mirakurun では、api を使って多くの処理を簡略化できるため後々の拡張性が高い。
Node.js のインストール
最初に Mirakurun を動かすために必要な Node.js をインストールする。npm をインストールをしている場合が多いが、Node.js だけでも十分とのこと。
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install nodejs
Mirakurun のインストール
$ sudo npm install pm2 -g
$ sudo pm2 startup
$ sudo npm install mirakurun -g --unsafe --production
チューナーの設定
Mirakurun がチューナーを認識するよう設定を加える。 Mirakurun がインストールされると、/usr/local/etc/mirakurun に 3 つの設定ファイルが生成される。 設定が必要なのは、tuners.yml と channels.yml の 2 つ。
tuners.yml では、チューナーの設定を行う。
$ sudo mirakurun config tuners
末尾に下記を追記する。
- name: PX-S1UD-1
types:
- GR
command: recdvb --b25 --strip <channel> - -
尚、今回使用した PX-S1UD V2.0 は 1 チューナーなので 1 つだけで大丈夫だが、PX-Q1UD の場合は 4 チューナーあるので 4 つ設定が必要となる。
- name: PX-Q1UD-1_1
types:
- GR
command: recdvb --b25 --strip --dev 0 <channel> - -
- name: PX-Q1UD-1_2
types:
- GR
command: recdvb --b25 --strip --dev 1 <channel> - -
- name: PX-Q1UD-1_3
types:
- GR
command: recdvb --b25 --strip --dev 2 <channel> - -
- name: PX-Q1UD-1_4
types:
- GR
command: recdvb --b25 --dev 0 <channel> - -
次に、チャンネルスキャンを実施する。channels.yml に電波塔に応じた物理チャンネル番号を登録する。 channels.yml を手動更新しても良いが、下記 Mirakurun の channels scan API でスキャンするのが簡単なためこちらで実行する。
$ curl -X PUT "http://localhost:40772/api/config/channels/scan"
これで Mirakurun の設定が完了したので、Mirakurun を再起動する。
$ sudo mirakurun restart
-> status に onlineと表示されればok
設定確認
チャンネルが正しく設定されていることをブラウザ or curl コマンドで確認する。
$ curl http://[IPアドレス]:40772/api/channels
~中略~
...,{"type":"GR","channel":"21","name":"フジテレビ","services":[{"id":3274001056,"serviceId":1056,"networkId":32740,"name":"フジテレビ"},{"id":3274001057,"serviceId":1057,"networkId":32740,"name":"フジテレビ"},{"id":3274001058,"serviceId":1058,"networkId":32740,"name":"フジテレビ"},{"id":3274001440,"serviceId":1440,"networkId":32740,"name":"フジテレビ"}]},...
~中略~
結果がこんな感じで返ってくればチャンネル登録は OK。
補足
この時点で recdvb コマンドを打たなくてもブラウザ経由でのリアルタイムストリーミング配信ができるようになる。視聴方法は recdvb と変わらないが、URL が下記に変更される。
http://[IPアドレス]:40772/api/channels/GR/[物理チャンネル]/stream
録画サーバ(Chinachu)のインストール
GUI で番組表からの録画予約をできるようにする。 録画サーバ Chinachu は、地デジ波から最新の番組表データを取得でき、ブラウザから録画予約ができるため、市販レコーダーのような操作が可能となる。
// 事前に必要なパッケージをインストールする
$ sudo apt-get install build-essential curl git-core vainfo
// Chinachuをインストールする
$ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
$ cd ~/chinachu/
$ ./chinachu installer
-> インストールオプションは、1.Autoを選択する
// 録画ルールの初期ファイルを作成
// 作成しない場合はアニメと笑点辺りを自動で録画するルール(rules.sample.json)が設定される
$ echo "[]" > rules.json
// 録画設定ファイルの作成・編集する
$ cp config.sample.json config.json
$ vim config.json
"uid": "pi"
"recordedDir" : "/mnt/hdd1/recorded/",
"temporaryDir" : "/mnt/hdd1/recorded/",
~中略~
"wuiOpenHost": "0.0.0.0",
~中略~
"recordedFormat": "[<date:yymmdd-HHMM>][<channel-name>]<title> <subtitle> <episode:2>.m2ts",
設定が完了したので、Chinachu を起動する。
$ cd ~/chinachu
$ ./chinachu service wui execute
// 起動できたら一度 [ctrl + c] で停止し、EPG(番組表)の取得テストを行う
$ ./chinachu update
// Chinachuを起動する
$ ./chinachu service wui execute
ブラウザで動作確認する。
http://[IPアドレス]:20772/
下記のようなページが取得できれば成功。


先の wui の起動で、ページ表示、録画予約、設定ファイルの更新などができるようになった一方で、実際に録画処理を実行するにはこれとは別に operator を起動する必要がある。 もう一つターミナルを開き、operator を起動する。
$ cd ~/chinachu
$ ./chinachu service operator execute
これでサーバの構築は完了。
残課題
- 外付け HDD のマウント
- m2ts -> mp4 への自動エンコード