TVRockからMirakurun+Chinachu γ に乗り換えた話 (CentOS7 on Windows)
4/11 追記: 公開から10日で既に古い記事になる程度にChinachuの開発が早いようです。
公式ドキュメントを参考にして、それでもわからないところの参考程度に読むのをオススメします!!
現在Ubuntu on VirtualBoxにてChinachuを安定動作できています。
CentOS on VMwareにChinachuをインストールするのはオススメしません。
そのうちまとめ直します。
WindowsでTVRockな環境からCentOS(VMware)でMirakurun+Chinachu γに乗り換えた時のメモ。
自分用に書いた奴だけど参考になれば幸いです。
やりたかったこと
まとまった時間が取れないので今の環境を維持しつつ移行するのが必須だった。
なのでOSは現状のWindowsServer2016を使用。
2.については話題のChinachuを使ってみたかった。
なので1. についてもMirakurunを導入することにした。
ただWindowsにMirakurunを入れた所、録画が途中で強制終了するエラーを踏んで断念。
4/2 追記: Mirakurun+TVRockで実験したら問題なく録画できたので問題はChinachu側にありそう。
(error: TSFilter will closing because reached time limit of overflowing the buffer… が録画の最中に発生…)
Windows上のMirakurun+Chinachuでは3回に1回ほど録画が途中で終了。
VMware上でMirakurun+Chinachuだと録画は最後までいくものの同じ頻度で2-3秒の連続的なドロップが起きた。
Windows上のMirakurun+TVRock+VMware上のChinachuだとChinachu側だけで録画の中断が見られた。
アイドル状態の時に問題が起こりやすいのでWindows側の電源管理とVMware上のCentOSの相性が悪いのかもしれない(想像)。
ChinachuのUI周りは気に入っているのでなんとかしたい。
いっそChinachu AirでWindowsに対応してくれないかなぁ。
しばらくはTVRockとChinachuを併用しながら様子を見てみる。
やったこと
- WindowsにてBonDriver_ProxyExの導入
- VMWareにCentOS7インストール
- BonDriverProxy_Linuxの導入
- Mirakurunの導入
- Chinachu γの導入
- Chinachu録画終了後にWindows側のエンコードタスク呼び出し
システム概要
[OS WindowsServer2016] PT3 -> BonDriver_PT3.dll -> BonDriver_ProxyEx
-> [CentOS7(VMware on Windows)] BonDriverProxy_Linux.so -> RecBond(+カードリーダ) -> Mirakurun -> Chinachu γ
-> ssh -> [OS WindowsServer2016] sshd(Cygwin) -> ExProc -> エンコードバッチファイル(GUIを含む)
1. WindowsにてBonDriver_ProxyExの導入
ここを参考に進めればOK
yanoshi.hatenablog.jp
https://github.com/u-n-k-n-o-w-n/BonDriverProxyExのコードをVC++2015でコンパイル。
PT3のドライバがあるフォルダと同じフォルダに入れて.iniを編集。
起動したらWindows側でTVTest+BonDriver_Proxyで動作を確認。
確認したら手動でスタートアップに登録して完了。
2. VMWareにCentOS7インストール
CentOS7をminimalでインストールする。
Windows側の録画フォルダを共有フォルダとして接続。
カードリーダーをVM側に接続。
VMwareToolsのインストール。
アップデートと必要なパッケージをインストール
yum update yum install wget curl yasmpt-get install build-essential curl git-core libssl-dev yasm libtool autoconf yum install python hit unzip bzip2 gcc gcc-c++ make autogen automake kernel-devel patch yum install perl-ExtUtils-MakeMaker libtool openssl-devel libboost-all-dev boost-devel cmake
足りないものは順次追加
カードリーダーのドライバをインストール
wget http://search.cpan.org/CPAN/authors/id/W/WH/WHOM/pcsc-perl-1.4.13.tar.bz2 tar xvjf pcsc-perl-1.4.13.tar.bz2 cd pcsc-perl-1.4.13 perl Makefile.PL make make install wget https://launchpad.net/ubuntu/+archive/primary/+files/pcsc-tools_1.4.23.orig.tar.gz tar xvzf pcsc-tools_1.4.23.orig.tar.gz cd pcsc-tools-1.4.23/ make make install systemctl enable pcscd systemctl start pcscd pcsc_scan # 色々表示されるが最後にJapanese Chijou Digital B-CAS Card (pay TV)と表示されていればOK
libarib25のインストール
git clone https://github.com/stz2012/libarib25.git cd libarib25/ ls cmake . make make install echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf
3. BonDriverProxy_Linuxおよびrecbondの導入
git clone https://github.com/u-n-k-n-o-w-n/BonDriverProxy_Linux ~/BonDriverProxy_Linux cd BonDriverProxy_Linux/ make client vi BonDriver_Proxy.conf # Windows側BonDriver_ProxyEXのAddressとPortを指定。 # BONDRIVER=PT-S または PT-Tを指定(Windows側BonDriver_ProxyEXの設定で指定したドライバ名)。 cp BonDriver_Proxy.so BonDriver_Proxy-S0.so cp BonDriver_Proxy.so BonDriver_Proxy-S1.so cp BonDriver_Proxy.so BonDriver_Proxy-T1.so cp BonDriver_Proxy.so BonDriver_Proxy-T0.so cp BonDriver_Proxy-S.conf BonDriver_Proxy-S0.so.conf cp BonDriver_Proxy-S.conf BonDriver_Proxy-S1.so.conf cp BonDriver_Proxy-T.conf BonDriver_Proxy-T1.so.conf cp BonDriver_Proxy-T.conf BonDriver_Proxy-T0.so.conf # 必要な分だけコピー recbondはBonDriver_Proxy.soのあるフォルダ内でmakeする。 git clone https://github.com/dogeel/recbond.git ~/BonDriverProxy_Linux/recbond cd recbond/ ./autogen.sh ./configure make make install recbond --driver /xxx/BonDriver_Proxy-T0.so --b25 -space B1 3 /mnt/hgfs/Videos/test.ts # テスト recbond --driver <ドライバパス> --b25 -space <チャンネル> <録画時間> <保存ファイルパス> # ※チャンネル指定はBonDriver_PT3のチャンネルに準拠する。B数字の形で指定。 # 録画されていればOK
4. Mirakurunの導入
配布元の注意を呼んでインストール
GitHub - Chinachu/Mirakurun: A Modern DTV Tuner Server Service.
node.jsのバージョンに注意。
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum -y install nodejs npm install pm2 -g npm install mirakurun -g --unsafe --production mirakurun config tuners # commandでの指定方法に注意(チャンネルの頭にBが必要) - name: BonDriver_Proxy-S0 types: - BS - CS command: recbond --driver /xxx/BonDriver_Proxy-S0.so --b25 -space B<channel> - - decoder: ~ isDisabled: false - name: BonDriver_Proxy-T0 types: - GR command: recbond --driver /xxx/BonDriver_Proxy-T0.so --b25 -space B<channel> - - decoder: ~ isDisabled: false mirakurun config channels # BonDriver_Proxyを使っている場合はチャンネルスキャンが機能しないので注意。 # BonDriver_PT3-T or S.ChSet.txt のドライバ内でのチャンネルに対応している。 # 例GR: BonDriver_PT3-T.ChSet.txt -> 18ch 0 5 68 0 - name: テレビ大阪 type: GR channel: '5' #例BS: BonDriver_PT3-S.ChSet.txt -> BS15/TS1 NHK BS1 0 9 7 16625 - name: NHK BS1 type: BS channel: '9' serviceId: 101 # serviceidは必要なさそう?(ここで調べられるhttps://www.yuhisa.com/tv/bs-list/)
5. Chinachu γの導入
配布元の注意を呼んでインストール
Gamma Installation V2 · Chinachu/Chinachu Wiki · GitHub
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar xvzf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make make install useradd chinachu su - chinachu git clone git://github.com/kanreisa/Chinachu.git ~/chinachu cd ~/chinachu/ ./chinachu installer # Auto を選択 vi ./config.json #config.jsonは録画用ディレクトリと録画ファイル名を変更。 #必要に応じてユーザー名:パスワードも変更。 ./chinachu service wui execute # 問題なく起動できたらCtrl+\で終了 ./chinachu update # EPG取得テスト(エラーが出た場合は恐らく Mirakurun に接続できていません)
ここを参考にsystemdに対応させる。
Chinachu γ(ガンマ) インストール手順(CentOS 7編) | 自分に負けないラボラトリー
公式で対応済み
cd ~/chinachu wget https://www.jifu-labo.net/files/systemd.patch.gz zcat systemd.patch.gz | patch ./chinachu service operator unitfile > /tmp/chinachu-operator.service ./chinachu service wui unitfile > /tmp/chinachu-wui.service #ここからrootに戻る cd /tmp chown root:root chinachu-*.service cp chinachu-*.service /lib/systemd/system/ systemctl enable chinachu-operator systemctl enable chinachu-wui systemctl start chinachu-operator systemctl start chinachu-wui # これで以降はsystemctlで操作できる。
Firewalledの設定も忘れずに
cd /usr/lib/firewalld/services/ cp ssh.xml chinachu.xml vi chinachu.xml #名前を変更してtcp 10772を開放 firewall-cmd --add-service=chinachu --zone=public --permanent firewall-cmd --list-services --zone=public --permanent
ブラウザからhttp://address:10772/にアクセスして動作確認
※起動した直後はMirakurunのチャンネル設定が終わっていないために表示されているチャンネル数が少ない場合がある。
※BonDriver_ProxyExの情報ウィンドウでtunerへのアクセスがあればおそらくチャンネルをチェックしている。
6. Chinachu録画終了後にWindows側のエンコードタスク呼び出し
※かなり特殊な環境での使用を想定している。 普通なら以下だけでOK
vi chinachu/recorded-script.sh #!/bin/sh ssh winsrv /cygdrive/c/xxx/task_chinachu.bat "$1"
sshから直接の実行ではGUIが必要なプログラムが正常に起動しないのでPsExecを介して実行する。
PsExecの場合は引用符が外れてしまうので"\“$1\”“で引用符を二重にしておく。
vi chinachu/recorded-script.sh #!/bin/sh ssh winsrv /cygdrive/c/xxx/task_chinachu.bat "\"$1\""
task_chinachu.bat
PsExec -i -u <PC名>\<ユーザー名> -p <password> \\<address> <プログラムのパス> %1
※予めWindows側でPsExecを起動して承認を通しておく。
おわり
以上でおそらく動くはず。
検証は不十分なので自信はない。
何か問題が出たらログを読んで対応。
mirakurun log server
less /home/chinachu/chinachu/log/operator