code 



今度は、TVtestのビルドの方法から構築ですね。

PC内の図式化

・以下に手順を全て終えた場合のPC内の環境を図式化しました。

構築手順終了後のPC内の環境
tvtest

構築手順終了後のフォルダ構成
spinel

構築前の事前準備

スカパーのPC録画構築手順を以下に示します。 
今回は自身の環境で実施した手順の覚書です。ボードはPX-TBS6985とPX-W3PEです。 
※構築にあたり「スカパー!プレミアムサービスをPCで録画」のHPを参考にしました。管理人様に感謝します。


①事前に必要な製品と契約

(1)スカパー!アンテナの購入と設定(SP-AM600Mは2出力対応、4chならアンテナ2台分設置要) 
(2)スカパー!プレミアム専用チューナーの購入(CDT700HDなど) 
(3)スカパー!プレミアムサービスに加入 
(4)スカパー!プレミアムボードの購入とPC取り付け(PX-TBS6985の4chボードなど) 
(5)地デジチューナーの購入とPC取り付け(PX-W3PEなど、地デジが必要な場合) 
(6)カードリーダーの購入とPC取り付け(スカパー!カードの読込み用でCLOUD2700など、地デジも追加なら2台分要) 
(7)録画用サーバーPC(24時間稼動であれば、消費電力の少ない部品を準備) 
(8)録画用クライアントPC(他の部屋で視聴する場合、視聴のみなので低スペックで) 
(9)リモコン(GV-RCKIT3)の購入(パソコンとテレビを接続した視聴操作することを想定、サーバーとクライアント用2台分要)


②事前に必要なランタイムをインストール

(1)Microsoft .NET Framework 4 
(2)Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ ATLセキュリティ 
(3)Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)(x64) 
(4)Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86)(x64)


③各ドライバのインストール

(1)CLOUD2700-NTTComのドライバのインストール 
(2)PX-TBS6985ドライバのインストール 
(3)PX-W3PEドライバのインストール(追加)


④GrabTsForBD.dllの登録

(1)「スカパーTS抜きツール詰め合わせ」をネット検索し、入手する。 
(2)「スカパーTS抜きツール詰め合わせ」内のBon_SPHD_BDA_PATCH_2の「GrabTsForBD.dll」と 
「GrabTsForBD.dll登録.bat」をC:\Windows\SysWOW64フォルダにコピーする。 
(3)コピーした「GrabTsForBD.dll登録.bat」をダブルクリックして実行し、登録する。

TVTest0.9.0の実行ファイル作成

①TVTest0.9.0のビルド

(1)Visual Studio Express 2013 for Windows Desktopの日本語をダウンロードファイルを入手し、インストール。 
このバージョンは無料であるが、マイクロソフトのアカウントが必要である。 
(2)「TVTest 0.9.0 develop」のソースを「デジタル放送汎用視聴プログラム実装研究資料」の「Download ZIP」から入手する。 
(3)「TVCAS_attachment」のソースをネット検索で入手する。 
(4)「Windows SDK for Windows7」を「MicroSoftのDownload Center」から入手し、インストール。(インストール時に必要なのはSampleのみ)

(5)入手した「TVTest 0.9.0 develop」ソースを解凍する。 
(6)「Windows SDK for Windows7」をインストールした以下の場所の*.cpp、*.hの全てを解凍したTVTest 0.9.0の"\src\BaseClasses"にコピーする。 
場所:"Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses" 
(7)解凍した「TVTest 0.9.0 develop」ソース内の「TVTest_All.VS2013.sln」を実行し、Visual Studio Express 2013を起動させる。 
(8)Visual Studio Express 2013のメニューで「Debug」であったら「Release」に変更し、ソリューションのビルドを実行する。 
(9)ビルドが成功していれば、解凍した「TVTest 0.9.0 develop」ソースのsrc\Win32\Releaseフォルダに 
「TVTest.exe」と「TVTest_Image.dell」が生成される。 
(10)TVTestフォルダ(TVTest_CS)を新規に作成し、その中に生成された「TVTest.exe」と「TVTest_Image.dell」を入れる。


②TVTest0.9.0のPluginのビルド

(1)Visual Studio Express 2013のファイルの「プロジェクトを開く」から解凍した「TVTest 0.9.0 develop」ソース内の 
\sdk\Samples\Samples.slnファイルを選択する。 
(2)ライブラリのアップグレード画面が起動し、既存のファイルがVisual Studio Express 2013にアップグレードされる。 
Visual Studio Express 2013のメニューで「Debug」であったら「Release」に変更し、ソリューションのビルドを実行する。 
(3)ビルドが成功していれば、解凍した「TVTest 0.9.0 develop」ソース内の\sdk\Samples\Win32\Release\フォルダに*.tvtpファイル群が生成される。 
(4)新規作成したTVTestフォルダ(TVTest_CS)内にPluginsフォルダー作成し、その中に生成された*.tvtpファイル群を入れる。


③TVTest0.9.0のCasProcessor.tvtpのビルド

(1)「CasProcessor.tvtp」ソースをネット検索で入手し、解凍する 
(2)解凍した「TVTest 0.9.0 develop」ソースのsrcフォルダの「TVTestPlugin.h」と「TVTestInterface.h」を「CasProcessor.tvtp」ソース内に上書きコピーする。

(3)「CasProcessor.tvtp」ソース内の「CasProcessor.cpp」の2170行目を以下のように修正する。 
修正内容:Info.ConnectPosition = TVTest::TS_PROCESSOR_CONNECT_POSITION_POSTPROCESSING;

(4)「CasProcessor.tvtp」ソース内の「CasProcessor.rc」の11~13行目を以下のように修正する。 
修正内容:AUTOCHECKBOX "EMM処理を行う(&M)",IDC_PROPERTIES_ENABLEEMMPROCESS,8,20,80,9 
修正内容:RTEXT "使用する拡張命令(&E):",IDC_PROPERTIES_INSTRUCTION_LABEL,8,38,72,8

(5)Visual Studio Express 2013のファイルの「プロジェクトを開く」から「CasProcessor.tvtp」ソース内の「CasProcessor.sln」ファイルを選択する。 
(6)ライブラリのアップグレード画面が起動し、既存のファイルがVisual Studio Express 2013にアップグレードされる。 
Visual Studio Express 2013のメニューで「Debug」であったら「Release」に変更し、ソリューションのビルドを実行する。 
(7)ビルドが成功していれば、「CasProcessor.tvtp」ソース内の\Win32\Releaseフォルダに「CasProcessor.tvtp」が生成される。 
(8)新規作成したTVTestフォルダ(TVTest_CS)内のPluginsフォルダーに生成された「CasProcessor.tvtp」を入れる。


④TVTest0.9.0のhelpの設置

(1)解凍した「TVTest 0.9.0 develop」ソース内の\dataフォルダの「TVTest.chm」を新規作成したTVTestフォルダ(TVTest_CS)にコピーする。


⑤TVTest0.9.0のテーマと配色の設置

(1)解凍した「TVTest 0.9.0 develop」ソース内のdata\Themesフォルダ内の*.httheme群を新規作成したTVTestフォルダ(TVTest_CS)に 
「Themes」フォルダを作成し、その中にコピーする。


⑥TVCAS_B1.tvcasのビルド

(1)「TVCAS_attachment」ソースをネット検索で入手し、解凍する。

(2)解凍した「TVCAS_attachment」ソース内のTVCAS\Multi2Decoder.hの18行目を以下のように修正する。 
("@@"修正する箇所の行数を示しており、"-"が削除部分。"+"が追加修正部分) 
-#define MULTI2_SIMD_ICC 
+//#define MULTI2_SIMD_ICC


(3)解凍した「TVCAS_attachment」ソース内のICC\Multi2Decoder\Multi2DecoderSIMD.cppの2行目を以下のように修正する。 
-#include "../../BonTsEngine/Multi2Decoder.h" 
+#include "../../TVCAS/Multi2Decoder.h"


(4)解凍した「TVCAS_attachment」ソース内のTVCAS\CardReader.cppを以下のように修正する。 
@@ -401,6 +401,19 @@ 
return false; 


+// for SPHD 
+// 初期化コマンドでスカパーHD用CASカードかどうか確認 
+static const BYTE InitSettingCmd[] = {0x80U, 0x5EU, 0x00U, 0x00U, 0x00U}; 
+BYTE tmp[256] ; 
+DWORD RecvSize = sizeof(tmp) ; 
+if ( !Transmit( InitSettingCmd, sizeof(InitSettingCmd), tmp, &RecvSize ) || 
+RecvSize != 46 ) { 
+Close(); 
+SetError(TEXT("スカパーHD用ではないカードです。")); 
+return false; 
+} 
+// for SPHD 

LPTSTR pszReaderName; 
BYTE Atr[32]; 
DWORD dwReaderLen = SCARD_AUTOALLOCATE, dwState, dwProtocol, dwAtrLen = sizeof(Atr);


@@ -907,7 +907,7 @@ 
if (!GetLibraryFunc(m_hLib, pEstablishContext, "CasLinkEstablishContext") 
|| !GetLibraryFunc(m_hLib, pListReaders, FUNC_NAME("CasLinkListReaders")) 
|| !GetLibraryFunc(m_hLib, m_pCasLinkReleaseContext, "CasLinkReleaseContext") 
-|| !GetLibraryFunc(m_hLib, m_pCasLinkConnect, "CasLinkConnect") 
+|| !GetLibraryFunc(m_hLib, m_pCasLinkConnect, FUNC_NAME("CasLinkConnect")) 
|| !GetLibraryFunc(m_hLib, m_pCasLinkDisconnect, "CasLinkDisconnect") 
|| !GetLibraryFunc(m_hLib, m_pCasLinkTransmit, "CasLinkTransmit")) { 
::FreeLibrary(m_hLib);


(5)解凍した「TVCAS_attachment」ソース内のTVCAS/CasCard.cppを以下のように修正する。 
@@ -183,7 +183,9 @@ 
BYTE RecvData[RECEIVE_BUFFER_SIZE]; 

// 初期設定条件コマンド送信 
-static const BYTE InitSettingCmd[] = {0x90U, 0x30U, 0x00U, 0x00U, 0x00U}; 
+// for SPHD s 用変更 
+//static const BYTE InitSettingCmd[] = {0x90U, 0x30U, 0x00U, 0x00U, 0x00U}; 
+static const BYTE InitSettingCmd[] = {0x80U, 0x5EU, 0x00U, 0x00U, 0x00U};// 
INITIAL_SETTING_CONDITIONS_CMD {CLA, INS, P1, P2, P3} 
::ZeroMemory(RecvData, sizeof(RecvData)); 
dwRecvSize = sizeof(RecvData); 
TRACE(TEXT("Send \"Initial Setting Conditions Command\"\n"));


@@ -192,11 +194,15 @@ 
return false; 


-if (dwRecvSize < 57UL) { 
+// for SPHD s 用変更 
+//if (dwRecvSize < 57UL) { 
+if (dwRecvSize < 46UL) { 
SetError(ERR_TRANSMITERROR, TEXT("受信データのサイズが不正です。")); 
return false; 


+// for SPHD s 用変更 
+/* 
// レスポンス解析 
m_CasCardInfo.CASystemID = ((WORD)RecvData[6] << 8) | (WORD)RecvData[7]; 
::CopyMemory(m_CasCardInfo.CardID, &RecvData[8], 6); // +8 Card ID


@@ -233,6 +239,13 @@ 
SetError(ERR_TRANSMITERROR, TEXT("カードIDが不正です。")); 
return false; 

+*/ 
+// レスポンス解析 
+m_CasCardInfo.CASystemID = ((WORD)RecvData[0] << 8) | (WORD)RecvData[1]; // +0 CA System ID 
+::CopyMemory(m_CasCardInfo.CardID, &RecvData[2], 6UL); // +2 Card ID 
+::CopyMemory(m_CasCardInfo.SystemKey, &RecvData[8], 32UL); // +8 Descrambling system key 
+::CopyMemory(m_CasCardInfo.InitialCbc, &RecvData[8], 8UL); // +8 Descrambler CBC initial value 
+// for SPHD s 用変更 

// ECMステータス初期化 
::ZeroMemory(&m_EcmStatus, sizeof(m_EcmStatus));


@@ -407,7 +420,9 @@ 


// バッファ準備 
-static const BYTE EcmReceiveCmd[] = {0x90, 0x34, 0x00, 0x00}; 
+// for SPHD s 用変更 
+// static const BYTE EcmReceiveCmd[] = {0x90, 0x34, 0x00, 0x00}; 
+static const BYTE EcmReceiveCmd[] = {0x80, 0x34, 0x00, 0x00}; // ECM_RECEIVE_CMD {CLA, INS, P1, P2} 
BYTE SendData[MAX_ECM_DATA_SIZE + 6]; 
BYTE RecvData[RECEIVE_BUFFER_SIZE]; 
::ZeroMemory(RecvData, sizeof(RecvData));


@@ -426,6 +441,8 @@ 
return NULL; 


+// for SPHD s 用変更 
+/* 
// サイズチェック 
if (dwRecvSize != 25UL) { 
::ZeroMemory(&m_EcmStatus, sizeof(m_EcmStatus));


@@ -459,11 +476,35 @@ 
SetError(ERR_ECMREFUSED, ECM_REFUSED_ERROR_TEXT); 

return NULL; 
+*/ 
+// サイズチェック 
+if (dwRecvSize != 22UL) { 
+::ZeroMemory(&m_EcmStatus, sizeof(m_EcmStatus)); 
+// SetError(ERR_TRANSMITERROR, TEXT("ECMのレスポンスサイズが不正です。")); 
+SetError(ERR_ECMREFUSED, ECM_REFUSED_ERROR_TEXT); 
+return NULL; 
+} 

+// ECMデータを保存する 
+m_EcmStatus.dwLastEcmSize = dwEcmSize; 
+::CopyMemory(m_EcmStatus.LastEcmData, pEcmData, dwEcmSize); 

+// レスポンス解析 
+::CopyMemory(m_EcmStatus.KsData, &RecvData[0], sizeof(m_EcmStatus.KsData)); 

+// 正常終了 
+ClearError(); 
+return m_EcmStatus.KsData; 
+// for SPHD s 用変更 



const bool CCasCard::SendEmmSection(const BYTE *pEmmData, const DWORD dwEmmSize) 


+// for SPHD s 用変更 
+/* 
// 「EMM Receive Command」を処理する 
if (!m_pCardReader) { 
SetError(ERR_CARDNOTOPEN, CARD_NOT_OPEN_ERROR_TEXT);


@@ -516,6 +557,10 @@ 
SetError(ERR_EMMERROR, TEXT("EMMが受け付けられません。")); 
break; 

+*/ 
+// for SPHD s 用変更 

+SetError(ERR_EMMERROR, TEXT("EMMが受け付けられません。")); 

return false; 
}


(6)解凍したTVCAS_attachmentソース内のTVCAS/TsDescrambler.cppを以下のように修正する。 
@@ -1221,7 +1221,11 @@ 
if (PayloadSize < MIN_ECM_DATA_SIZE || PayloadSize > MAX_ECM_DATA_SIZE) 
return false; 

+// for SPHD s 用変更 
+/* 
// ECMが変わったらキー取得が成功するまで無効にする 
+// (最初ECM本体のKsが変化したか比較するようにしたが、 
+// ECM本体とECM応答のKsの変化は一致するわけではない) 
m_Multi2Lock.Lock(); 
if (m_LastChangedKey == 1) { 
m_bEvenKeyValid = false;


@@ -1229,6 +1233,7 @@ 
m_bOddKeyValid = false; 

m_Multi2Lock.Unlock(); 
+*/ 

// 前のECM処理が終わるまで待つ 
if (!m_EcmProcessEvent.IsSignaled()) {


(7)解凍した「TVCAS_attachment」ソース内のTVCAS\TVCAS_B25.hの14行目を以下のように修正する。 
// for SPHD s 用変更 
//#define TVCAS_MODULE_NAME "TVCAS B-25" 
#define TVCAS_MODULE_NAME "TVCAS B-1" 
// for SPHD s 用変更


(8)解凍した「TVCAS_attachment」ソース内のTVCAS\TVCAS_B25.hを16行目を以下のように修正する。 
// for SPHD s 用変更 
//#define TVCAS_MODULE_ORIGINAL_FILE_NAME "TVCAS_B25.tvcas" 
#define TVCAS_MODULE_ORIGINAL_FILE_NAME "TVCAS_B1.tvcas" 
// for SPHD s 用変更


(9)解凍した「TVCAS_attachment」ソース内のTVCAS\TVCAS_B25.defのファイル名を以下のように修正する 
-TVCAS_B25.def 
+TVCAS_B1.def


(10)解凍した「TVCAS_attachment」ソース内のTVCAS\CardReader.hの4行目に以下を追加修正する 
+#define CARDREADER_SCARD_DYNAMIC_SUPPORT 
+#define CARDREADER_BONCASCLIENT_SUPPORT

(11)Visual Studio Express 2013のファイルの「プロジェクトを開く」からTVCAS_attachmentソース内のTVCAS\TVCAS.slnファイルを選択する。 
TVCAS_B25のプロジェクト名をTVCAS_B1に変更する。 
Visual Studio Express 2013のメニューで「Debug」であったら「Release」に変更し、ソリューションのビルドを実行する。 
(12)ビルドが成功していれば、「TVCAS_B1.tvcas」が生成される。 
(13)新規作成したTVTestフォルダ(TVTest_CS)内に生成された「TVCAS_B1.tvcas」を入れる。


⑦TVCAS_B25.tvcasのビルド

(1)「TVCAS_attachment」ソースをネット検索で入手し、解凍する。 
(2)解凍した「TVCAS_attachment」ソース内のTVCAS\CardReader.cppを以下のように修正する。 
@@ -907,7 +907,7 @@ 
if (!GetLibraryFunc(m_hLib, pEstablishContext, "CasLinkEstablishContext") 
|| !GetLibraryFunc(m_hLib, pListReaders, FUNC_NAME("CasLinkListReaders")) 
|| !GetLibraryFunc(m_hLib, m_pCasLinkReleaseContext, "CasLinkReleaseContext") 
- || !GetLibraryFunc(m_hLib, m_pCasLinkConnect, "CasLinkConnect") 
+ || !GetLibraryFunc(m_hLib, m_pCasLinkConnect, FUNC_NAME("CasLinkConnect")) 
|| !GetLibraryFunc(m_hLib, m_pCasLinkDisconnect, "CasLinkDisconnect") 
|| !GetLibraryFunc(m_hLib, m_pCasLinkTransmit, "CasLinkTransmit")) { 
::FreeLibrary(m_hLib);


(3)解凍した「TVCAS_attachment」ソース内のTVCAS\Multi2Decoder.hの18行目を以下のように修正する 
-#define MULTI2_SIMD_ICC 
+//#define MULTI2_SIMD_ICC


(4)解凍した「TVCAS_attachment」ソース内のICC\Multi2Decoder\Multi2DecoderSIMD.cppの2行目を以下のように修正する。 
-#include "../../BonTsEngine/Multi2Decoder.h" 
+#include "../../TVCAS/Multi2Decoder.h"


(5)解凍した「TVCAS_attachment」ソース内のTVCAS\CardReader.hの4行目に以下を追加修正する 
+#define CARDREADER_SCARD_DYNAMIC_SUPPORT 
+#define CARDREADER_BONCASCLIENT_SUPPORT

・Visual Studio Express 2013のファイルの「プロジェクトを開く」からTVCAS_attachmentソース内のTVCAS\TVCAS.slnファイルを選択する。 
Visual Studio Express 2013のメニューで「Debug」であったら「Release」に変更し、ソリューションのビルドを実行する。 
(6)ビルドが成功していれば、「TVCAS_B25.tvcas」が生成される。 
(7)新規作成したTVTestフォルダ(TVTest_CS)内に生成された「TVCAS_B25.tvcas」を入れる。

ビルド完了後のフォルダ構成
tvtest

BonCasClientの実行ファイル作成

①BonCasClientのビルド

BonCasClientはサーバー上のB-CASを使うように出来るらいし。 
(1)「BonCasClient」ソースをネット検索で入手し、解凍する。 
(2)解凍した「BonCasClient」ソース内のBonCasClient.cppを以下のように修正する。 
@@ -122,7 +122,7 @@ 
*((LPCSTR *)mszReaders) = szReaderName; 
return SCARD_S_SUCCESS; 
}else{ 
-*pcchReaders = sizeof(szReaderName); 
+*pcchReaders = sizeof(szReaderName) / sizeof(szReaderName[0]); 

}


@@ -140,7 +140,7 @@ 
*((LPCWSTR *)mszReaders) = szReaderName; 
return SCARD_S_SUCCESS; 
}else{ 
-*pcchReaders = sizeof(szReaderName); 
+*pcchReaders = sizeof(szReaderName) / sizeof(szReaderName[0]); 

}


(3)解凍した「BonCasClient」ソース内のBonCasClient.rcを以下のように修正する。 
-#include "afxres.h" 
+#include "winres.h"

(4)Visual Studio Express 2013のファイルの「プロジェクトを開く」からBonCasClientソース内のBonCasClient.slnファイルを選択する。 
Visual Studio Express 2013のメニューで「Debug」であったら「Release」に変更し、ソリューションのビルドを実行する。 
(5)ビルドが成功していれば、「BonCasClient.dll」が生成される。

TVTestの設定

①BonDriverの配置

(1)「スカパーTS抜きツール詰め合わせ」をネット検索し、入手する。 
(2)「スカパーTS抜きツール詰め合わせ」内のBon_SPHD_BDA_PATCH_2の「BonDriver_BDA.dll」と 
「BonDriver_BDA.ini」を配置する前に「BonDriver_BDA.ini」のファイル名の変更と記述を編集する。


(3)「BonDriver_BDA.ini」の記述を以下ように修正する。 
iniファイルの[Tuner]欄にある、Guid= の記述で呼び出すチューナーを指定しているので、 
以下のようにGuid= の記述を編集すること。 
; For TBS6985A 
;Guid={9bb4f27f-515c-43ca-8e7d-f07c00080000} 
; For TBS6985B 
;Guid={9bb4f27f-515c-43ca-8e7d-f07c00080001} 
; For TBS6985C 
;Guid={9bb4f27f-515c-43ca-8e7d-f07c00080002} 
; For TBS6985D 
;Guid={9bb4f27f-515c-43ca-8e7d-f07c00080003}


(4)「BonDriver_BDA.dll」と「BonDriver_BDA.ini」のファイル名を以下のように変更し、新規作成したTVTestフォルダ(TVTest_CS)にコピーする。 
※ファイル名はSpinelの配信も考慮した名前にしています。 
BonDriver_DW2104_A.dll、 
BonDriver_DW2104_A.ini 
BonDriver_DW2104_B.dll 
BonDriver_DW2104_B.ini 
BonDriver_DW2104_C.dll、 
BonDriver_DW2104_C.ini 
BonDriver_DW2104_D.dll 
BonDriver_DW2104_D.ini 
(5)「BonDriver_TBS6981_ini_20150301」でネット検索、入手し、「BonDriver_DW2104_X.ini系」を 
最新の新規開局・周波数変更情報に編集する。


(6)※PX-W3PE用BonDriverの「up0625.zip」をネット検索し、入手し、 
新規作成したTVTestフォルダ(TVTest_CS)にコピーする。(必要であれば) 
(7)「BonDriver_PX_W3PE_S0.ini」と「BonDriver_PX_W3PE_S1.ini」に以下の新規開局・周波数変更情報を追加編集する。 
CHANNEL_NUM = 30 
CH014 = BS5/TS0,0,11804200,0x4450 
CH015 = BS5/TS1,0,11804200,0x4451 
CH016 = BS7/TS0,0,11842560,0x4470 
CH017 = BS7/TS1,0,11842560,0x4671 
CH018 = BS11/TS0,0,11919280,0x46b0 
CH019 = BS11/TS1,0,11919280,0x46b1 
CH020 = BS11/TS2,0,11919280,0x46b2 
CH021 = BS19/TS0,0,12072720,0x4730 
CH022 = BS19/TS1,0,12072720,0x4731 
CH023 = BS19/TS2,0,12072720,0x4732 
CH024 = BS7/TS2,0,11842560,0x4672 
CH025 = BS21/TS0,0,12111080,0x4750 
CH026 = BS21/TS1,0,12111080,0x4751 
CH027 = BS21/TS2,0,12111080,0x4752 
CH028 = BS23/TS0,0,12149440,0x4770 
CH029 = BS23/TS1,0,12149440,0x4771 
CH030 = BS23/TS2,0,12149440,0x4772


②BonDriver_UDP.dllの配置

(1)「TVTest 0.7.23 (x86)」をネット検索し、入手する。 
(2)「TVTest 0.7.23 (x86)」の「BonDriver_UDP.dll」と「BonDriver_UDP.txt」をTVTestフォルダ(TVTest_CS)にコピーする。


③TVTestの設定

(1)TVTestフォルダ内のTVTest.exeを実行する。


(2)TVTest画面で右クリックの「チューナー」で「BonDriver_DW2104_A.dll」を選択する。

TVTest設定画面
tvtest

(3)TVTest画面で右クリックの「設定」の「TSプロセッサー」でチューナーマップを作成する。

TVTest設定画面
tvtest

(4)TVTest画面で右クリックの「設定」の「チャンネルスキャン」でチャンネルをスキャンする。

TVTest設定画面
tvtest

(5)TVTest画面で右クリックの設定の映像で設定する。 
映像を正しく表示するため、設定は以下のように設定して下さい。 
デコーダ:Microsoft DTV-DVD Video Decoder、映像レンダラ:EVR

TVTest設定画面
tvtest

EpgDataCap_Bonの設定

①EpgDataCap_Bon(EDCB)の設定

(1)「EpgDataCap_Bon(人柱版10.66)」をネット検索で入手し、解凍する。 
(2)解凍した「EpgDataCap_Bon(人柱版10.66)」の「x86」フォルダとreadme等ファイル以外削除し、 
フォルダ名を録画用フォルダ名に変更する。(TVTest_CS_EpgDataCap_Bon) 
(3)TVtestフォルダに入れた各「BonDriver_DW2104_A.dll」「BonDriver_DW2104_A.ini」を 
全てコピーして、「TVTest_CS_EpgDataCap_Bon」の「BonDriver」フォルダにコピーする。


(4)「up0739.zip」をネット検索で入手し、解凍し、その中の「B@Decoder.dll」と「B@@Decoder.dll」ファイルを 
「TVTest_CS_EpgDataCap_Bon」フォルダにコピーする。(但し、Spinelを設定する際見直しをする)


(5)「EpgDataCap_Bon.exe」を起動。UDPにチェックし、「チャンネルスキャン」ボタンでスキャンする。 
(6)EpgDataCap_Bonの「設定」ボタンをクリック

EpgDataCap_Bon設定画面
tvtest

(7)EpgDataCap_Bonの「設定」の「基本設定」タブで録画保存先を設定する

EpgDataCap_Bon設定画面
tvtest

(8)EpgDataCap_Bonの「設定」の「ネットワーク」タブで送信先一覧「127.0.0.1:1234」を追加する。

EpgDataCap_Bon設定画面
tvtest

(9)EpgDataCap_Bonの「設定」の「外部アプリケーション設定」で視聴用TVTest.exeを選択する。 
(10)コマンドラインオプションに「/d BonDriver_UDP.dll /nd /p 1234」を記載する。

EpgDataCap_Bon設定画面
tvtest

EpgTimerの設定

①EpgDataCap_Bon(EDCB)のEpgTimerの設定

(1)「TVTest_CS_EpgDataCap_Bon」内のEpgTimer.exeを起動し、設定をクリックする。


(2)EpgTimerの「設定」の保存フォルダの追加とスタートアップにショートカットを作成する。

EpgTimer設定画面
tvtest

(3)EpgTimerの「設定」の「チューナー」タブの各dllのチューナー数を1にする。

EpgTimer設定画面
tvtest

(4)EpgTimerの「設定」の「EPG取得」タブのサービスと開始時間を設定する。 
(必要なサービスにチェックすれば取得時間の短縮になる)

EpgTimer設定画面
tvtest

(5)EpgTimerの「設定」の「録画操作」タブで録画時の処理を設定する。 
24時間稼動であれば、「何もしない」を選択して下さい。録画マージは起動も考慮し長めにしています。

EpgTimer設定画面
tvtest

(6)EpgTimerの「設定」の「予約情報管理」タブで予約情報を設定する。 
録画時のファイル名は「$Title2$($ServiceName$ $SDYYYY$-$SDMM$-$SDDD$).ts」で設定しました。

EpgTimer設定画面
tvtest

(7)EpgTimerの「設定」の「その他」タブで最小化などを設定する。

EpgTimer設定画面
tvtest

(8)EpgTimerの「設定」の「Windowsサービス」タブでサービスをインストールする。 
番組表を設定し、予約録画を実施し、動作を確認します。

EpgTimer設定画面
tvtest

リモコン関連の設定

①リモコンプラグイン設定

(1)テレビと同様にしようするため、リモコンのプラグインを設定します。使用するリモコンはGV-RCKIT3です。 
但し、複数のリモコンは面倒なため、最終的に学習リモコンでまとめて使用しています。 
(2)「up0410.zip」でネット検索し、入手したら解凍し、TVtestと同様の場所に設置する。(verはRMCLunch- 1.0.12が良い) 
(3)TVTestのプラグインのHDUSリモコンをチェックする。 
(4)RMCLunch.exeを起動させて、GV-RCKIT3がTVTestと連動して使用できるように設定する。

RMCLunch設定画面
リモコン

②TvtPlayプラグインの設定

(1)録画した動画をレコーダのリモコンに近いことを行うための設定です。 
(2)「TvtPlay」でネット検索し、入手したら解凍する。 
(3)解凍したフィルタ内「のTvtPlay.tvtp」を再生用のTVTest/Pluginsにコピーする。(視聴用と再生用でフォルダを分けています) 
(4)解凍したフィルタ内の「TvtAudioStretchFilter.ax」をD:\などにコピーする。 
コマンドプロンプトを実行し、「regsvr32 D:\TvtAudioStretchFilter.ax」実行すれば登録は完了する。(倍速再生機能使用のため) 
(5)解凍したフィルタ内の「BonDriver_Pipe.dll」ファイルを再生用TVTestにコピーする。 
(6)再生用TVTest.exeを起動し、BonDriverの変更、音声フィルタの選定、TvtPlayのチェック、 
ショートカットの起動オプションの設定です。(リンク先のTVTest.exeに/tvtplayを追加する。(起動時にTVtPlayが有効になる)

TvtPlayのBonDriver設定画面
再生
TvtPlayの音声設定画面
再生
TvtPlayのチェック設定画面
再生
TvtPlayの起動オプション設定画面
再生

Spinelの設定

①Spinelの設定

(1)SpinelでチューナーをLAN内で共有するためのソフトです。 
(2)サーバー側PCのプライベートIPアドレスを固定する。

ネットワーク設定画面
spinel

(3)Spinel_ver3.6.1.1をネット検索し、入手したら解凍し、「Spinel3」フォルダを 
「TVTest_CS」フォルダと同じ階層に設置する。


(4)新規作成のTVTestフォルダ(TVTest_CS)内の「BonDriver_DW2104_A.dll」と「BonDriver_DW2104_A.ini」群を用意し、 
「Spinel3」フォルダ内の「BonDriver」フォルダに全てコピーする。

フォルダ内画面
spinel

(5)Spinel.exeを起動し、正しく表示しているか確認し、終了させる。(spinel.exeを右クリックして管理者権限にチェック) 
※Spinelで認識しないボードは「Spinel3」フォルダ内にある「BonDriverMapping.json」と 
「Spinel3」フォルダ内の「DeviceDefinitions」内の「*.xml」ファイルを追加編集する。 
今回のボードはそのファイルに記述があるため、追加編集は必要無いです。但し、手順通りにリネームすればです。

Spinel起動画面
spinel

(6)Spinelフォルダ内に前回入手した「B@Decoder.dll」「B@@Decoder.dll」を配置する(解除をSpinelで実施するため) 
(7)Spinel3\Spinel.ini内の設定を「DescrambleControl = 1」に編集し、上書き保存する。


②Spinel用TVTestの追加設定(サーバー側)

(1)「BonDriver_Spinel_ver3.5.3.0」をネット検索し、入手したら解凍する。 
(2)「BonDriver_Spinel3」の中にある「BonDriver_Spinel.dll.ini」を「BonDriver_Spinel_DW2104_X.dll.ini」と 
4ch分リネームする。(XはA,B,C,Dとした) 
(3)「BonDriver_Spinel3」の中の「x86」フォルダの「BonDriver_Spinel.dll」を「BonDriver_Spinel_DW2104_X.dll」と 
4ch分リネームする。(XはA,B,C,Dとした) 
(4)リネームしたiniとdllファイルを新規作成したTVTestフォルダ(TVTest_CS)にコピーする。 
※PX-W3PE用のBonDriver_Spinel系も追加する。(必要であれば)

配置したフォルダ画面
spinel

(5)リネームしたPX-TBS6985の「BonDriver_Spinel_DW2104_X.dll.ini」系を以下のように編集する。 
「BonDriver_Spinel_DW2104_A.dll.ini」⇒「TunerPath = "DW2104/0/S/0"」に編集する。 
「BonDriver_Spinel_DW2104_B.dll.ini」⇒「TunerPath = "DW2104/1/S/0"」に編集する。 
「BonDriver_Spinel_DW2104_C.dll.ini」⇒「TunerPath = "DW2104/2/S/0"」に編集する。 
「BonDriver_Spinel_DW2104_D.dll.ini」⇒「TunerPath = "DW2104/3/S/0"」に編集する。 
「RequireExclusiveChannelControl = 0」に編集する。 
「DesiredDescrambleControl = 2」に編集する。 


(6)リネームしたPX-W3PEの「BonDriver_Spinel_PX_W3PE_XX.dll.ini」系を以下のように編集する。(必要であれば) 
「BonDriver_Spinel_PX_W3PE_S0.dll.ini」」⇒「TunerPath = "PXW3PE/0/S/0"」に編集する。 
「BonDriver_Spinel_PX_W3PE_S1.dll.ini」」⇒「TunerPath = "PXW3PE/0/S/1"」に編集する。 
「BonDriver_Spinel_PX_W3PE_T0.dll.ini」」⇒「TunerPath = "PXW3PE/0/T/0"」に編集する。 
「BonDriver_Spinel_PX_W3PE_T1.dll.ini」」⇒「TunerPath = "PXW3PE/0/T/1"」に編集する。 
「RequireExclusiveChannelControl = 0」に編集する。 
「DesiredDescrambleControl = 2」に編集する。


(7)Spinelの最小化設定 
「いじくるつくーる」のソフトを使用し、「F:\TV_Viewing\Spinel3\Spinel.exe -WindowState=Minimized」と 
指定することで最小化起動が出来ます。(その他にスタートアップの設定もできます) 
(8)Spinelを起動した状態で「BonDriver_Spinel_DW2104_X.dll」で視聴できるか確認する。 
(9)必要であれば、TVTestの追加設定(スキャン、チューナーマップ)を実施する。

最小化設定画面
spinel

③BonCasClientの設置とチューナーマップの再設定

(1)BonCasClientのビルドで修正した「BonCasClient.dell」と「BonCasClient.ini」を 
新規作成したTVTestフォルダ(TVTest_CS)にコピーする。この「BonCasClient」使用するため、 
TVTest_CSのTVTest.exeを起動し、「設定」のチューナーマップを以下のように修正する。

チューナーマップの再設定画面
BonCas

④のEpgDataCap_BonとEpgTimerの再設定

(1)今後はSpinel.exeを通して視聴と録画を行うため、SpinelのBonDriver_Spinelの追加修正を実施する。 
(2)「TVTest_CS_EpgDataCap_Bon」の「BonDriver」にSpinelのBonDriver_Spinelのdll、iniをコピーし、 
EpgDataCap_Bon.exeを起動させ、チャンネルスキャンを実施する。 
(3)BonDriver_Spineのiniは「RequireExclusiveChannelControl = 1」に編集する。(録画を最優先にするため) 
(4)EpgTimer.exeを起動させ、「設定」の「基本設定」の「チューナー」をSpinelのdllに再設定する。 
(5)予約録画可能か再度確認する。

EpgDataCap_BonのBonDriverのフォルダ内画面
tvtest
EpgTimerの設定画面
tvtest

⑤Spinel用TVTestの追加設定(クライアント側)

(1)基本はサーバーのTVTest_CSフォルダをクライアントPCにコピーする。 
(2)TVTest_CSフォルダの各iniファイルは「Address = "192.168.0.2:48083"」のようにサーバーのIPアドレスに編集すること。 
(3)クライアント側でTVTestを起動させ、視聴できれば成功です。(当たり前ですが、サーバー側は必要なソフトは起動して下さい)

ストリーミングの配信設定

①TvRemoteViewer_VB導入の事前準備

(1)ランタイムMicrosoft .NET Framework 4.0または4.5の導入(TVTestなどを導入していれば、インストールはしているかと) 
(2)ポート40003へのアクセスを許可させる。ここでは「Windowsファイアウォール」の「受信の規則」の「新しい規則」で 
ポート40003のアクセスを許可設定させる。

受信の規則の設定画面
remote
受信の規則の設定画面
remote
受信の規則の設定画面
remote

(3)使用可能なブラウザをインストールする(Chromeなど)。 
(4)Flash Playerの導入(ブラウザを使用し、ストリーミング配信するため、必要) 
(5)配信PCのIPアドレスを固定する。(Spinelの導入で固定済み)

②TvRemoteViewer_VBの導入

(1)TvRemoteViewer_VBを「http://vb45wb5b.seesaa.net/」のHPよりダウンロードし、解凍する。(最新版で良い) 
フォルダをリネーム(TvRemoteViewer_VB)し、TVTest_CSと同等の場所に設定する(上層からのフォルダ名は日本語を使用しないこと) 
(2)「TvRemoteViewer_VB」フォルダ内に「html」フォルダを作成する。「TvRemoteViewer_VB」フォルダ内の 
「_設置用ファイル\ HTML_WWWROOTに・・・」内のファイルを全て「html」フォルダにコピーする。 
(3)「TvRemoteViewer_VB」の「html」内に「stream」フォルダを作成する。 
(4)「TvRemoteViewer_VB」フォルダの同じ階層に[ffmpeg」フォルダを作成する。次に「http://ffmpeg.zeranoe.com/builds/」のHPから 
OSに合った「Download FFmpeg git-affbecb 64-bit Static」をダウンロードし、解凍する。中身全てを[ffmpeg」フォルダにコピーする。 
(5)[ffmpeg」フォルダ内の「presets」フォルダに「TvRemoteViewer_VB」フォルダ内の「設置用ファイル\ffpreset_ffmpeg・・・」の 
libx264-ipod640.ffpresetファイルをコピーする。 
(6)「TvRemoteViewer_VB」フォルダの同じ階層に[RecTask」フォルダを作成する。 次に「http://www1.axfc.net/uploader/so/3047953」 
のHPからRecTaskをダウンロードし、解凍する。その中の「RecTaskCentre.exe」、「RecTask.exe」、「RecTask.default.ini」の 
3つのファイルを「RecTask」フォルダにコピーする。 
(7)TVTestから「BonDriver_Spinel系のdll,ini,ch2」と「BonCasClient.dll」と「BonCasClient.ini」を「RecTask」フォルダにコピーする。(PX-TBS6985とPX-W3PEのBonDriver_Spinel系の全てコピーする)

③TvRemoteViewer_VBのカスタマイズファイルの導入

(1)「http://vladi.cocolog-nifty.com/blog/files/TvRemoteFiles_133.7z」のHPからカスタマイズファイルをダウンロードし、解凍する。 (最新版はVladiのブログのストリーミング視聴環境よりダウンロードして下さい) 
(2)解凍した「html」フォルダの中身を「TvRemoteViewer_VB」の「html 」に全て上書きコピーする。 
(3)解凍した「root」フォルダの中身を「TvRemoteViewer_VB」フォルダに全て上書きコピーする。 
(4)解凍した「RecTask」フォルダのRecTask.ini を「RecTask」にコピーする。 
(5)コピーしたRecTask.iniを「General.CardReader=BonCasClient」と編集する。(RecTaskを使用するために、BonCasClientが必要)

TvRemoteViewer_VBフォルダ構成
remote

④TvRemoteViewer_VBの初期設定

(1)「TvRemoteViewer_VB」フォルダの「TvRemoteViewer_vb.exe」をダブルクリックで起動させる。タスクトレイにアイコンが 立ち上がるため、ダブルクリックで設定画面を起動させる。以下のように場所を指定する。

TvRemoteViewer_VBの設定画面
remote

(2)「TvRemoteViewer_vb.exe」の設定ファイルを編集をクリックし、「TvRemoteViewer_VB.ini」ファイルを編集する。 
(3)「tsfile_wait = 2」に編集する。 
(4)「STOP_IDLEMINUTES = 0」に編集する。 
(5)「VideoPath = "F:\01_動画"」に再生させるファイル場所に編集する。 
(6)「VideoExtensions = ".ts", ".mp4"」に編集する。 
(7)「TvProgramD = 23」を地デジ番組表で表示する地域の番号に編集する。 
(8)「TvProgram_EDCB_url = "http://127.0.0.1:5510/api/EnumEventInfo"」に編集する。 
以上を編集し、TvRemoteViewer_VB.iniを保存し、TvRemoteViewer_VBを再起動する。 
(9)「いじくるつくーる」で「起動時に毎回実行」に設定する。

⑤RecTask for SPHDの導入

スカパープレミアムの配信の運用にはRecTask for SPHDを使用します。 
(1)ファイルは「http://www1.axfc.net/u/3448144」よりダウンロードし、解凍する。 
(2)「TvRemoteViewer_VB」フォルダの同じ階層に解凍したフォルダを「RecTask_SPHD」とリネームし、配置する。 
(3)「RecTask」フォルダ内の「BonDriver_Spinel系のdll,ini,ch2」と「BonCasClient.dll」と「BonCasClient.ini」、「RecTask.ini」を 
全てコピーする。 
(4)「TvRemoteViewer_vb.exe」の設定ファイルを編集をクリックし、「TvRemoteViewer_VB.ini」ファイルを編集する。 
「RecTask_SPHD ="F:\TV_Viewing\TvRemote\RecTask_SPHD\RecTask_SPHD.exe"」のように編集する。 
これによりスカパー、地上デジの両方が視聴できるようになります。(なぜ、この方法で両方視聴できているかは良く分かっていません)

RecTask for SPHDのフォルダ構成
remote

⑥TvRemoteViewer_VBの視聴確認

(1)同じPCからChromeブラウザから「http://127.0.0.1:40003/」入力し、トップメニューが表示されます。 
EDCB番組表の視聴をクリックし、映像が視聴可能か確認する。(ファイヤーウォールが出た場合は許可させる) 
(2)スマホから「http://PCのIPアドレス:40003/」入力し、PC上と同様の視聴が可能か確認する。

ブラウザの視聴画面
remote

⑦ダイナミックDNSサービス(MyDNS)の設定

外部から自宅にアクセスする際、必要なダイナミックDNSサービスに登録する必要があります。 
(1)「MyDNS.JP」のサイトでDynamicDNSサービスを登録する。 
(2)「MyDNS.JP」のサイトの「JOIN US」をクリックし、情報を入力する。 
(3)登録が完了したらメール(ログ、パス)が来ますので「MyDNS.JP」のサイトにログインする。 
(4)固定化のドメイン名を設定する。 
(5)自宅の無線LANのPPTPサーバーを設定する。

MyDNS.JPサイト
remote

登録情報入力画面
remote

PPTPサーバーの設定画面(バッファロー)
remote

⑧DiCEの設定

ダイナミックDNSサービスを登録したが、IPアドレスが更新されたら、手動で更新作業をする必要がある。 
「DiCE」ソフトを使うことで自動化することが可能である。 
(1)「DiCE」のHPよりDiCE for WindowsVersion 1.59の「Download MSI Package」をダウンロードし、インストールする。 
(2)「DiCE」のメニューの「イベント」から「追加」をクリックし、イベントの編集画面が表示される。 
以下のように設定する。 
(3)「いじくるつくーる」で「起動時に毎回実行」に設定する。

DiCEの設定画面
remote

⑨スマホのVPNの設定

(1)スマホのVPN設定で取得したドメインと無線LANのPPTPサーバーのアカウントを入力設定する。 
(2)スマホから「http://PCのIPアドレス:40003/」入力し、PC上と同様の視聴が可能か確認する

スマホのVPN設定画面
remote
http://batyhp.webcrow.jp/Pc_SkyRecording.html

人気ブログランキングへ