J4105マシンで遠隔地録画サーバを建てる②

遠隔地録画サーバを設置する(続き)

前回の記事の続きです

必要ソフトウェアの導入

チューナーソフトを含む、各種ソフトウェアのインストールやビルド、動作などに必要なパッケージをインストールします。
$ sudo yum install -y autoconf automake bzip2 \
cmake freetype-devel gcc gcc-c++ git libtool make \
mercurial pkgconfig unzip wget yasm zlib-devel    # ビルドツールを一括インストール
$ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
$ sudo yum install nodejs    # 8.xのnodejsをインストール
$ sudo usermod -aG video ユーザー名    # ユーザーをvideoグループに追加

チューナー周りの設定

今回の構成では、PLEX社製の地デジチューナーデバイスである PX-S1UD を利用します。
PLEX USB接続ドングル型地上デジタルTVチューナー PX-S1UD V2.0
PLEX (2015-09-10)
売り上げランキング: 5,056

ファームウェアの導入

前回の記事でカーネルをアップデートしているため、PX-S1UDのデバイスドライバー自体はすでに導入されています。
しかし、このドライバーはPX-S1UDに搭載されているSiano Mobile Silicon社製のUSB接続チューナーチップ(DVBデバイス)のドライバーであるため、PX-S1UDに最適化されていません。
PX-S1UDをPX-S1UDとして動作させるためには、公式のファームウェアを上書きする必要があります。
$ cd ~/
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
$ unzip PX-S1UD_driver_Ver.1.0.1.zip
$ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/

DVBToolの導入

DVBデバイス自体をOSから操作することは出来ないので、recptやrecdvbを用いてチューナーツールを操作します。
今回は汎用的なDVBツールである、dvbv5-zapを用います。
dvbv5-zapは、CentOSではv4l-utilsに含まれていますが、公式リポジトリで提供されているCentOS7向けのv4l-utilsはバージョンが古いため、CentOS6向けの最新版を手動でインストールします。
$ sudo yum install libv4l -y    # v4l-utils用のライブラリはyumでインストール
$ sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/v/v4l-utils-1.6.2-3.el6.x86_64.rpm
$ cd /usr/local
$ sudo git clone https://github.com/Chinachu/dvbconf-for-isdb.git
$ ls /usr/local/dvbconf-for-isdb/conf/
dvbv5_channels_isdbs.conf  dvbv5_channels_isdbt.conf

カードリーダーライブラリのインストール

今回、カードリーダーは変換名人のICカードリーダである USB2-ICCR を利用します。
このカードリーダーはAlcor Micro製のAU9540チップを使用していますが、このドライバはLinuxに含まれているため、追加インストールは不要です。
一方で、カードリーダーからデータを読み取るためにはスマートカードリーダデーモンであるpcscdが必要です。
$ sudo yum install pcsc-lite pcsc-lite-ccid pcsc-lite-devel \
pcsc-lite-libs bzip2 perl-ExtUtils-MakeMaker    # 必要なツールをインストール
$ cd ~/
$ git clone https://github.com/LudovicRousseau/pcsc-tools.git
$ cd pcsc-tools
$ ./configure
$ make
$ sudo make install
$ sudo systemctl enable pcscd
$ sudo systemctl start pcscd
$ pcsc_scan
Using reader plug'n play mechanism
Scanning present readers...
0: Alcor Micro AU9540 00 00
(中略)
        Japanese Chijou Digital B-CAS Card (pay TV)

ARIB25デコードツールのインストール

TS抜きの心臓部とも言える、B25デコーダをインストールします。
今回は、デコーダ本体はnpm経由でダウンロード可能なパッケージを利用するため、今回はライブラリであるlibarib25をインストールします。
$ cd ~/
$ git clone https://github.com/stz2012/libarib25.git
$ cd libarib25/cmake
$ cmake
$ make
$ sudo make install
$ sudo ldconfig
$ sudo ldconfig -p | grep arib
        libarib25.so.0 (libc6,x86-64) => /usr/local/lib/libarib25.so.0
        libarib25.so.0 (libc6,x86-64) => /usr/local/lib64/libarib25.so.0
        libarib25.so (libc6,x86-64) => /usr/local/lib/libarib25.so
        libarib25.so (libc6,x86-64) => /usr/local/lib64/libarib25.so
$ sudo npm install arib-b25-stream-test -g --unsafe

録画クライアントを導入する

Mirakurunのインストール

Mirakurunは受信したM2TSをパケットとしてネットワーク上で転送できるソフトウェアです。
Mirakurun自身が各チューナーを制御するようになるため、録画管理ソフト側でチューナー数の管理をする必要がなくなる画期的なツールです。
$ sudo npm install sudo npm install pm2 -g
$ sudo npm install mirakurun -g --unsafe --production

Mirakurunをセットアップ

Mirakurunのチャンネル設定は地域によって異なるので割愛しますが、チューナー設定はします。
$ sudo mirakurun config tuners

- name: PX-S1UD
  types:
    - GR
  command: dvbv5-zap -a 0 -c /usr/local/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf -r -P -o - <channel>
  decoder: arib-b25-stream-test

rivarunのインストール(おまけ)

rivarunはMirakurunで利用できるシンプルな録画ツールです。
録画環境の構築に必須ではありませんが、ちょっとした確認時にあると便利なのでインストールしておきます。
ついでに、録画の動作確認も行っておきます。
$ sudo npm install rivarun -g
$ sudo rivarun --b25 --ch GR/27 30 ~/test.m2ts

ホームディレクトリ内に生成されたM2TSファイルを、Windows環境などにコピーしてきて通常の動画プレイヤー(MPC-HCやVLCなど)で正常に再生できればOKです。
解像度がワンセグサイズだったり、真っ黒画面だったりする場合はB25デコーダがおかしいか、B-CASが認識されていません。
動画自体が再生できない場合はチューナーの認識がおかしいと思われます。

EPGStationのインストール

EPGStationはウェブベースで動作する高機能な録画管理ソフトです。
作者による献身的なアップデートもあり、非常に使いやすいものになっています。
インストールは難しくなく、公式のマニュアルを見れば出来ます。
(というか実は私もこのリポジトリに参画しており、このマニュアルを書かせていただきました)

今回は、遠隔からのアクセスということもあるため、とりあえず仮置きでBasicAuthの設定を入れておきましょう。

なお、実運用にあたってはEPGStationのポートをルーター側で開放してインターネットからアクセス可能にし、直接BASIC認証をすることは推奨しかねます。
というのも、EPGStationはnode-expressで動作していますがSSL接続に非対応であるためBASIC認証のIDをパスワードは平文送信されます。
つまり、公衆Wi-Fiのようなパケットキャプチャが容易な場においてはIDとパスワードが丸見えになります。
私は接続元の環境が限られている(自宅のPC程度)ためEPGStationをインターネット上に直接晒していますが、万全を期すのであればVPNサーバをセットアップしてVPN接続で利用をするか、リバースプロキシサーバをセットアップして認証サーバとするようにしましょう。
VPNサーバに関しては、録画サーバ自身にVPNサーバを設置してしまうと、VPN接続時にサーバ自身に対しては接続ができないという制約によりアクセスできなくなってしまうため、録画サーバとは別のVPNサーバが必要となります。

以上で、簡易的ではありますが遠隔地録画サーバの設置が完了となります。
あとは煮るなり焼くなりご自由に……。

nginx実践入門 (WEB+DB PRESS plus)
久保 達彦 道井 俊介
技術評論社
売り上げランキング: 81,677

コメント