Chinachu、いいですよね。個人的にすべてWebUI上でできるのがとてもいいです。
で、Chinachuはnode.jsで走ってます。だったらWindowsでも動くのでは?
そんな安易な気持ちでWindowsでChinachuを動かそうとした話です。
はじめに
超適当に作ってしまったので、ソース公開とかバイナリ配布とかはありません。動かした方法のみです。あと、ChinachuはWindows上で動くことを想定して作られていません。
Chinachuの作者にWindows上のChinachuの事について質問等しないように。
Windows上で動くCLIな録画アプリを作る
Chinachuはrecpt1を使用して録画、EPG取得等を行っています。WindowsでCLI上で動く録画アプリは(初期のものしか)見つからなかったので、勉強を兼ねて自分で書くことにしました。方針としては、Multi2Dec 2.10のBonProjectをベースに、TVTestやEpgDataCap_Bonなんかを参考にCLIで動く録画アプリを作成します。
BonDriverには対応していなかった(はず)ので、IBonDriverを使ってTsSourceTuner.cppを書き換えます。PMTごとに分離するのも対応してなかった(はず)のでTsSplitter等を見ながらProgAnalyzer.cppあたりに実装します。あと、標準出力で出すために、SmartFile.cppに標準出力に対応するように書き換えます。
仕上げにbonrectest等適当な名前をつけてプロジェクトを作成し、デコーダーグラフをつないで出力させるようにすればOKです。WindowsのCLIで(Ctrl+Cならともかく)死ぬ間際に正常に処理するのは難しいので、名前付きパイプに入力があったら死ぬようにする方がいいかも。
epgdumpをビルドする
Chinachuでは、EPG取得はepgdump経由でおこなっています。Windows上で動かすには、自分でビルドするほうが良いと思います。Windows上でMinGWを使用してbuildするなら misodengaku/epgdump が便利です。
その他必要な物を取得する
Chinachuを動かすためにはnode.jsが必要ですので予めインストールしておきます。ffmpegは、Chinachuではサムネイルの作成や配信に使われているので、ビルドしたりバイナリを持ってくるなどして、実行ファイルにパスを通してください。あとは、tail等Unixしかないコマンドもあるため、msys等を取得してbinフォルダにパスを通すといいと思います。
ChinachuをWindows用に修正する
ChinachuはそのままではWindows上で動きません。少しコードを書き換えます。
- killコマンドを直接使っているところをprocess.kill等で修正する(msysのkillはmsys上のものしか見えないため)
- pid等の保存先を変える
- 録画アプリをkillしているところを、上記のような理由で、名前付きパイプに入力するように変更(node.jsではnetモジュールでできます)。
あとはconfig.jsonとrules.jsonを自分の環境に合わせて変更します。
動作
動かすときは
node app-wui.js
node app-operator.js
すればいいと思います。
EPG取得は、Wikiにもある通り
node app-scheduler.js -f
です。
本気で使うならnodeのモジュールとバッチファイルで永続化できるようにするのが一番ですが…
動かしてみて
ちゃんと動くには動きます。ですが、他のWindowsの録画ソフトと比べると、ターゲットとするプラットフォームが違う時点で、Windows上でのChinachuは実用性は低いと思います。
蛇足(または宣伝)
Windowsで動く綺麗なWebUIの夢が諦めきれなかったので、EpgDataCap_Bonをnode.jsで動かすような何かを作ってます。
自分に技量がないので、試行錯誤しながら作ってます。