PT3の環境を構築します。今回はSpinel使用を前提に、視聴環境まで構築します。
用語について
まずは、度々出てくる用語について最初にまとめておきます。
PT3 | アースソフトのPCI Express x1対応(TS抜き)デジタルチューナーカード。 「地上デジタル」x2、「BSデジタル、110°CSデジタル」x2の計4チューナー搭載。 最大の特徴はアレコレな制限を回避し、色々マニアックな使い方ができること。 |
---|---|
Spinel | PT3等のチューナーをLAN内の複数端末で共有できるようにするツール。 チューナー使用権が被って録画に失敗したりしないよう、排他制御も可能。 |
TVTest | PT3等で番組を視聴するツール。視聴番組の録画も可能。 シンプルかつ多機能で、プラグインによる拡張も可能。 本連載4では番組視聴画面に実況コメントを流すプラグインを使用する。 |
EDCB | EpgDataCap_Bonの略。予約録画、番組表自動取得を行うツール。 LAN内の録画サーバを共有する使い方が可能。 |
TS | EDCBやTVTestで録画した番組は、TSファイルになる。 TSとはAVIやMP4のようなコンテナのことで、中身はMPEG-2映像とAAC音声。 |
想定している構成
前提として、PT3と直接やり取りするのはサーバPC上のSpinelのみです。
サーバPC自身を含むすべてのEDCBやTVTestは、このSpinelを経由してチューナーを利用します。
EDCBは、サーバPC上で動作しているもの(親玉)だけが実際の録画や録画予約を行っており、各クライアントのEDCBは親玉にアクセスし、同じデータを共有します。
こうして配信サーバや録画サーバを1箇所でコントロールすることにより、複数のPCやソフトウェア間で発生する衝突を解消する「排他制御」が可能です。
録画担当のEDCBがPT3のチューナー「T0」で録画予約をしてあるのに、録画開始時刻になっても誰かが同じ「T0」で別チャンネルを視聴していた場合、EDCBがチャンネルを変更できずに録画が失敗する問題が発生します。これが衝突です。
チャンネルコントロールの権限を制御していれば、EDCB側のチャンネル切り替えを他より優先させることができ、正常に録画を開始することができます。これが排他制御です。
以下は構成例です。サーバPCは単体ですべての操作を行えますが、クライアント側はサーバPCの機能を借りているようなイメージです。
チューナーカード「PT3」
ただ観るだけでなく、録画したり編集したりエンコードしたいなら、TS抜きチューナーが必要です。
TS抜きチューナーの代表といえばアースソフトのPT3です。古くはFriioが有名でしたね。
なおOSはWindows 7 64bit版で構築していますが、Windows 10 32bit版の環境でも構築に成功しています。
ソフトウェアの準備
今回はすべて32bit版を使用します。多くのプラグインやライブラリがありますが、そのすべてに64bit版があるとは限りませんし、導入後の余計なトラブルを避けるためでもあります。
PT3関連
PT3 の動作に必要です。ドライバとSDKをダウンロードし、インストールしてください。
Spinel関連
- Spinel_ver3.6.1.1
- BonDriver_Spinel_ver3.5.3.0
ひとまずダウンロードしておいてください。
TVTest関連
- TVTest 0.7.23 (x86)
- TVTest_0.7.23fix
- BonDriver_PT3-ST(お試し人柱版4)
TVTest 0.8以上では不具合が確認されていますので、実績のある旧バージョンにしておきます。
なおBonDriverは、今回のケースではTvTestではなくSpinel側で使用します。
SoftCAS, B25Decoder関連
- SoftCAS(winscard.dll)
- Multi2Dec 2.10(B25Decoder.dll)
SoftCASは、B-CASカードのエミュレーションを行うものです。カード書き換えではありませんが、グレーな領域になるため詳解は避けます。
B25Decoderは、スクランブル解除に必要となります。こちらも多くは語りません…が、後でちょっと語ったりします。
ランタイム等
本環境の動作に必要となります。未導入の場合は先にインストールしておいてください。
- http://www.microsoft.com/ja-jp/download/details.aspx?id=17718
- http://www.microsoft.com/ja-jp/download/details.aspx?id=5555
環境によってはこちらも必要となります。筆者環境ではWindows 10 64bit版で必要でした。
- https://www.microsoft.com/ja-jp/download/details.aspx?id=21
- https://www.microsoft.com/ja-jp/download/details.aspx?id=40784
ファイルの配置
以下の例ではC:
ドライブ直下にDTV
というフォルダを作成し、その中に各ソフトウェアを解凍することを想定しています。
EpgDataCap_Bon
は次回の連載2で説明するEDCBです。今は無視しておいてください。
Spinelの設定
BonDriverの準備
- BonDriver_PT3-ST(お試し人柱版4)を解凍し、
C:¥DTV¥Spinel¥BonDriver
にすべてコピーする BonDriver_PT3-S.dll
を同フォルダ内にコピーし、それぞれ次のようにリネームするBonDriver_PT3-S0.dll
BonDriver_PT3-S1.dll
BonDriver_PT3-T.dll
を同フォルダ内にコピーし、それぞれ次のようにリネームするBonDriver_PT3-T0.dll
BonDriver_PT3-T1.dll
設定ファイルの編集
C:¥DTV¥Spinel¥BonDriverMapping.json
/* BonDriver_PT3-ST */
{
"DeviceName": "PT3",
"Mapping": {
"ISDB_T": "^BonDriver_PT3-T.*?\.dll$",
"ISDB_S": "^BonDriver_PT3-S.*?\.dll$",
}
},
C:¥DTV¥Spinel¥DeviceDefinitions¥EarthSoft.xml
<DeviceDefinition DeviceName="PT3" DisplayName="EarthSoft PT3">
<TunerDefinitions>
<TunerDefinition TunerType="ISDB_T" Count="2">
<ChannelCategories>
<ChannelCategory>UHF</ChannelCategory>
<ChannelCategory>CATV</ChannelCategory>
<ChannelCategory>VHF</ChannelCategory>
</ChannelCategories>
</TunerDefinition>
<TunerDefinition TunerType="ISDB_S" Count="2">
<ChannelCategories>
<ChannelCategory>BS</ChannelCategory>
<ChannelCategory>CS110</ChannelCategory>
</ChannelCategories>
</TunerDefinition>
</TunerDefinitions>
</DeviceDefinition>
起動確認
C:¥DTV¥Spinel¥Spinel.exe
を実行してみます。
このように、地上波チューナー(T0, T1)とBS/CSチューナー(S0, S1)が認識されていればOKです。
ここで閉じるボタンをクリックすると終了してしまいますので、最小化ボタンをクリックしておきましょう。Spinelはタスクトレイに格納されます。
自動起動の設定
Windows起動時にSpinelが自動起動するように設定します。Spinelはサーバの役割を果たしますので、常時起動していることが望ましいためです。
Windows 7では、単にSpinel.exe
のショートカットを作成し、スタートメニューのスタートアップフォルダにドラッグすればOKです。
Windows 10ではこの操作が行えなくなっていますので、スタートメニューを代替するソフトウェアを利用するか、手動でスタートアップに追加することになります。
環境によって異なることもありますが、下記がスタートアップのフォルダです。
C:¥Users¥[ユーザー名]¥AppData¥Roaming¥Microsoft¥Windows¥Start Menu¥Programs¥Startup
また、起動時に自動でウィンドウを最小化するように細工しておきます。
TVTestの設定
パッチを適用する
TVTest 0.7.23には「Microsoft DTV-DVD Video Decoder」でのデコードに不具合があります。
これはWindows Updateにより「Windows 7 SP1 及び Windows Server 2008 R2 SP1 用プラットフォーム更新プログラム (KB2670838)」がインストールされている場合に生じるものです。
この問題を解決するのが、TVTestと一緒にダウンロードした00047_TVTest_0.7.23fixです。
解凍するとTVTest_0.7.23fix.exe
というファイルがありますので、TVTestと同じフォルダにコピーしてから実行します。
BonDriver_Spinelの準備
ここで用意するファイルセットは、次回の連載2でEDCBにそのまま流用できます。
BonDriver_Spinel_ver3.5.3.0
を解凍し、以下の2ファイルをC:¥DTV¥TVTest
にコピーするBonDriver_Spinel3¥BonDriver_Spinel.dll.ini
BonDriver_Spinel3¥x86¥BonDriver_Spinel.dll
BonDriver_Spinel.dll
を同フォルダ内に3つコピーし、これら4ファイルを以下のようにリネームするBonDriver_Spinel_PT-S0.dll
BonDriver_Spinel_PT-S1.dll
BonDriver_Spinel_PT-T0.dll
BonDriver_Spinel_PT-T1.dll
BonDriver_Spinel.dll.ini
を同フォルダ内に3つコピーし、これら4ファイルを以下のようにリネームするBonDriver_Spinel_PT-S0.dll.ini
BonDriver_Spinel_PT-S1.dll.ini
BonDriver_Spinel_PT-T0.dll.ini
BonDriver_Spinel_PT-T1.dll.ini
- 上記3の各ファイルをテキストエディタで開き、それぞれ下記の通り編集する
BonDriver_Spinel_PT-S0.dll.ini
TunerPath = "PT3/0/S/0"
BonDriver_Spinel_PT-S1.dll.ini
TunerPath = "PT3/0/S/1"
BonDriver_Spinel_PT-T0.dll.ini
TunerPath = "PT3/0/T/0"
BonDriver_Spinel_PT-T1.dll.ini
TunerPath = "PT3/0/T/1"
SoftCASとスクランブル解除の準備
本来必須ではありませんが、ここを見に来た方であれば以下略。
winscard.dll
をC:¥DTV¥TVTest
にコピーするB25Decoder.dll
をC:¥DTV¥TVTest
にコピーする
前述の通りSpinel側で請け負うこともできる処理ですが、主に負荷分散のため各クライアントに任せることにします。
次に設定を開き、SoftCAS(winscard.dll)を利用する場合は「カードリーダ」を「スマートカードリーダ」にします。
デコーダの設定
視聴画質に大きく影響するのが「デコーダ」と「レンダラ」です。
デコーダはWindows 7同梱の「Microsoft DTV-DVD Video Decoder」が定番で、次点としてCyberLink社のPowerDVDに同梱されているデコーダがよく挙げられるのですが、筆者としてはMicrosoftのデコーダが総合的に最も優れていると思います。
レンダラについては「EVR」が利用できるのであればこれ一択で良いでしょう。
Windows 10でMicrosoft DTV-DVD Video Decoderを使うには
Windows 10では、TVTestからMicrosoft DTV-DVD Video Decoderを利用できなくなりました。
この問題には回避策があります。別記事にまとめてありますのでご覧ください。
チャンネルスキャン
TVTestの画面左下にあるボタンで、使用するチューナーを選択できます。
4つあるBonDriver_Spinel_PT-** を一つづつ選択し、それぞれにチャンネルスキャンを行います。
「設定」→「チャンネルスキャン」
「スキャン開始」ボタンをクリックし、スキャンが終了するまでしばらく待ちます。しばらくと言っても4チューナーに対してスキャンを行うと、結構な時間がかかります。
スキャン完了後、上記画面のように同じチャンネルが複数表示されたりしますが、一番上のものだけ残してチェックを外しておきましょう。
ここでチェックを外したチャンネルは、チャンネル切り替えの際に表示されません。
番組が視聴できることを確認
チャンネルスキャンに失敗していなければ、ここで問題が生じることはほぼないでしょう。
チャンネルを切り替えてみて、しばらく視聴を続けると自動で放送局ロゴや番組情報が表示されるようになります。
なお上記画面ではニコニコ動画のように実況コメントが表示されていますが、これはTVTestのプラグインによって実現しています。詳細は連載の第4回で解説します。