BSトランスポンダの変更に伴ってEDCBなんかを弄ってて
BonDriverProxyExの必要性が出てきたのでその導入方法を書く
EDCBには他アプリが利用しているチューナーと予約がかぶった場合
空きチューナーを見つけて自動で再割当てをするような機能がないらしい
録画をEDCBのみで行う場合は自動設定でうまくいくらしいのだが
取り敢えずTvRockと同時使用することもあるのでBonDriverProxyExを噛ますことで
この辺の再割り当てが確実に行われることを期待
BonDriverProxyExはバイナリが配布されてないのでソースをビルドする
まず公式GitページよりBonDriverProxyおよびBonDriverProxyExソースコードを入手
VS2017でビルドして以下のものを準備する(プラットフォームについては後述)
便宜上 管理アプリBonDriverProxyEx.exeをホスト
TSストリーム受信用BonDriver_Proxy.dllをクライアントと呼ぶ
以下x64の場合
○サーバー側(チューナー内蔵PC)
・適当な場所にBonDriverProxyExフォルダを作り以下のものを入れる
BonDriverProxyEx.exe ← 今回ビルドしたもの
BonDriverProxyEx.ini ← 設定ファイル(必須)
BonDriver_PT-ST.ini ← UseLNB=0 を指定
BonDriver_PT-S.ChSet.txt ← TVTestフォルダなどからコピー
BonDriver_PT-T.ChSet.txt ← 〃
BonDriver_PT-S0.dll ← Bondriver_PTは使うチューナー数分用意する
BonDriver_PT-S1.dll
BonDriver_PT-S2.dll
BonDriver_PT-S3.dll
BonDriver_PT-T0.dll ← 地上波は当方では2チューナーしか使わない
BonDriver_PT-T1.dll
PTCtrl.exe
*exeがx64ならdllもx64で揃えること!(BonDriverProxyExフォルダ内は全てx64)
・BonDriverProxyEx.ini の中身を以下のように記述する(書式はReadMeを参照)
[OPTION] ; サーバ側でのアドレス指定では「,」区切りで複数インタフェースを指定可能 ; e.g. ADDRESS=192.168.0.100, 127.0.0.1 ADDRESS=0.0.0.0 PORT=1192 OPENTUNER_RETURN_DELAY=0 SANDBOXED_RELEASE=0 DISABLE_UNLOAD_BONDRIVER=0 ;BONDRIVER=PT-T CHANNEL_LOCK=0 [BONDRIVER] 00=PT-T;BonDriver_PT-T0.dll;BonDriver_PT-T1.dll 01=PT-S;BonDriver_PT-S0.dll;BonDriver_PT-S1.dll;BonDriver_PT-S2.dll;BonDriver_PT-S3.dll [SYSTEM] PACKET_FIFO_SIZE=64 TS_FIFO_SIZE=64 TSPACKET_BUFSIZE=192512 ; PROCESSPRIORITYの有効な値は高い方から順に、REALTIME, HIGH, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, IDLE PROCESSPRIORITY=NORMAL ; THREADPRIORITY_XXXの有効な値は高い方から順に、CRITICAL, HIGHEST, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, LOWEST, IDLE THREADPRIORITY_TSREADER=NORMAL THREADPRIORITY_SENDER=NORMAL
* ADDRESS=の部分は配信に使うNICのポート番号を使用(IP固定を推奨)
IPアドレス決め打ちはそのアドレスを見失った場合に全TS配信がストップしてしまうので
0.0.0.0で全ポート受付にしておいてファイヤーウォールなどで適宜ブロック設定を行う(重要!)
* [BONDRIVER]の部分でBondriverのグループ化を行う
00=PT-T; → 地上波用グループ名 ; 区切り BonDriver_PT-Tx.dllなど
01=PT-S; → BSCS用グループ名 ; 区切り BonDriver_PT-Sx.dllなど
BonDriverProxyEx.exe起動で指定ポートにTSストリームが配信される
・自動起動の設定→OS起動時に自動起動するようにする
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
へBonDriverProxyEx.exeのショートカットを置く
○クライアント側(録画、視聴)
・ビルドしたBonDriver_Proxy.dllを2つコピーしてそれぞれ
BonDriver_Proxy-S.dllとBonDriver_Proxy-T.dllにリネーム
以下のファイルと共に録画・視聴アプリのフォルダに置く
(EDCB→BonDriverフォルダ TvRock(RecTest)→TVTestフォルダ)
BonDriver_Proxy-S.dll ← BSCS用BonDriver
BonDriver_Proxy-S.ini
BonDriver_Proxy-T.dll ← 地上波用BonDriver
BonDriver_Proxy-T.ini
・各々のiniを以下のように記述
BonDriver_Proxy-S.ini (録画)
[OPTION] ; サーバ側でのアドレス指定では「,」区切りで複数インタフェースを指定可能 ; e.g. ADDRESS=192.168.0.100, 127.0.0.1 ADDRESS=127.0.0.1 PORT=1192 OPENTUNER_RETURN_DELAY=0 SANDBOXED_RELEASE=0 DISABLE_UNLOAD_BONDRIVER=0 BONDRIVER=PT-S CHANNEL_LOCK=1 [SYSTEM] PACKET_FIFO_SIZE=64 TS_FIFO_SIZE=64 TSPACKET_BUFSIZE=192512 ; PROCESSPRIORITYの有効な値は高い方から順に、REALTIME, HIGH, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, IDLE PROCESSPRIORITY=NORMAL ; THREADPRIORITY_XXXの有効な値は高い方から順に、CRITICAL, HIGHEST, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, LOWEST, IDLE THREADPRIORITY_TSREADER=NORMAL THREADPRIORITY_SENDER=NORMAL
BonDriver_Proxy-T.ini (録画)
[OPTION] ; サーバ側でのアドレス指定では「,」区切りで複数インタフェースを指定可能 ; e.g. ADDRESS=192.168.0.100, 127.0.0.1 ADDRESS=127.0.0.1 PORT=1192 OPENTUNER_RETURN_DELAY=0 SANDBOXED_RELEASE=0 DISABLE_UNLOAD_BONDRIVER=0 BONDRIVER=PT-T CHANNEL_LOCK=1 [SYSTEM] PACKET_FIFO_SIZE=64 TS_FIFO_SIZE=64 TSPACKET_BUFSIZE=192512 ; PROCESSPRIORITYの有効な値は高い方から順に、REALTIME, HIGH, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, IDLE PROCESSPRIORITY=NORMAL ; THREADPRIORITY_XXXの有効な値は高い方から順に、CRITICAL, HIGHEST, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, LOWEST, IDLE THREADPRIORITY_TSREADER=NORMAL THREADPRIORITY_SENDER=NORMAL
*サーバー側で録画をする場合の設定
ADDRESS=127.0.0.1
*クライアント側がLAN経由で視聴する場合はサーバーのIPアドレスを入力
ADDRESS=192.168.0.2
* BONDRIVER= の記述はBSCSはPT-S 地上波はPT-T
CHANNEL_LOCK= でチャンネル変更の優先度を指定できる(0~255)
録画と視聴で同じ優先度にならないように注意(同じ場合チャンネル変更できる)
録画アプリは CHANNEL_LOCK=1 でチャンネル変更不可に統一
視聴アプリは CHANNEL_LOCK=0 で優先度なしに設定
TvRockの場合TVTestフォルダを参照するので同じフォルダのTVTestで
視聴を行うと問題が出る可能性があるのでサーバー機では視聴しない
もしくは視聴アプリをTVTest_x64に置きCHANNEL_LOCK=0で視聴など対策
わかりやすく設定を以下の表にまとめてみた
| アプリ種別 | サーバー機・録画 | 〃 |
視聴 ()内はリモート |
| アプリ名 | EDCB | TvRock(RecTest) | TVTest_x64 |
| 参照先フォルダ | D:\PT2\EpgDateCap_Bon_x64\BonDriver | D:\PT2\TVTest | D:\PT2\TVTest_x64 |
| ADDRESS= | 127.0.0.1 | 127.0.0.1 |
127.0.0.1 (192.168.0.2) |
| CHANNEL_LOCK= | 1 | 1 | 0 |
| プラットフォーム | 64bit | 32bit | 64bit |
本来はEDCBとTvRockどちらかの優先度を高くすべきなのだけど
現状EDCBの利用頻度が低いので両者のスケジュールを見ながら手動管理している
プラットフォームについてはホスト側とクライアント側でビット数が違っても良い
例:サーバー機ホスト側64bit サーバー機クライアント側(録画)32bitなど
(ただしBonDriver_Proxy.dllとそれを利用するアプリは合わせる必要がある)
ぶっちゃけCHANNEL_LOCKを使用したいがために敢えて32bitを使用しているだけ
最後に各アプリで必ずチャンネルスキャンをしてチャンネル定義ファイルを作成
TvRockについては録画用のチューナー設定も忘れずに変更しておく
地上波チューナー → /d BonDriver_Proxy-T.dll /DID A
BSCSチューナー → /d BonDriver_Proxy-S.dll /DID C
必要なチャンネル定義ファイルは以下
EDCB → BonDriver_Proxy-S(BonDriverProxy).ChSet4.txt
BonDriver_Proxy-T(BonDriverProxy).ChSet4.txt
ChSet5.txt → 念のため削除後再取得
TVTestおよびRecTask → BonDriver_Proxy-S.ch2
BonDriver_Proxy-T.ch2
作成後は適宜録画テストなどを行えば完璧かな?
最後にBonDriverProxyExを使用するメリットデメリットをまとめる
・メリット
チューナーのリソースを最小限にできる
→同一トランスポンダなら同じチューナー(BonDriver)を割り当てる
比較的動作が軽い・・・テキストベースの設定なのでGUIも必要最低限
・デメリット
BonDriverProxyEx.exeが落ちると全ての録画がストップするなどの影響が出る
設定がやや難解で躓いたときの情報なども少ない
また設定がうまく言っているかもわかりにくい→CHANNEL_LOCKなどの挙動
という訳で設定についてはシンプルにしたつもりだが
もっと複雑なこともできるので今後慣れてきたらやってみようと思う






コメントを残す