LIVA に Chinachu を導入して録画サーバーにする
今までは、鼻毛鯖に epgrec を入れて録画サーバーにしていた。先日、超小型の低価格 PC である ECS LIVA を買ったので、以前から気になっていた録画予約システム Chinachu を入れてみる。環境は以下のとおり。
マシン | ECS LIVA-B3-2G-32G |
OS | Ubuntu 14.04 Desktop 日本語Remix 64bit |
チューナー | 恵安 KTV-FSUSB2 |
録画コマンド | recfsusb2n for linux v0.9.2(パッチ適用済み) |
recfsusb2n の導入については前回の記事を参照。
KEIAN USB地デジ&ワンセグチューナー KTV-FSUSB2/V3
- 出版社/メーカー: KEIAN
- メディア: Personal Computers
- 購入: 2人 クリック: 9回
- この商品を含むブログを見る
Chinachu のインストール
以下、公式ドキュメントの指示に従ってインストールしていく。
依存パッケージのインストール
$ sudo apt-get install build-essential curl git-core libssl-dev yasm libtool autoconf libboost-all-dev
Chinachu 本体のインストール
GitHub 上のリポジトリをクローンし、インストーラを実行する。
$ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu $ cd ~/chinachu/ $ ./chinachu installer Chinachu Installer Menu: [!] These are installed under all /home/*****/chinachu/... [!] Recommend the Auto installation. 1) Auto (full) 5) Node.js Modules 9) libfdk-aac 2) Auto (fast) 6) epgdump 10) libogg 3) submodule 7) libx264 11) libvorbis 4) Node.js Environment 8) libvpx 12) libav what do you install? > 1
1 の Auto (full) を選べば、必要なものをすべて自動でインストールしてくれる。いろいろコンパイルするので、LIVA では10分強かかった。
設定
設定ファイル config.json の編集
設定ファイルのサンプル config.sample.json が chinachu のルート直下にあるので、これをコピーして使う。
$ cp config.sample.json config.json
config.json の内容は以下のようにした。
{ "recordedDir" : "./recorded/", "temporaryDir": "/tmp/", "wuiUsers": [ "akari:bakuhatsu" ], "wuiPort" : 10772, "wuiHost" : "::", "wuiTlsKeyPath" : null, "wuiTlsCertPath" : null, "wuiOpenServer" : false, "wuiOpenPort" : 20772, "wuiPreviewer" : true, "wuiStreamer" : true, "wuiFiler" : true, "wuiConfigurator": true, "recordedFormat": "<date:yymmdd-HHMM>_<type><channel>_<title>.m2ts", "tuners": [ { "name" : "FSUSB2", "isScrambling": false, "types" : [ "GR" ], "command" : "recfsusb2n -b <channel> - -" } ], "channels": [ { "type": "GR", "channel": "27" }, { "type": "GR", "channel": "26" }, { "type": "GR", "channel": "25" }, { "type": "GR", "channel": "24" }, { "type": "GR", "channel": "22" }, { "type": "GR", "channel": "23" }, { "type": "GR", "channel": "21" }, { "type": "GR", "channel": "20" }, { "type": "GR", "channel": "28" } ] }
サンプルには tuners に PT3 の設定も入っているが、今回は FSUSB2 だけなので消しておく。channels には、受信したい物理チャンネルを列挙する。
Chinachu の番組表におけるチャンネルの並び順は、この channels に書かれた順序になる。
なお、valid な JSON になっていないと、Chinachu を動かしたときにエラーが出る。コメントや末尾のカンマは許容されないので注意。
空の録画予約ルールの作成
$ echo "[]" > rules.json
動作チェック
Web UI の動作確認
$ ./chinachu service wui execute
ブラウザで http://localhost:10772/ が開けるか確認。config.json の wuiUsers で指定したユーザー名/パスワード(初期設定では akari/bakuhatsu)を入力して中に入る。
この段階ではまだ EPG のデータを取得していないので、番組表は表示されない。WUI がちゃんと起動できていたら Ctrl+\ で終了させる。
EPG の取得テスト
EPG(番組表のデータ)を取得してみる。1チャンネルにつき1分程度要した。
$ ./chinachu update -f
なお、最初は下のようなエラーが出たが、これは config.json の command にタイポがあった(recfsusb2n が .recfsusb2n になっていた)というだけだった。
8 Jun 00:44:50 - GETTING EPG. 8 Jun 00:44:50 - [0] {"type":"GR","channel":"20","n":0} 8 Jun 00:44:50 - [0] LOCK: FSUSB2 (n=0) 8 Jun 00:44:50 - [0] SPAWN: .recfsusb2n -b 27 - - (pid=22521) 8 Jun 00:44:50 - [0] STREAM: /tmp/chinachu-tmp-hw53ex34.m2ts 8 Jun 00:44:50 - STATUS: { completed: 0, waiting: 9, worked: 1, running: 1 } events.js:72 throw er; // Unhandled 'error' event ^ Error: spawn ENOENT at errnoException (child_process.js:988:11) at Process.ChildProcess._handle.onexit (child_process.js:779:34)
サービスの登録
Chinachu のサービス(chinachu-operator と chinachu-wui)が自動的に起動するよう、システムに登録する。
まず、起動スクリプトを /etc/init.d/ に追加する。
$ ./chinachu service operator initscript > /tmp/chinachu-operator $ ./chinachu service wui initscript > /tmp/chinachu-wui $ sudo chown root:root /tmp/chinachu-operator /tmp/chinachu-wui $ sudo chmod +x /tmp/chinachu-operator /tmp/chinachu-wui $ sudo mv /tmp/chinachu-operator /tmp/chinachu-wui /etc/init.d/
次に、insserv でサービスを登録する。ただし、Ubuntu のデフォルトの状態では、
$ sudo insserv chinachu-operator sudo: insserv: command not found
となって使えない。insserv は /usr/lib/insserv/ に入っているので、シンボリックリンクを張ってから実行する。
$ sudo ln -s /usr/lib/insserv/insserv /sbin/insserv $ sudo insserv chinachu-operator $ sudo insserv chinachu-wui
サービスの開始
$ sudo service chinachu-operator start $ sudo service chinachu-wui start
これで Chinachu が起動する。先ほどと同様、http://localhost:10772/ にアクセスすれば WUI が動いているはず。
Chinachu のログは chinachu/log/ 以下に保存されるので、うまく動いていない場合にはこれを参照する。WUI の ダッシュボード > ログ からでも閲覧可能(しかも自動的に表示を更新してくれる)。
なお、最初は(chinachu/log/operator に)以下のようなエラーが出て、うまく録画できなかった。
uncaughtException: Error: spawn ENOENT at errnoException (child_process.js:988:11) at Process.ChildProcess._handle.onexit (child_process.js:779:34) 8 Jun 03:04:55 - #recfsusb2n: execvp(): No such file or directory
どうやら、.zshrc で追加した PATH の中に recfsusb2n を入れていたため、./chinachu update -f などを手動で実行することはできても、Chinachu のサービスが recfsusb2n を動かそうとしたときには見つけられず、エラーになっていたっぽい。recfsusb2n を /usr/local/bin/ に移動したら解消された。
WUI からの設定の変更
Chinachu 設定ファイル config.json は、WUI が動いていれば右上の「+設定」から編集することができる。ハイライトや文法チェックもリアルタイムで行なってくれる。編集内容によっては、保存後に
$ sudo service chinachu-operator restart
(あるいは chinachu-wui)でサービスを再起動しないと反映されない。
まとめ
というわけで、LIVA への Chinachu の導入をひととおり行なった。鼻毛鯖に epgrec を入れたときには、MySQL やパーミッションの設定などいろいろ面倒だったような記憶があるが、Chinachu はわりと簡単にできた。まだ使い始めたばかりだけども、UI も作りこまれていて使いやすそう。epgrec の開発が止まっていることもあり、夏アニメが始まる頃までには Chinachu に乗り換えていきたい。
エンコードとなると LIVA では厳しいかもしれないが、普通に Chinachu を動かす分には十分な感じだった。あとは TS ファイルの保存先をどうしようか。それほど録り溜めるつもりはないものの、LIVA に組み込まれているストレージ(eMMC)は 32GB だけなので、なにか考える必要がある。
次回は LAN 内の他の PC から録画・視聴ができるよう、環境を整備していきたい。