masahirorの気まま記録簿

個人的な出来事や意見、生活などの記録を思うままにブログに記録

SpinelバージョンアップでB-CAS処理有無の使い分けが可能に

以前より構築、運用しているPT2の「TV録画サーバ」。

PT2での地デジ録画&視聴サーバ構築・ソフト設定(サーバ)編 - masahirorの気まま記録簿
http://d.hatena.ne.jp/masahiror/20100301/pt2_server

上記手順で構築していると、「BS/CS録画の際にドロップが多発する」という事象に陥った。詳細と解決先は下記エントリ参照。

Spinel経由だとBS受信でドロップが発生する件 - masahirorの気まま記録簿
http://d.hatena.ne.jp/masahiror/20100601/spinel_pt2_bs

その後、Spinelのバージョンアップがあったと、上記エントリのコメント欄で教えてもらった。詳しく調べたところ、新バージョンではSpinelへの接続ソフトごとに、B-CAS処理(スクランブル解除)のON/OFFを切り替えれるようになったとのこと。
これは早速試してみたい。ってことで、やってみた。



まずは最新版の入手。以前はアップローダでしか公開されていなかったが、公式サイトが出来たようだ。

Blog - Lapis Labs
http://lapislabs.blog24.fc2.com/

上記2つのエントリを元にしたPT2環境ができあがっている上で、本日現在の最新版「Spinel ver3.5.0.1」「BonDriver_Spinel ver3.4.0.0」を使用する前提で記事を書いていきます。


新バージョンの変更点として、

  • クライアントごとにスクランブル解除のON/OFFをコントロールできる機能を実装しました。
    詳しくはSpinel.ini.defaultのDescrambleControlの項目を参照して下さい

が挙げられる。これにより、Spinelに接続するアプリケーションごとにスクランブルをON/OFF切り分けれるようになった。


これで何がメリットかというと・・・

  • BonCasLinkを使う必要がなくなった
  • 上記を満たしつつも、BS/CS録画時のドロップ多発が回避できる

という2点。


まず、クライアント目線で見てみよう。これまでは、SpinelからスクランブルのかかったTSデータをTVTestが受け取り、BonCasLinkでデコードした上で映像を見ていた。図にするとこんな感じ。

この場合、TVTestを動かす全クライアントにBonCasLinkを入れる必要があった。インターネット経由でTVTestを利用する際は、BonCasLinkの設定が面倒で視聴しにくい状態であった。


しかし、新バージョンのSpinelとBonDriver_Spinelを使用すれば、TVTestにはスクランブルが解除された映像を送ることが出来、ドロップの懸念があるEDCBにはスクランブルがかかったままの映像を送る、といった異なる動作が出来るようになった。


図を使って簡単に解説。まずサーバの場合。

Spinelでスクランブル解除してしまうとEDCBの録画の際にドロップが多発してしまう。そのため、スクランブル未解除のままEDCBに画像を送り、EDCB側でスクランブル解除するのが望ましい。サーバ側のためB-CASカードも刺さっており、EDCBによるB25処理は問題なく実行される。


次にクライアントの場合。

クライアントの視聴ソフトである「TVTest」からSpinelへの映像要求時には、Spinelはスクランブル解除済みのデータを送るようにする。こうすることで、B-CASの刺さっていないクライアント、およびBonCasLinkで仮想的にB-CASがあるようにする必要が無い。視聴だけのため、BS/CS視聴時の多少のドロップは気にならない。




概要的には以上のような感じ。
次に、実際の設定変更に入っていく。

Spinelのバージョンアップ

まずは最新版をダウンロード。

解凍して出来たファイルを、Spinelがインストールされたフォルダ内で上書きする(Spinelは終了させておくこと)。

Spinel設定変更

Spinelの設定項目が一部変更されている。今回の「アプリごとにスクランブルON/OFFを切り替える」を有効にするため、Spinel.exeと同じフォルダにある「Spinel.ini」を下記の通り修正する。


まず、B25関連の設定を削除する。具体的には下記の記述部分をばさっと削除。

; B25Decoderの動作を指定します。
;   0: 無効にします。
;   1: 有効にします。
EnableB25Decoder = 0

次に、新機能を有効にするため、下記の通り追記する。

; B25/B1スクランブル解除の動作を指定します。
; 解除を行うにはそれぞれB25Decoder.dll/B1Decoder.dllが必要です。
;	0: 常にスクランブル解除前のTSを送信します。
;	1: 常にスクランブル解除済みTSを送信します。
;	2: スクランブル解除ONを要求してきたクライアントには解除済みTSを送信しますが、
;	   それ以外のクライアントには解除前のTSを送信します。
;	3: スクランブル解除OFFを要求してきたクライアントには解除前のTSを送信しますが、
;	   それ以外のクライアントには解除済みTSを送信します。
DescrambleControl = 3

原則解除とし、EDCBから呼び出すときだけ解除前のデータをもらうようにする。

BonDriver_Spinel のバージョンアップ

作業前にEDCBを終了させておくこと。
そして、最新版をダウンロード。

解凍して出来たファイルのうち、「x86」フォルダ内にある

  • BonDriver_Spinel.dll

を、EDCBインストールフォルダの「BonDriver」フォルダへコピー。以前の例でいうと、

C:\PT2\EDCB\BonDriver

にコピー。

そして、以前の「BonDriver_Spinel」を削除し、アップデートする。
まず、

  • BonDriver_Spinel_PT-T0.dll
  • BonDriver_Spinel_PT-T1.dll
  • BonDriver_Spinel_PT-S0.dll
  • BonDriver_Spinel_PT-S1.dll

を削除。
次に、【BonDriver_Spinel.dll】を

  • BonDriver_Spinel_PT-T0.dll にリネーム
  • 上記をコピーして、BonDriver_Spinel_PT-T1.dllにリネーム
  • 上記をコピーして、BonDriver_Spinel_PT-S0.dllにリネーム
  • 上記をコピーして、BonDriver_Spinel_PT-S1.dllにリネーム

という作業を行えば完了。

BonDriver_Spinel設定変更

バージョンアップにより設定項目が増えたのと、Spinelからスクランブル解除前のデータをもらうよう設定する。
下記設定ファイル

  • BonDriver_Spinel_PT-T0.dll.ini
  • BonDriver_Spinel_PT-T1.dll.ini
  • BonDriver_Spinel_PT-S0.dll.ini
  • BonDriver_Spinel_PT-S1.dll.ini

をそれぞれ開き、すべてのファイルに次の行を追加していく。

; スクランブル解除を行ったTSの配信を希望するかどうかを指定します。
; 実際に解除済みTSが配信されるかどうかは、サーバ側のDescrambleControl設定値によって決まります。
;   0: 特に希望がない(どちらでもよい)事を通知します。(デフォルト)
;   1: スクランブルが解除されたTSの配信を希望する事を通知します。
;   2: スクランブルされたTSの配信を希望する事を通知します。
DesiredDescrambleControl = 2

これでサーバ側の設定変更は完了。
あとはSpinel、EDCB共に立ち上げ、正しく録画出来るか動作確認。


TVTest側の影響

クライアント側に入れているTVTestの方は、BonDriver_Spinelを上書きするだけでよい。
※逆に言うと、BonDriver_Spinelを最新化しないと動作しなくなる。

上記「BonDriver_Spinel のバージョンアップ」で用意した

  • BonDriver_Spinel_PT-T0.dll
  • BonDriver_Spinel_PT-T1.dll
  • BonDriver_Spinel_PT-S0.dll
  • BonDriver_Spinel_PT-S1.dll

をコピーし、クライアント側のTVTestインストールフォルダに上書きすればよい。
例でいうと

C:\PT2Client\TVTest

へ上書きコピー。
「BonDriver_Spinel_PT-T0.dll.ini」などの設定INIファイルは、変更しなくても問題ない。というのも、今回の追加設定項目が無い場合、スクランブル解除された信号が送られる設定をSpinelに行っているからである。


設定が完了したら、BonCasLinkクライアントを終了させて、正常に視聴できるか動作確認。


BonCasLinkの停止

今回の対処で、サーバ側クライアント側共にBonCasLinkの出番は無くなるため、アプリケーションを終了させるなり、スタートアップから削除するなりして構わない。
万が一のため、ファイル自体は残しておいてもよいが・・・



まとめ

上記により、さらにPT2環境の利便性が向上した。
これまでは、TVTestを入れたクライアントにはBonCasLinkも入れる必要があり面倒であった。
さらに、BonCasLinkクライアントはサーバの指定がIPアドレスでしかできず、DDNSなどで出先からTVTest+BonCasLinkで視聴しようとした際、毎回ホスト→IP変換して設定変更しないといけないため面倒だったが、これでTVTest単体で動くようになり、簡単に視聴できるようになった。
それでいて録画に影響が無いので、願ったり叶ったり。


作者さん、神アップデートありがとうございました。
また、新バージョンのリリースを教えてくださった「はろおさ」さん、ありがとうございました。



アースソフト PT2

アースソフト PT2