読者です 読者をやめる 読者になる 読者になる

あーく・りなっくす

プログラミングとかガジェットとかの雑記

2017/01/30 時点での録画サーバ構築手順

Raspberry Pi Ubuntu サーバ 録画

Raspberry Pi 2 で動かしていたけど安定しなかったので、X220 で作り直したときのメモである(と言っても手順としては同じ)。
参考にした記事をベースに自分の環境だとこうだったという感じにしている。

Ubuntu のセットアップ

USB メモリに iso を書き込む。

$ diskutil list
$ diskutil umountDisk /dev/disk3
$ sudo dd if=ubuntu-16.04.1-desktop-amd64.iso of=/dev/disk3 bs=1m

例のごとく、disk3 の 3 は環境によって変わる。
dd で書き込むのは結構時間がかかる上に、進行状況がわからないので放置して別の作業を。

USB メモリをブートし、適当にセットアップしていく。
GUI も使いたかったので今回は普通の Ubuntu を使った。

録画に最低限必要なものをインストール

セットアップした Ubuntu にいろいろ接続したり、必要なソフトウェアをインストールしていく。

必要なパッケージをまとめてインストール

ビルドや IC カードリーダを扱うのに必要なパッケージをまとめていれておく。

sudo apt -y install unzip \
    build-essential automake pkg-config \
    pcscd libpcsclite-dev pcsc-tools

各デバイスの接続

B-CAS カードを挿した IC カードリーダと USB タイプのチューナーをマシンに接続する。

$ lsusb | grep VidzMedia
Bus 002 Device 003: ID 3275:0080 VidzMedia Pte Ltd
$ ls /dev/dvb
adapter0

細かい数字は環境によって変わると思うが、だいたいこんな感じの出力があれば問題ないはず。

チューナーに PX-S1UD V2.0 を選んだ。 Windowsインストーラ経由でなんとかするしかないが、無印版のものをそのまま使えるので、

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

上で設置した inp ファイルは 64 bit OS の場合なので、 32 bit OS だとパスが変わる。
無印版のものがそのまま使えているが、V2.0 のもので検証してみるのもありかもしれない。
設置が完了したら、チューナーを挿し直す(reboot が確実か?)。

IC カードリーダの確認は

$ pcsc_scan

を実行し、

Japanese Chijou Digital B-CAS Card (pay TV)

が途中で出ていればよい。 pcscd が動いていない場合は、

$ sudo systemctl start pcscd

でスタートさせる。

arib25 のビルドとインストール

デコードするのに必要なライブラリである arib25 をビルドしてインストールする。

$ cd <適当な作業ディレクトリ>
$ curl -sL https://github.com/stz2012/libarib25/archive/09770e3.tar.gz | sudo tar zxv
$ cd libarib25-09770e334837f6c67268c41c1c15784373d35e5b
$ sudo chown -R $(whoami) .
$ make
$ sudo make install

recdvb のビルドとインストール

チューナーの操作を行うソフトウェアである recdvb をビルドしてインストールする。

$ cd <適当な作業ディレクトリ>
$ curl -sL http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.1.tgz | sudo tar zxv
$ cd recdvb-1.3.1
$ sudo chown -R $(whoami) .
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

ここまでで録画自体は可能となっているのでテストする。

$ recdvb --b25 --strip --sid hd <チャンネル> <秒数> <ファイル名>

※ チャンネルはマスプロなどの表を参考に。

ログがいろいろ出るが、エラー(failed などそれっぽいもの)が無く、生成された m2ts が VLC などで再生できれば成功している。

cannot open frontend device

というものが出た場合は、

$ sudo adduser <実行ユーザ> video

何度かセットアップした限りでは、adduser は必須と言っても良いかもしれない。

録画を楽にするものをセットアップ

コマンドラインでチャンネルを指定して、録画したいタイミングで実行するのは現実的でない。そのため、UI で録画予約するための必要なものをインストールしていく。
今回は Chinachu を採用することとした(参考にしたやつがそうだったのと、TL で使っている人がいたので安定してるのかなーという判断)。

下準備

これからインストールする 3 つのソフトウェアはすべて Node.js で動作するので、先にその環境を構築する。
Mirakurun は Node.js 6.x が必要で、Ubuntu でそのままインストールできない(2017/01/30 時点)ので、

$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs

また、プロセスマネージャが必要なので、pm2 をインストールする。

$ sudo npm install pm2 -g

Mirakurun のインストールと設定

雑な説明をすると、録画をするための RESTful API でいろいろといい感じにやってくれるようだ。LAN 内でチューナーを共有するということも可能である。

$ sudo npm install mirakurun -g --unsafe --production

設定を変更するのは下記コマンドを実行する(実装を調べてないがラッパになってるっぽい)。

$ sudo mirakurun config tuners

下記を追記する。
type や command さえあっていれば name は適当で良さそう。

- name: PX-S1UD-1
  types:
    - GR
  command: recdvb --b25 --strip <channel> - -

チャンネルの設定は、

$ sudo mirakurun config channels

で行う。チャンネル表を見ながらもともとある設定を参考にすればよい。スカイツリーの地域であればそのまま、23 区の西の方であれば MX をいじれば大丈夫そう(他は知らん)。

必要な設定を一通りやったあとは反映させるためにリスタートする。

$ sudo mirakurun restart

Rivarun

Mirakurun クライアントで、同じサーバにインストールしなくてもいいが、検証用に入れておく。

$ sudo npm install rivarun -g

Mirakurun が正しく設定できたかを Rivarun 経由で確認する。

$ rivarun --ch <放送種別>/<チャンネル> <秒数> <ファイル名>

status コードが 200 で返ってきていれば問題なく動いている。

Chinachu

γ 版(2017/01/31 時点)を入れる。

$ git clone -b gamma git://github.com/kanreisa/Chinachu.git ~/chinachu
$ cd ~/chinachu
$ ./chinachu installer

インストーラを実行したら、 1) Auto (full) を選択する。
次に、録画予約用の設定ファイルを設置する。

$ echo "[]" > rules.json

Chinachu の設定ファイルを作成する。サンプルが同じディレクトリにあるので、これをベースにする。

$ cp config.sample.json config.json
$ vim config.json

基本的にデフォルトのままで良いが、wuiPort は何かを入れておかないとうまくいかなかった(要検証)。
録画データは外付け HDD に設置したいので、recordedDir も変更した。
外付け HDD のマウントに関しては前に書いた記事を参考にする。

動作確認のために下記 2 つコマンドを実行する。1 つ目のコマンドは、出力が止まったら Ctrl-C で抜ける。

$ ./chinachu service operator execute
$ ./chinachu update

/etc/init.d から起動できるようにし、コマンドを叩いてそのままログインしっぱなしで放置、ということをしなくていいようにする。

$ ./chinachu service operator initscript > /tmp/chinachu-operator
$ ./chinachu service wui initscript > /tmp/chinachu-wui
$ cd /tmp
$ sudo chown root:root chinachu-*
$ sudo chmod 755 chinachu-*
$ sudo mv chinachu-* /etc/init.d/
$ sudo update-rc.d chinachu-operator defaults
$ sudo update-rc.d chinachu-wui defaults
$ sudo service chinachu-operator start
$ sudo service chinachu-wui start

最後に、ブラウザからアクセスして番組表の確認や録画予約をしておわり。
このWeb UI はリアルタイム視聴や録画データの再生なども可能である。

参考