録画サーバ構築 PX-Q3PE + Mirakurun 導入編

いい加減手離れかなあと思っていた録画サーバ。他にも作りたいものはいっぱいあるのに、何故かもやもやがやまず、ついつい触ってしまう。大抵は頭の中で改善される環境がぼんやり思い浮かんでいるのに、それを具体化できていなかったりするから。という訳で、きちんと頭の中の課題を整理してみる。PX-Q3PEはドライバの関係でCentOS6系に限定されるが、我が家では物理OSにCentOS7を使いたい。しかし、PX-Q3PEとKVM上で使うとI/O時にノイズが入ってしまう。どうすればよいか。

ここでいうI/Oがどのレイヤーのものか絞り込んでいないけど、少なくともディスクI/Oとの相性は極めて悪い。裏を返して考えると、KVM上でdisk writeせずにネットワーク経由で物理サーバにデータ転送し、そのサーバ上でディスクにwriteするという構成はどうか。これであれば、KVM上でディスクI/Oの負担をかけずに録画処理が実現できる。ネットワーク越しに録画データを転送する方法として、sshでも特に問題なく実現できるが、暗号化のオーバヘッドがちょっと気になる。

今回はハードウェアそのものの変更も視野に入れていたので、PT3の情報も集めていた。その延長でもう1つの録画用ソフトウェアChinachuについても詳しく見てみた。Chinachuの検討そのものはまたいずれ考えるとして、それよりもMirakurunとrivarunの存在に驚いた。Mirakurunはチューナーをネットワーク経由で開放し、rivarunはMirakurunのapi経由でチューナーを利用することができる。とてつもなく素晴らしい響き。

これによりMirakurunサーバは放送波を返すだけに単機能化され、クライアント側のrivarunで放送波をデコードするみたいなことが可能。チューナーサーバと録画サーバを分離することができるわけだ。今まではサーバごとに用意していたB-CASカードを録画サーバのみに絞れる。また、バックエンドのサーバを増やせばチューナー用のスロット数も増えていくことになるので、無限に水平拡張していける。そして、最も実現したかったサーバレベルでのチューナー冗長化も現実的なものに。

たっぷり褒めちぎった上で、早速導入作業を行っていく。サーバはPX-Q3PE用のKVMになるのでOSはCentOS6.8、既にドライバやrecpt1は設定済みのものと仮定する。デフォルトの40772ポートを使うので、必要に応じてiptablesに穴を開けたりしておくこと。Mirakurunはnodejsで動くようだが、epel上のnodejsは古過ぎてnpmが動作しないので、ネット上で新しいものを探す。

yum install https://rpm.nodesource.com/pub_6.x/el/6/x86_64/nodejs-6.9.5-1nodesource.el6.x86_64.rpm https://rpm.nodesource.com/pub_6.x/el/6/x86_64/nodejs-devel-6.9.5-1nodesource.el6.x86_64.rpm
npm install pm2 -g
npm install mirakurun -g --unsafe --production
npm install rivarun -g
npm install arib-b25-stream-test -g --unsafe
mirakurun status

これでMirakurunは起動状態になっている。PX-Q3PE向けにチューナーの設定を変更する。

mirakurun config tuners
    :
- name: PXQ-S1
  types:
    - BS
    - CS
  command: recpt1 --device /dev/pxq3pe0 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false
    :
- name: PXQ-T1
  types:
    - GR
  command: recpt1 --device /dev/pxq3pe2 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

地上波もBSも1つしか見せていないが、同じように4つ書けばすべてのチューナーを利用可能。続いて、チャネル設定も変更する。MXテレビのチャネルが違っていたので20に修正。CS系のチャネルは使わないので、『isDisabled: true』を指定。PT3と異なり、BSのチャネル変更はserviceIdを指定する必要があるので、以下のような感じでBS全てのチャネルを修正。

mirakurun config channels
    :
- name: NHK BS1
  type: BS
  channel: '101'
  serviceId: 101

もし、PT3との同時使用を考えるならserviceIdを変数として指定できるようにする方がよいかもしれない。/usr/lib/node_modules/mirakurun/lib/MirakurunにあるTunerDevice.jsに置換する処理を追加してやればみたいな指定も可能になるはず。さて、ここまで出来たら、Mirakurunを再起動する。起動後にserviceScan()処理やgetEPG()処理があるので、recpt1プロセスなどがあがることで正しい動作と判断する。

mirakurun restart
ps -ef | grep recpt1
mirakurun log server

これでmirakurunが無事動作するようになったはず。あとはrivarunを使って録画処理の動作確認を進めていく。実際の検証は、このMirakurunサーバを別の物理サーバから利用するで、同じような手順で物理サーバ側にもrivarunを導入しておいた。次回はいよいよKVMで構築したPX-Q3PE + Mirakurun環境にてネットワーク越しでの録画を試してみる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)