Ubuntu 13.10 で Chinachu を使う その3
[ご注意]この記事は2013年に書かれたものなので内容が古くなっています。■Chinachu のインストールchinachu で実行ユーザーを作る。sudo adduser chinachuでもいいが GUI上から作って環境も整えておいた。$ sudo apt-get install build-essential curl git-core libssl-dev yasm libtool autoconfchinachuでログイン$ sudo -i -u chinachugit からクローンを取得$ git clone git://github.com/kanreisa/Chinachu.git ~/chinachuインストーラ実行$ cd ~/chinachu/~/chinachu$ ./chinachu installer最初のメニューから (A)Auto を選択。自動でインストールが行われ必要なものがダウンロード&インストールされていく。./chinachu の中身はシェルスクリプトなので、何をやっているかはエディタで開けばわかる。インストールが終了したら、Chinachu公式サイトのインストール説明に従い下記の通り設定をすすめる。~/chinachu$ ./chinachu service operator initscript > /tmp/chinachu-operator~/chinachu$ ./chinachu service wui initscript > /tmp/chinachu-wui~/chinachu$ sudo chown root:root /tmp/chinachu-operator /tmp/chinachu-wuiここで sudo できないようなら chinachu で sudo できるように他のユーザーで sudo visudo して再度実行。~/chinachu$ sudo chown root:root /tmp/chinachu-operator /tmp/chinachu-wui~/chinachu$ sudo chmod +x /tmp/chinachu-operator /tmp/chinachu-wui~/chinachu$ sudo mv /tmp/chinachu-operator /tmp/chinachu-wui /etc/init.d/~/chinachu$ sudo insserv chinachu-operatorここで「sudo: insserv: コマンドが見つかりません」と表示された場合はシンボリックリンクを張って~/chinachu$ sudo ln -s /usr/lib/insserv/insserv /sbin/insserv再度実行。~/chinachu$ sudo insserv chinachu-operator~/chinachu$ sudo insserv chinachu-wui設定ファイルを作る。作る前にサービスを起動しないこと。PT2の場合はサービスを起動する前にファイルで設定しないとデバイスがロックするらしい。※Chinachu の初期サンプルファイルは PT3 前提になっている。~/chinachu$ lsLICENSE app-cli.js app-wui.js node_modules testREADME.md app-operator.js chinachu package.json usrapi app-scheduler.js config.sample.json rules.sample.json web~/chinachu$ cp config.sample.json config.json~/chinachu$ cp rules.sample.json rules.json~/chinachu$ sudo gedit config.jsonconfig.json は直接の動作環境を設定するファイル。PT2 を使った地デジ2チューナーとして下記の通り変更した。・PT3-T1/T2 を PT2-T1/T2 に・/dev/pt3video* を /dev/pt1video* に・録画ファイルの拡張子を .m2ts から .ts に(過去の設定を変更するのが面倒だっただけ)・チャンネルを実測値に合わせて変更{ "recordedDir" : "./recorded/", "temporaryDir": "/tmp/", "wuiUsers": [ "a****:b********" ], "wuiPort" : 10772, "wuiHost" : "::", "wuiTlsKeyPath" : null, "wuiTlsCertPath" : null, "wuiPreviewer" : true, "wuiStreamer" : true, "wuiFiler" : true, "wuiConfigurator": true, "recordedFormat": "[<date:yymmdd-HHMM>][<type><channel>][<tuner>]<title>.ts", "tuners": [ { "name" : "PT2-T1", "isScrambling": false, "types" : [ "GR" ], "command" : "recpt1 --device /dev/pt1video2 --b25 --strip --sid <sid> <channel> - -" }, { "name" : "PT2-T2", "isScrambling": false, "types" : [ "GR" ], "command" : "recpt1 --device /dev/pt1video3 --b25 --strip --sid <sid> <channel> - -" } ], "channels": [ { "type": "GR", "channel": "13" }, { "type": "GR", "channel": "16" }, { "type": "GR", "channel": "18" }, { "type": "GR", "channel": "21" }, { "type": "GR", "channel": "22" }, { "type": "GR", "channel": "23" }, { "type": "GR", "channel": "24" }, { "type": "GR", "channel": "25" }, { "type": "GR", "channel": "26" }, { "type": "GR", "channel": "27" }, { "type": "GR", "channel": "28" }, { "type": "GR", "channel": "30" }, { "type": "GR", "channel": "32" }, { "type": "GR", "channel": "49" }, { "type": "GR", "channel": "50" } ]}~/chinachu$ sudo gedit rules.jsonrules.json は録画の条件付けを記述するファイル。サービス開始後にブラウザ上からGUIで変更できるので、とりあえずそのままでも良いが、デフォルトのサンプルファイルのままだと某衛星アニメチャンネルから大量にアニメが録画予約されてしまうっぽい。[ { "types": [ "GR" ←地デジ/BS/CS の別 ], "categories": [ "anime" ←EPG上のジャンル ], "ignore_channels": [ "13", ←このルールで無視するチャンネル "28" ], "hour": { "start": 23, ←このルールで対象とする時間 23時~4時 "end": 4 }, "duration": { "min": 600, "max": 10801 }, "ignore_titles": [ "兄貴四重奏 ~くんずほぐれつ~", ←条件と合致しても無視するタイトル "機動戦士マンダム", "黒子のバスト", "鉄雄の部屋" ], "ignore_flags": [ "再" ] }, { "reserve_titles": [ "どうじん!", ←条件と合致しなくても強制予約するタイトル。 "嫁のカノジョ" ] }]なお、どちらのファイルも , { } [ ] " の書き間違い、抜けには注意が必要。サービスを起動する。~/chinachu$ sudo service chinachu-operator startStarting chinachu-operator: OK.~/chinachu$ sudo service chinachu-wui startStarting chinachu-wui: OK.EPGを受信する。~/chinachu$ ./chinachu update -f設定ファイルに記述ミスがある場合は、この時にundefined:xxSyntaxError: Unexpected stringなどと表示されるので再度設定ファイルをチェック。動作した場合は逐一チューナーの受信状況が表示されていくはず。ブラウザで http://127.0.0.1:10772 を開く。127.0.0.1 の部分はLAN上の他のマシンのブラウザから開く場合は chinachu 稼動マシンのアドレスにする。ポップアップウィンドウに ユーザ名:a**** パスワード:b********を入れて(このパスワードは config.json 内で変更できる)しばし待つとマゼンタな画面になる。ちなちゅー!■オフラインで動かない Chinachu(解決済)録画サービス自体はオフラインで問題なく動くが、ブラウザ画面はオフラインで開こうとするといつまでも画面の中心で表示待ちのアニメーションが回りっぱなしだったり、JavaScript execution required. と表示されたままで画面が出なかったりする。これは、/chinachu/web/index.html の中に http でスタイルシートや javascript を読みに行く部分があるため。ブラウザで index.html を読み込む際にオンライン(インターネット接続)であれば、後はオフラインになってもページを閉じない限りは大丈夫。これらのスクリプトは平文で読めるので、外部に読みに行くファイルをローカルで持つように index.html を改変するとオフラインでも動作する。具体的には、1.index.html 内で http: で始まる3つのファイルをURL直打ちでダウンロードしてくる。2.ユーザー chinachu で /home/chinachu/chinachu/web/lib/ 以下に3つのファイルを配置。3.index.html の該当部分3箇所をローカルファイルのパスに修正。一応これで動くことは確認したが、このブログを書き上げるよりも早く公式で対応されたようなので、今後のインストールでこの現象は発生しないものと思われる。■ロックの解除と問題点Chinachu は録画であれ EPG受信であれ PT2 を使っている間はデバイスのロックを行う。ある日録画開始予定時間になったのに動かないのでログを見たところ、EPG受信でチューナーが2つともロックされているのが原因のようだった。アンロックしたら録画が開始された。[Operetor のログ]12 Dec 00:28:26 - READ: `/home/chinachu/chinachu/data/reserves.json` is updated.12 Dec 00:29:00 - PREPARE: 2013-12-12T00:30:00 [TBS] 夫婦堂12 Dec 00:29:00 - WRITE: /home/chinachu/chinachu/data/recording.json12 Dec 00:29:55 - RECORD: 2013-12-12T00:30:00 [TBS] 夫婦堂12 Dec 00:29:55 - WARNING: GR 利用可能なチューナーが見つかりません (存在しないかロックされています) (5秒後に再試行)12 Dec 00:30:00 - RECORD: 2013-12-12T00:30:00 [TBS] 夫婦堂12 Dec 00:30:00 - WARNING: GR 利用可能なチューナーが見つかりません (存在しないかロックされています) (5秒後に再試行)(以下、くりかえし)[Scheduler のログ]11 Dec 23:04:33 - {"type":"GR","channel":"28","n":10}11 Dec 23:04:33 - LOCK: PT2-T1 (n=0)11 Dec 23:04:33 - SPAWN: recpt1 --device /dev/pt1video2 --sid epg 28 - - (pid=8905)11 Dec 23:04:33 - STREAM: /tmp/chinachu-tmp-hor7xiui.m2ts11 Dec 23:04:33 - {"type":"GR","channel":"30","n":11}11 Dec 23:04:33 - LOCK: PT2-T2 (n=1)11 Dec 23:04:33 - SPAWN: recpt1 --device /dev/pt1video3 --sid epg 30 - - (pid=8906)11 Dec 23:04:33 - STREAM: /tmp/chinachu-tmp-hor7xiut.m2ts11 Dec 23:04:33 - STATUS: { completed: 15, waiting: 5, worked: 12, running: 3 }11 Dec 23:04:33 - #recpt1: using device: /dev/pt1video2 pid = 890511 Dec 23:04:33 - #recpt1: using device: /dev/pt1video3 pid = 890611 Dec 23:04:33 - STATUS: { completed: 15, waiting: 3, worked: 12, running: 3 }11 Dec 23:04:33 - STATUS: { completed: 15, waiting: 3, worked: 12, running: 3 }11 Dec 23:04:34 - #recpt1: device = /dev/pt1video211 Dec 23:04:34 - STATUS: { completed: 15, waiting: 3, worked: 12, running: 2 }11 Dec 23:04:34 - #recpt1: device = /dev/pt1video311 Dec 23:04:34 - #recpt1: C/N = 32.691421dB11 Dec 23:04:34 - #recpt1: Recording...11 Dec 23:04:34 - #recpt1: C/N = 33.132528dB11 Dec 23:04:34 - #recpt1: Recording...11 Dec 23:04:34 - #recpt1: Available sid =11 Dec 23:04:34 - #recpt1: 108811 Dec 23:04:34 - #recpt1: 108911 Dec 23:04:34 - #recpt1: 109011 Dec 23:04:34 - #recpt1:11 Dec 23:04:34 - #recpt1: Chosen sid =11 Dec 23:04:34 - #recpt1: Available PMT =11 Dec 23:04:34 - #recpt1: 0x1f011 Dec 23:04:34 - #recpt1: 0x2f011 Dec 23:04:34 - #recpt1: 0x3f011 Dec 23:04:34 - #recpt1:11 Dec 23:04:34 - #recpt1: Available sid =11 Dec 23:04:34 - #recpt1: 2770411 Dec 23:04:34 - #recpt1: 2770511 Dec 23:04:34 - #recpt1: 2808811 Dec 23:04:34 - #recpt1:11 Dec 23:04:34 - #recpt1: Chosen sid = Available PMT = 0x110 0x120 0x1fc811 Dec 23:07:31 - GETTING EPG.11 Dec 23:07:31 - STATUS: { completed: 0, waiting: 15, worked: 0, running: 0 }12 Dec 00:07:30 - GETTING EPG.12 Dec 00:07:30 - STATUS: { completed: 0, waiting: 15, worked: 0, running: 0 }23時4分あたりにトラぶったっぽい。SIGTERM received. cleaning up... や UNLOCK: PT2-T* (n=0) が現れないところを見るとロックしたままになってるようだ。[ロックを解除]$ sudo -i -u chinachu$ cd chinachu~/chinachu$ ./chinachu -helpUsage: ./chinachu <cmd> ...Commands:installer Run a Installer.updater Run a Updater.service <name> <action> Service-utility.update Run a Scheduler.search [options] Search for programs.reserve <pgid> Reserve the program manually.unreserve <pgid> Unreserve the program manually.skip <pgid> Skip the auto-reserved program.unskip <pgid> Cancel the skip.stop <pgid> Stop the recording.rule [options] Add or config a rule for auto reservation.enrule <rule#> Enable a rule. (alias of rule -n <rule#> --enable)disrule <rule#> Disable a rule. (alias of rule -n <rule#> --disable)rmrule <rule#> Remove a rule. (alias of rule -n <rule#> --remove)rules Show a list of auto reserving rules.reserves Show a list of reserved programs.recording Show a list of recording programs.recorded Show a list of recorded programs.cleanup Clean-up the recorded list.unlock Unlock the tuners.ircbot [options] Connect to IRC server and run a ircbot. (Experimental)test <app> [options] Run <app> in /home/chinachu/chinachu/usr/binhelp Output this information.~/chinachu$ ./chinachu unlockUnlock the tuners.*WARNING* Do NOT run this command when on running recording, scheduler.Do you want to continue [Y/n]? y`/home/chinachu/chinachu/data/tuner.0.lock' を削除しました`/home/chinachu/chinachu/data/tuner.1.lock' を削除しました`/home/chinachu/chinachu/data/tuner.2.lock' を削除しましたdone.[Operetor のログ]12 Dec 00:35:05 - WARNING: GR 利用可能なチューナーが見つかりません (存在しないかロックされています) (5秒後に再試行)12 Dec 00:35:10 - RECORD: 2013-12-12T00:30:00 [TBS] 夫婦堂12 Dec 00:35:10 - LOCK: PT2-T1 (n=0)12 Dec 00:35:10 - SPAWN: recpt1 --device /dev/pt1video2 --b25 --sid 12125,epg 22 - - (pid=12814)12 Dec 00:35:10 - WRITE: /home/chinachu/chinachu/data/recording.json12 Dec 00:35:10 - STREAM: ./recorded/[131212-0030][GR22][TBS] 夫婦堂.ts多分上記はイリーガルな動作例のような気がするが、録画中やEPG受信中に電源が落ちたりリセットがかかったりして自動で再起動した場合、ロックが解除されずに以降の録画がすべてハネられる可能性があるようにも思える。そんな対策として・録画が実行されていなければ一定時間ごとにロックを解除する・サービスがリスタートした時に録画の有無を調べて実行されていない限りロックを解除するといった処理が備わっているのかもしれないが、どうなんだろう?実は epgrec の時にも何度か落ちたことがあるのだが、epgrec の場合はトラブル発生時間に回っていた録画は中断され、リスタート後も途中からの再録画はされないが、その次の録画予定はちゃんと回る、という挙動であったように記憶している。■Chinachu を使ってみた感想最も普及していると思われる epgrec と比べると、epgrec は番組表から録画する対象を選んでいく感じ、Chinachu は大きな条件で指定しておいてそこから細かくルールで外していく感じです。例えて言えば一本釣りかトロール漁かの違い?Chinachu の番組表は epgrec の新聞のテレビ欄のような表示に比べると見難いです。チューナー2つで録画できるかどうかの時間の重なり具合の判断もしにくい。しかし例えばアニメならアニメというジャンルで一括指定するとダッシュボードに番組名が並び、これをクリックして詳細画面からルールの作成に飛んで指定を外していく、という処理が簡単にできます。WebMを使った httpストリーミング機能など、新しい試みもあります。LAMP環境を必要としませんので、録画専用に使うならシンプルです。すべての情報がテキストファイルとして参照できるのでクラッシュ時の復旧がたぶん楽です。epgrec を使っていると番組は「録画してから見る」スタイルになるのですが、Chinachu は今後、録画しながらの視聴やトランスコード録画にも対応して行くようです。現在はまだベータ版であり、番組表の改善や時間延長への対応などもアナウンスされているので、今後がとても期待できるシステムだと思います。わぁい!Chinachu プロジェクト:http://chinachu.akkar.in/七森中録画研究会:https://chinachu.moe/俺的防備録 ~なんかいろいろ~ CentOSでChinachuを試してみた:http://orebibou.blogspot.jp/2013/10/centoschinachu.htmlおわり(がんくま)