WindowsでMirakurun + Chinachu & TVRock な環境たぶん安定
以前の記事で出た色々な問題点が解決したのでまとめます。
結論はVMware Playerを使うのはやめてVirtualBoxを使いましょうと言う話です。
問題点
WindowsServer2016 にMirakurun、CentOS7 on VMware にChinachuで運用すると録画が途中で止まってしまう。
-> Windows上のMirakurunが不安定?
検証1. MirakurunをCentOS7上で動かす
結果: 録画は最後までいくものの致命的なドロップが発生した。
検証2. Mirakurun + TVRock 環境をテスト
結果: 正常に動作
-> Windows Server 上のMirakurunは正常に動いているので問題はChinachu側
-> VMwareがWindowsの電源管理のせいで停止している?
検証3. WindowsServer2016の電源設定をハイパフォーマンスに設定して運用する
結果: 同様の問題が出た -> VMwareとChinachuの相性が悪い?
検証4. CentOS7 on VirtualBox でChinachuを試す
結果: 正常に動作
ということで仮想環境でChinachuを運用する際はVMware Playerは避けるのが無難。
以下前回のまとめ直し。
最終的な構成
[OS WindowsServer2016] PT3 -> BonDriver_PT3.dll -> BonDriver_ProxyEx -> BonRecTest -> Mirakurun
-> [Ubuntu(VirtualBox)] 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、
https://github.com/u-n-k-n-o-w-n/BonDriverProxyのコードをVC++2015でコンパイル。
任意のフォルダにPT3のドライバと一緒に配置。
-> C:\xxx\BonDriverProxyEx.exe
-> C:\xxx\BonDriverProxyEx.ini
-> C:\xxx\BonDriver_PT3-S0.dll
-> C:\xxx\BonDriver_PT3-T0.dll
-> C:\xxx\BonDriver_Proxy-S.dll
-> C:\xxx\BonDriver_Proxy-T.dll
-> C:\xxx\BonDriver_Proxy-S.ini
-> C:\xxx\BonDriver_Proxy-T.ini
BonDriverProxyEx.iniの編集。
※文字コード、改行コード等を変更しないこと。
※変更箇所周辺のみ表記
[OPTION] ADDRESS=xxx.xxx.xxx.xxx PORT=1192 BONDRIVER=PT-T [BONDRIVER] 00=PT-T;BonDriver_PT3-T0.dll;BonDriver_PT3-T1.dll 01=PT-S;BonDriver_PT3-S0.dll;BonDriver_PT3-S1.dll
BonDriver_Proxy-S.iniの編集。
ADDRESS=xxx.xxx.xxx.xxx PORT=11920 BONDRIVER=PT-S ; BonDriver_Proxy-T.iniならPT-T
起動したらTVTest+BonDriver_Proxyで動作を確認。
確認したらBonDriverProxyEx.exeを手動でスタートアップに登録して完了。
2. WindowsにMirakurun導入
まずはBonRecTestをコンパイル
GitHub - rndomhack/BonRecTest: Recoding test program for BonDriver
またB25Decoder.dllを入手しておく
でーてーぶいあぷろだぁ
ドライバ等と同じ場所への配置推奨
-> C:\xxx\BonRecTest.exe
-> C:\xxx\B25Decoder.dll
配布元の注意を読んでインストール
GitHub - Chinachu/Mirakurun: A Modern DTV Tuner Server Service.
node.jsのインストール
バージョンは6.5.0位上7.0.0未満とのこと。
Windowsのファイアウォール詳細設定にてnode.jsを許可しておく。
# 管理者権限のPowerShellで以下を実行 npm install winser -g npm install mirakurun -g --production # "%USERPROFILE%\.Mirakurun\tuners.yml"を編集 # 文字コード、改行コード等を変更しないこと。 # チューナーの数に応じてコピー - name: BonDriver_Proxy-S0 types: - BS command: C:\xxx\BonRecTest.exe --decoder C:\xxx\B25Decoder.dll --log --driver C:\xxx\BonDriver_Proxy-S.dll --output - --channel <channel> decoder: ~ isDisabled: false - name: BonDriver_Proxy-S0 types: - CS command: C:\xxx\BonRecTest.exe --decoder C:\xxx\B25Decoder.dll --log --driver C:\xxx\BonDriver_Proxy-S.dll --output - --channel <channel> decoder: ~ isDisabled: false - name: BonDriver_Proxy-T0 types: - GR command: C:\xxx\BonRecTest.exe --decoder C:\xxx\B25Decoder.dll --log --driver C:\xxx\BonDriver_Proxy-T.dll --output - --channel <channel> decoder: ~ isDisabled: false # "%USERPROFILE%\.Mirakurun\channels.yml"を編集 # 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/)
動作はTVTest+BonDriver_mirakurunでテストする。
Releases · Chinachu/BonDriver_Mirakurun · GitHub
BonDriver_Mirakurun.ini
[GLOBAL] SERVER_HOST="xxx.xxx.xxx.xxx" SERVER_PORT=40772 ; B25(1=enable) DECODE_B25=1 ; Priority(0=Low Priority) PRIORITY=0
なおMirakurunはWindowsのサービスに登録される。
タスクマネージャーのサービスタブ等から起動の操作が可能。
3.Mirakurun + TVRockでのチャンネル設定(必要であれば)
TVRockのチャンネルを設定->チューナーにおいて手動で変更。
Mirakurunでのチャンネル設定+13の値をチャンネルで指定する。
BS・CSについては従来通りTVTestのリファレンス通りに設定すればOK。
4. CentOS7 on VirtualBoxの準備
CentOSを普通にVirtualBoxにインストールしてアップデート確認。
必要なパッケージを順次インストール。
sudo yum update sudo yum upgrade sudo yum install make g++ build-essential curl git-core libssl-dev yasm libtool autoconf automake libboost-all-dev pkg-config node npm
VirtualBoxのファイル共有では"/media/sf_xxx/“に自動マウントされる。
以下を実行してアクセス権限をChinachuの実行ユーザーに与える必要がある。
*なおpm2でサービスに登録するとユーザーグループが変更されるためかアクセスできなくなる。
gpasswd --add {ユーザ名} vboxsf
Firewallの設定
sudo firewall-cmd --zone=public --add-port=20772/tcp --permanent
5. CentOS7にChinachu γの導入
配布元の注意を読んでインストール
Gamma Installation V2 · Chinachu/Chinachu Wiki · GitHub
sudo -i # chinachu γ ではnode.jsはバージョン7未満をインストール curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum -y install nodejs npm install pm2 -g 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 # chinachu実行用ユーザー作成 useradd chinachu # のちのち必要なuidを調べておく id- u chinachu
ここからはchinachuユーザーで作業をすすめる
su - chinachu git clone git://github.com/kanreisa/Chinachu.git ~/chinachu cd ~/chinachu/ ./chinachu installer # Auto を選択 echo [] > rules.json vi ./config.json # config.jsonは録画用ディレクトリと録画ファイル名を変更。 # uidは上で調べたものを入力 # wuiUsersではChinachuをブラウザで開く際の["ユーザー名:パスワード"]を指定 # wuiOpenHostはこのマシンのIPアドレスを指定 "uid": xxxx, "mirakurunPath": "http://xxx.xxx.xxx.xxx:8888/", "recordedDir": "/media/sf_xxx/" "wuiUsers": ["user:pass"], "wuiOpenHost": "xxx.xxx.xxx.yyy", "recordedFormat": "" # 例[<>channel-name] <title> #<episode> <subtitle>.m2ts" とか "[<>channel-name] <fulltitle>" #起動テスト ./chinachu service wui execute # 問題なく起動できたらCtrl+\で終了 ./chinachu update # EPG取得テスト(エラーが出た場合は恐らく Mirakurun に接続できていません)
ここを参考にsystemdに対応させる。 Chinachu γ(ガンマ) インストール手順(CentOS 7編) | 自分に負けないラボラトリー *04/14現在、公式ではpm2を使った方法が推奨されている。 ただし、VirtualBoxで運用する場合はユーザーグループの関係でエラーが出るため別の方法を使う。
# サービスに登録 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 cd /tmp sudo chown root:root chinachu-*.service sudo cp chinachu-*.service /lib/systemd/system/ sudo systemctl enable chinachu-operator sudo systemctl enable chinachu-wui sudo systemctl start chinachu-operator sudo systemctl start chinachu-wui # これで以降はsystemctlで操作できる。 # systemctl stop xxx -> systemctl disable xxx で無効化できる。 # systemdの設定を完全に消したい場合は /lib/systemd/system/chinachu-*.service を削除 # パッチのかかった実行ファイルをchinachu.origで置き換える。 # pm2との共存はできないのでpm2を使う場合はsystemdの設定は削除する。逆もまた然り。
ブラウザからhttp://address:20772/にアクセスして動作確認
※起動した直後はMirakurunのチャンネル設定が終わっていないために表示されているチャンネル数が少ない場合がある。
※BonDriver_ProxyExの情報ウィンドウでtunerへのアクセスがあればおそらくチャンネルをチェックしている。
6. Chinachu録画終了後にWindows側のエンコードタスク呼び出し
※かなり特殊なことをしているので全く推奨しない。
Windows側においてCygwinとSSHをセットアップしておく。
CentOSのChinachuユーザーでssh接続可能なことを確認。
.ssh/configにwinsrvで設定を作っておく。
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のログは"%USERPROFILE%\AppData\Local\Mirakurun"内に、
Chinachuのログは"/home/chinachu/chinachu/log/“内にそれぞれ配置してある。
(pm2で起動している場合はpm2 logから見ることが可能)
よくあるトラブルとしてはアンテナ線が抜けてた、カードリーダーのカードが抜けてたなどがある(あった)。