人生を常にハックして生きていきたいyanoshiです。相変わらず人権を追い求めております。
新生活の人権を向上させるべく、録画サーバーの構成を見直すこととしました。
ということでChinachuを導入します。
前回までのお話
AMDなSoC PCでPT3を3枚接続してWindows上で録画サーバーを構築しました。
目次
- 最新記事はこちら!
- 前回までのお話
- 運用してわかったこと
- 追記: 近頃のDTV録画界隈の話
- 構築した我が録画環境構成
- BonDriverProxyExの導入@Windows10
- BonDriver_Proxyのコンパイル
- TVTestでテスト
- Mirakurunの導入@Windows10
- VirtualBoxのインストール+Ubuntuのインストール@Windows Server
- Ubuntuの下準備@VirtualBox
- Rivarunの導入@Ubuntu
- Chinachu Betaの導入@Ubuntu
- 完成
- おわりに
- 参考文献
スポンサードリンク
運用してわかったこと
PT3は熱暴走する
タイトル通りです。
このようにゴミが残るわけでして… pic.twitter.com/tHfiXtGz8Q
— yanoshi (@yanoshi) 2015年6月13日
上記ツイートに示しているように、録画が終わっているのにも関わらずPT3Ctrlが暴走してチューナーを専有するという問題に悩まされていた訳です。
色々と試してみたのですが、結局解決せず…
PT3にファンをつけたら安定したわけでして。
— yanoshi (@yanoshi) 2015年7月26日
まぁ最終的にはファンをつけたら嘘みたいに問題は起こらなくなりました。単純明快ですね。
PT3は割と熱を持つようなので、調子が悪い人は冷やしてみると直るかもしれませんよ?
Windows向けの録画ツールはレガシーすぎる
素晴らしい知見とツールには大感謝なのですが、やはりコードの更新が進んでいないものが多く…お世辞にも活発に開発されているとはいえません。
一方Chinachuは現在進行形で活発に開発されているプロジェクトです。(Chinachu Air楽しみだなぁ)
Node.jsで実現されたモダンな構成に綺麗なUI…やはり心躍るものがありますよね。
追記: 近頃のDTV録画界隈の話
最近はPT3の製造中止が発表されたことによって、PT3の値段が2倍以上に跳ね上がっています。
- 出版社/メーカー: アースソフト
- メディア: Personal Computers
- 購入: 11人 クリック: 87回
- この商品を含むブログ (4件) を見る
ということでこれから録画機を作ろうとしている人はPX-W3PEとかが良いんじゃないかなぁと思う今日このごろです。
PLEX PCI Express接続 地上デジタル・BS・CS対応TVチューナー PX-W3PE V2.0
- 出版社/メーカー: PLEX
- メディア: エレクトロニクス
- この商品を含むブログを見る
お金持ちの人は地上波4チャンネル、BS/CS4チャンネルチューナー搭載のPX-Q3PEとかを買うと幸せになれるのかもしれません。
PLEX社製 8チャンネル同時 地上デジタル・BS・CSクアッドチューナー PX-Q3PE
- 出版社/メーカー: PLEX
- メディア: Personal Computers
- この商品を含むブログ (1件) を見る
しかしながら、パット見この子たちにはLinux向けドライバーの情報が少ない(もしかしたら無い?)ようです。
ってことでこの子たちからTS抜きをしたい場合はBonDriverを使わざるを得ないってことですね。
すわなち…
「PX-W3PEやPX-Q3PEを使ってChinachuを動かしたい場合はMirakurun@Windowsが便利かも」
ってことですね。良い話。やっとこの記事の有用性を見つけられた気がします(白目
理論上は当記事の内容でPX-W3PEやPX-Q3PEでChinachuを動作させることが可能です。
今から録画サーバーをChinachuで構築したい人は是非参考にしてあげてください。
ちなみにPX-W3PEやPX-Q3PEのBonDriver等の情報は下記リンクに転がってそうです。
vladi.cocolog-nifty.com
構築した我が録画環境構成
はい。ひと目でわかるおかしな構成です。
「その気になれば1台にまとまるじゃん」とかそういう無粋なツッコミはやめてください。色々と事情があるのです。
「BonDriverProxy要らなくね?」というツッコミもあるかもしれません。それは確かに的を得ている気がしますけど組んじゃったんだもの。しょうがない。
データの流れ
使っているソフトウェア一覧(一応階層的に書いている)
- Windows 10 Pro : PT3サーバー用。Windowsなら何でも良かった。
- Node.js
- Mirakurun : Chinachu向けのSpinel的なやつ
- BonRecTest : Mirakurunは標準出力からTSを吐き出せるソフトウェアを必要とするので
- Mirakurun : Chinachu向けのSpinel的なやつ
- BonDriverProxyEx : 機能が削減されたSpinel的なやつ
- Visual Studio 2015 : BonDriverProxyExとBonRecTestのコンパイルに使うよ
- Node.js
- Windows Server 2012 R2 : ファイルサーバー用。今後はChinachu用サーバーとしても活躍します。
- VirtualBox : ChinachuをWindowsで動かす勇気はなかった
- Ubuntu 14.04
- Node.js
- Rivarun : Mirakurunからのパケットを受け取ってChinachuに投げてくれる子
- Chinachu : 録画及びストリーミング視聴ができるWebアプリケーション
- Node.js
- Ubuntu 14.04
- VirtualBox : ChinachuをWindowsで動かす勇気はなかった
BonDriverProxyExの導入@Windows10
Windows版のビルド
GitHub - u-n-k-n-o-w-n/BonDriverProxyEx
こちらからソースコードを拝借して、VisualStudioでコンパイルしてしまいましょう。
私はVisualStudio 2015を利用してコンパイルしました。
x64なWindowsを使っているなら無難にx64でビルドしましょう。
あとソリューション構成のRelease_SVCってやつはコマンドライン版らしいです。
私はGUI版にしました。
BonDriver_PT3-○○.dllの配置
BonDriverProxyEx.exeと同じディレクトリに「BonDriver PT-ST 人柱版3(up0305)(新BS対応)」なDLLを配置します。
ダウンロードはこの辺から。
でーてーぶいあぷろだぁ
BonDriver PT-ST 人柱版3(up0305)(新BS対応)
設定等は前の記事と同じなのですが、一応メモっておきます。
BonDriver_PT3-ST.ini
[SET] ;0で使用しない、1で使用する ;LNB電源 UseLNB=1 ;1チューナーのDMA転送バッファサイズ(約1.5MB × 設定値) DMABuff=8
BonDriverProxyEx.iniの記載
Gistにおいておきました。
BonDriverProxyEx.ini
↑Mirakurunが動作しているマシンのIPが192.168.0.3の場合
あと、デフォルトのポート(1192番)が当方の環境では何かと衝突しちゃったので、代わりに11920番ポートを使っています。
ファイル構成
例えばPT3を3枚接続している当環境ではこんな感じになります。
ファイヤーウォールの設定
ちゃんと受信規則も送信規則を設定しときませう。
起動
起動させるとタスクトレイに常駐します。
動作してない時は情報ウィンドウに何も表示されません。
安心してください。動作しているときはここに何かが表示されます。
自動起動の設定
「C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp」にBonDriverProxyEx.exeへのショートカットを置いておきましょう。
BonDriver_Proxyのコンパイル
BonDriverProxyExのクライアント側となるDLLのコンパイルをしておきます。
後述するRecBonTestやTVTest等で利用します。
OSがx64ならx64でコンパイルすれば良いと思います。
私はこんな構成でコンパイルしました。
ちなみに必要なのは「BonDriver_Proxy」だけなので、他のやつはコンパイルする必要はありません。
TVTestでテスト
さて、ここまでの設定でBonDriverProxyExが動作するか試してみましょう。
TVTestに関しては前回の記事を見てください。
チャンネル設定ファイルが欲しければ以下を参照すると良いでしょう。
TVTestチャンネル設定ファイル - px-w3pe @ ウィキ - アットウィキ
先ほど作ったBonDriver_Proxy.dllをコピー+リネームしBonDriver_Proxy-S.dllとBonDriver_Proxy-T.dllを作成。その後TVTest.exeと同じディレクトリに配置します。
また同じ場所にBonDricer_Proxy-S.iniとBonDriver_Proxy-T.iniを配置します。これもGistにおいてます。
BonDriver_Proxy-S.ini
BonDriver_Proxy-T.ini
ch2ファイルはこれまでの物を流用すると良いと思います(BonDriver_Proxy-S.ch2とBonDriver_Proxy-T.ch2にリネーム)
これで普通に動作するはず(多分
注意点
- 当然ですが、BonDriver_Proxyをx64でビルドしたならTVTestもx64版を利用しましょう
- BonDriverProxyExにはスクランブルを解除する機能は付いていません
- ということでスクランブル解除機能付きのTVTestを利用しましょう
Mirakurunの導入@Windows10
MirakurunはChinachu用のSpinelみたいな子らしいです。
ナウでヤングらしく、Chinachu Airはこちらの子でしか動作しないらしいので後々の事を考えて導入してみました。
基本的に公式ページに書いてある方法で普通にインストールできました。
GitHub - Chinachu/Mirakurun: A Modern DTV Tuner Server Service.
RecBonTestのコンパイルと配置
Mirakurun自身はチューナーにアクセスする機能を有していません。標準出力からTSを吐いてくれるソフトウェアを介してチューナーとやり取りするようです。
AutoConvertの作者さんでもあるrndomhack氏が良い感じのソフトウェアを作ってくださっているのでそれを活用します。
ちなみにスクランブル解除はこの子にて行っています。
コンパイル
GitHub - rndomhack/BonRecTest: Recoding test program for BonDriver
ダウンロードしてよしなにしてください。
BonDriver_Proxyと同じターゲットプラットフォーム設定でコンパイルしましょう。
設定
BonRecTestには特に設定は存在していません。なぜなら設定情報は全てコマンドライン引数で与えれるからです。
ということで適当な場所にファイルを配置しておきましょう。
私の場合は次のようなディレクトリ構造にしました。
BonDriver_Proxy-T.dll等は前述のTVTestで動作確認できている物を持ってきます。
C:\soft\PT3\BonRecTest | |-BonRecTest.exe |-B25Decoder.dll | |-proxy | |-BonDriver_Proxy-S.dll |-BonDriver_Proxy-S.ini |-BonDriver_Proxy-T.dll |-BonDriver_Proxy-T.ini
B25Decoder.dllは下記リンクあたりから拾ってください。
でーてーぶいあぷろだぁ
Node.jsの導入
バージョン5.9.0以上であればOKみたいです。
Node.js
適当に入れましょう。
インストール
「管理者権限で起動したPowerShellを使ってね」とのこと。
npm install winser -g npm install mirakurun -g --production
ちなみにこのwinserってのはNode.jsでWindowsサービスを実現するためのなにがしらしいです。
ということで、サービスでMirakurunが動作します。
設定
これもまたGistにまとめてあります。
channels.yml
server.yml
tuners.yml
チャンネル情報は有料チャンネルを含め全て書き込んでいるので、適宜無効にして使うとすっきりするはずです。
注意点
WindowsでMirakurunを動作させる場合、Linux向けに書かれた設定情報はほぼ流用できません。
BonDriverはLinux上のPTx向けドライバとは違ったチャンネル番号だったりするので、BonDriver向けの設定にしてやる必要があります。
私はこれに気が付かなくてかなり時間を浪費しました…
VirtualBoxのインストール+Ubuntuのインストール@Windows Server
この辺は特別なことはしてないので割愛します。
Oracle VM VirtualBox
Homepage | Ubuntu Japanese Team
Ubuntuの下準備@VirtualBox
基本的に参考文献から引っ張ってきました。多謝。
以下のコマンドで色々と必要な物をぶち込んだ後にユーザーを作ってます。
sudo apt-get update sudo apt-get upgrade sudo apt-get install make g++ build-essential curl git-core libssl-dev yasm libtool autoconf automake libboost-all-dev pkg-config node npm sudo adduser chinachu
その後、適当に管理者権限をいじいじして…
sudo visudo
...末尾... chinachu ALL=(ALL)ALL
ユーザー切り替え。
sudo -i -u chinachu
共有フォルダ
一応ホストOSな領域にTSファイルを保存しておきたかったので、共有フォルダに関する設定をしておきました。
また、共有フォルダにアクセスできるユーザの設定をしないとややこしいことになるのでやっておきましょう。
VirtualBoxにおいて、ホストOSとゲストOS (CentOS) 間の共有フォルダを作成する方法 - Qiita
sudo gpasswd --add chinachu vboxsf
自動起動の設定
ホストOSが起動したタイミングでUbuntuが立ち上がるように設定しておくと、色々とはかどります。
以下の様なバッチファイルを作って…
"C:\Program Files\Oracle\VirtualBox\vboxmanage" startvm "ubuntu14" --type headless
そのバッチファイルへのショートカットを「C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp」に置いておけばWindowsが起動すると自動的にゲストOSも立ち上がります。
Rivarunの導入@Ubuntu
ここに書いてある後半の方を実行します。
Using Mirakurun with Rivarun on Chinachu Beta · Chinachu/Chinachu Wiki · GitHub
Node.jsの導入
Node.jsの5.9.0以上である必要があるっぽいので、適当に下ごしらえします。
cd /tmp/ wget https://nodejs.org/dist/v5.9.0/node-v5.9.0-linux-x64.tar.xz tar Jxf node-v5.9.0-linux-x64.tar.xz cd node-v5.9.0-linux-x64/ sudo cp -uv bin/* /usr/local/bin/ sudo cp -ruv include/* /usr/local/include/ sudo cp -ruv lib/* /usr/local/lib/ sudo cp -ruv share/* /usr/local/share/
しかしながらこれだけではどうしてかnpmが動いてくれません。
ググるとこんな記事がありました。
qiita.com
私と同じように上手く行かない人は以下のコマンドを実行しましょう。
curl -0 -L http://npmjs.org/install.sh | sudo sh
インストール
さすがNode.jsで作られているだけはありますね。
コマンド一つで入っちゃいます。
sudo npm install rivarun -g
Chinachu Betaの導入@Ubuntu
以下に書いてある通りにやれば動きます。
Home · Chinachu/Chinachu Wiki · GitHub
インストール
適当に必要な物を放り込んで…
sudo apt-get install build-essential curl git-core libssl-dev yasm libtool autoconf
クローン+インストール
git clone git://github.com/kanreisa/Chinachu.git ~/chinachu cd ~/chinachu/ ./chinachu installer # Auto を選択
設定
空のルール設定ファイルを作成
echo [] > rules.json
基本的には以下のリンクの通りに設定すれば良いですが…
Home · Chinachu/Chinachu Wiki · GitHub
一部をRivarun(もっと言うとBonDriver)向けに記述する必要があります
ということでconfig.jsonをGistにおいておきました。
Chinachu設定ファイル(Windowsで動くMirakuruに対して、Rivarunを使って接続) · GitHub
仕様は次のようになっています。
- 以下のIDとパスワードでログイン可能
- ID: akari
- Pass: hirakegoma
- 動画の保存ディレクトリは、共有フォルダとして自動マウントしているrecフォルダ
- /media/sf_rec/
- Mirakurunが動作しているマシンのIPは192.168.0.3
動作チェック
./chinachu service wui execute # 問題なく起動できたらCtrl+\で終了 ./chinachu update -f # EPG取得テスト
サービスとして登録
./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の設定ができてなかったので、事前に設定してから…
sudo ln -s /usr/lib/insserv/insserv /sbin/insserv
chinachu-operatorとchianchu-wuiを登録
sudo insserv chinachu-operator sudo insserv chinachu-wui
サービス起動
sudo service chinachu-operator start sudo service chinachu-wui start
完成
http://chinachuの動作するUbuntuのIPアドレス:10772/ でアクセスできるはずです。
わーい pic.twitter.com/DdMgrugLjG
— yanoshi (@yanoshi) 2016年5月5日
おわりに
素晴らしいシステムを作ってくださり、更にSlack上でも気さくに質問に対応してくださったkanreisa氏に多謝。
エンコード等の話についてはまた別の記事でまとめることにします。とりあえずこんな感じ。