

    汎用TS処理プログラム実装研究資料

                                            デジタル放送総合技術研究開発機構


◆ はじめに

  汎用TS処理プログラム実装研究資料(略称 TSTask)は、パーソナルコンピュータ上にお
  いて、MPEG-2 TS の処理を行うプログラムの実装を研究する目的で頒布される研究資
  料です。

  この資料は MPEG-2 TS を扱うための基本的な機能を実装しています。
  CAS 処理は実装されていないため、暗号化された一般のテレビ放送を扱うことはでき
  ません。


◆ 動作環境

  ・Windows Vista(*) / 7 / 8 / 10
    (*) Meiryo UI が必要


◆ 構築方法

  ソリューションファイル TSTask.sln を Visual Studio 2003 / 2005 で開き、ビルド
  することができます。


◆ ファイル構成

  ファイルを以下のように配置します。

  ・TSTask.exe              TS 処理プログラム
  ・TSTask.default.ini      TSTask のデフォルト設定ファイル
  ・TSTask.txt              このファイル
  ・TSTaskCentre.exe        TSTask 制御プログラム
  ・TSTaskThemes\*.tttheme  テーマファイル

  以下のファイルは、必要に応じて BonDriver を利用するプログラムに配置します。

  ・BonDriver_TSTask.dll    TSTask のストリーム受信用 BonDriver


◆ 導入

  TSTask は TVTest のチャンネル設定(*.ch2/*.ch1)を利用しますので、予め TVTest
  でチャンネルスキャンを行っておきます。


◆ 概要

  各プログラムの役割は以下のようになっています。

  ・TSTask.exe            実際に TS 処理を行うプログラム
  ・TSTaskCentre.exe      TSTask の状態表示や操作などを行うプログラム
  ・BonDriver_TSTask.dll  TSTask で受信中のストリームを開く BonDriver


◆ 使い方

  TSTaskCentre は TSTask 専用のタスクマネージャーのようなものです。
  デフォルトでは、TSTask を起動すると TSTaskCentre も起動するようになっていま
  す。設定を変えれば、TSTask のみで起動させることもできますので、何も表示せずに
  裏で動作させることができます。

  TSTaskCentre の左端の部分をドラッグして移動、ダブルクリックして最小化します。
  右クリックするとメニューが出ます。

  TSTask が起動している場合、その数だけ TSTask の状態を表示するステータスバーが
  表示されます。
  バーの左端の数字が表示されている部分を右クリックすると、その TSTask に関連し
  たメニューが出ます。

    ・「TVTestで視聴」など  登録されたツールが表示されます。
       デフォルトで以下の項目が登録されています。
       ・TVTestで視聴              BonDriver_TSTask を利用して視聴します。
       ・TVTestでネットワーク視聴  UDP/TCP 送信を利用して視聴します。
    ・TSTask の設定         TSTask の設定ダイアログを表示します。
    ・ログの表示            TSTask のログを表示します。
    ・チャンネル一覧        読み込まれているチャンネルの一覧を表示します。
    ・タスクの情報          タスクの各種情報が表示されます。
    ・メッセージ送信        デバッグ用の機能です。
    ・終了                  TSTask を終了させます。

  ステータスバーをクリックすると、チャンネル変更などの操作ができます。

  TSTaskCentre を閉じても、TSTask は終了しません。

  TSTask の設定は TSTask.ini とコマンドラインオプションで行います。
  設定を変えるには「TSTask の設定」でダイアログから設定するか、TSTask.ini をエ
  ディタで編集します。ただし、ダイアログでは行えない設定もあります。
  なお、設定ダイアログを表示した時に TSTask.ini が存在しない場合、
  TSTask.default.ini からコピーされて作成されます。


◆ TvRock からの使い方

  コマンドラインオプション /DID でデバイスIDを指定すると、TvRockDTVターゲットと
  して動作します。

  TvRock のチューナー設定で、実行アプリ(視聴・無)に TSTask.exe を指定し、オプ
  ションに /DID を付けて、デバイスのIDを渡すようにします。

    実行アプリ(視聴・無) : TSTask.exe
              オプション : /DID A /d BonDriver_Hoge.dll

  などとします。

  DID は A から H までで、それぞれ左上にある [チューナーアプリケーション] に対
  応しています。TvRock DTV Target A の場合は /DID A、TvRock DTV Target H の場合
  は /DID H を指定します。

  また、左側にある [受信放送波] の設定を、使用する BonDriver が対応しているもの
  だけチェックを入れるようにします。

  ワンセグ録画に使用する場合、オプションに /rec1seg を付けてください。


◆ TvRock からのチャンネル切替がうまくいかない場合

  BonDriver では地デジ(UHF/VHF/CATV)/BS/CS のチューニング空間に対して、インデッ
  クスが固定されているわけではないので、何らかの形で対応づける必要があります。
  TSTask ではそれを自動的に行うようにしていますが、場合によってはうまくいかない
  かも知れません。その時は、以下の点を確認してください。

  ・TvRock のチューナーの設定で、受信放送波(地上波/BS/CS)を使用する BonDriver
    が対応しているもののみチェックが入った状態にします。

  ・TvRock の設定のチューナーのページで、[チャンネル設定] の項目のチャンネルと
    サービスの値を適切に設定します。
    TvRock から TSTask を起動して、ステータスバーの左端(1:A のように表示されて
    いる部分)の右クリックメニューから [チャンネル一覧] を選択するとチャンネルの
    リストが表示されますので、それを参考にしてください。

  ・チューニング空間がうまく選択されない場合、TSTask.ini でインデックスを指定す
    ることができます。
    チューニング空間のインデックスは、上で説明した [チャンネル一覧] にある「イ
    ンデックス」の左側の数字です。
    例えば地デジでこれが 1 と 2 だった場合、TSTask.ini で

      TvRock.DID_A.TerrestrialIndex=1
      TvRock.DID_A.TerrestrialIndex2=2

    のように指定します。


◆ Tips

  ・TSTaskCentre を最小化状態やタスクトレイに入れた状態で起動する
    TSTask の設定で、TSTaskCentre のオプションに /min を追加します。
    また、TSTaskCentre の設定で [最小化時にタスクトレイに格納する] にチェックを
    入れると、タスクトレイに格納された状態で起動します。

  ・ネットワーク送信開始と同時に視聴プログラムを起動する
    プログラムの設定で、視聴プログラムのトリガーに StreamingStarted を指定して
    ください。

  ・チャンネル変更時や番組切り替わり時のエラーカウントをリセットする
    ツールの設定で、以下のような項目を追加してください。

      コマンド: Message ResetErrorStatistics
      トリガー: EventChanged


◆ コマンドラインオプション

  以下のコマンドラインオプションが使用できます。
  オプションは大文字/小文字のどちらでも大丈夫です。
  (*) の付いているものは、最後に - を付けると逆の意味になります。
  (例えば、/xclient- でクライアントプログラムを起動しない)

  ◇ TSTask のオプション

  オプションでの指定が無い場合、TSTask.ini の設定が使用されます。

  ・全般の設定

    /ini            INI ファイル名の指定 (e.g. /ini TSTask2.ini)
    /did            TvRock のデバイスIDの指定 (e.g. /did A)
    /priority       プロセスの優先度 (e.g. /priority 1)
                      -2 = 最低
                      -1 = 低
                       0 = 普通
                       1 = 高
                       2 = 最高
    /xclient        (*)実行時にクライアントプログラムを起動する
    /min            クライアントを最小化状態で起動する

  ・チャンネルの設定

    /d              BonDriver の指定 (e.g. /d BonDriver.dll)
    /chspace        チューニング空間の指定(BonDriver でのインデックス)
                    (e.g. /chspace 1)
    /ch             チャンネルの指定(BonDriver でのインデックス) (e.g. /ch 4)
                    ※注意※ TVTest などの /ch と意味が違います。
    /rch            チャンネルの指定(リモコンチャンネル番号) (e.g. /rch 3)
    /sid            サービスIDの指定 (e.g. /sid 1024)
    /nid            ネットワークIDの指定 (e.g. /nid 6)
    /tsid           トランスポートストリームIDの指定 (e.g. /tsid 32736)

  ・チューナーの設定

    /chsetdelay     チューナーを開いてからチャンネル設定までの最小間隔(ミリ秒単位)
    /chsetinterval  チャンネル変更の最小間隔(ミリ秒単位)

  ・録画の設定

    /rec            起動時録画開始
    /recservice     録画サービスの指定 (e.g. /recservice 1)
                      0 全てのサービス
                      1 指定サービス
    /reccurservice  現在のサービスのみ録画する (/recservice 1 と同じ)
    /rec1seg        (*)ワンセグのみ録画
    /recdelay       (*2)録画開始までの時間(秒単位) (e.g. /recdelay 60)
                    h/m/s で 時間/分/秒 を指定することも可能です。
                    詳しくは /recduration の説明を参照してください。
    /recduration    (*2)録画時間(秒単位) (e.g. /recduration 1800)
                    数字の後に h/m/s があるとそれぞれ 時間/分/秒 の指定になります。
                    その際複数指定することもできますが、途中でスペースなどは入
                    れずに連続して記述してください。
                    (e.g. /recduration 30m) (e.g. /recduration 1h20m30s)
    /recfile        録画ファイル名
                    (e.g. /recfile "D:\Recorded TV\%event-name%_%date%.ts")
    /recdir         予備の録画先フォルダ
                    複数指定でき、その場合先に指定されたものから使用されます。
                    (e.g. /recdir "A:\On Air 1" /recdir "B:\On Air 2")
    /recexit        (*)録画終了時にプログラムを終了
    /recallocsize   録画時に予め確保するサイズ(バイト単位) (e.g. /recallocsize 1GB)

    (*2) /rec が指定されていなければ無視されます。

  ・ネットワーク送信の設定

    /protocol       ネットワーク送信のプロトコル (e.g. /protocol UDP)
                    UDP か TCP を指定します。
    /udp            起動時に UDP でネットワーク送信を開始
    /tcp            起動時に TCP でネットワーク送信を開始
    /address        ネットワーク送信先の IP アドレス (e.g. /address 127.0.0.1)
    /port           ネットワーク送信先のポート番号 (e.g. /port 1234)
    /sendservice    送信するサービスの指定 (e.g. /sendservice 1)
                      0 全てのサービス
                      1 指定サービス
    /send1seg       (*)ワンセグのみ送信

  ・ログの設定

    /loglevel       ログを記録するレベル (e.g. /loglevel 3)
                      0 = ログの記録を行わない
                      1 = エラー時のみログを記録する
                      2 = エラーと注意のログを記録する
                      3 = 重要なログを記録する
                      4 = 詳しめのログを記録する
                      5 = 全てのログを記録する
    /log            (*)ログをファイルに書き出す
    /logfile        ログを書き出すファイル名 (e.g. /logfile TSTask2.log)
    /logoverwrite   (*)ログを上書きする
    /debuglog       (*)ログをデバッグ出力

  ◇ TSTaskCentre のオプション

    /min            (*)最小化状態で起動する

    /loglevel       ログを記録するレベル (e.g. /loglevel 3)
                      0 = ログの記録を行わない
                      1 = エラー時のみログを記録する
                      2 = エラーと注意のログを記録する
                      3 = 重要なログを記録する
                      4 = 詳しめのログを記録する
                      5 = 全てのログを記録する
    /log            (*)ログをファイルに書き出す
    /logfile        ログを書き出すファイル名 (e.g. /logfile TSTaskCentre2.log)
    /logoverwrite   (*)ログを上書きする
    /debuglog       (*)ログをデバッグ出力


◆ BonDriver_TSTask

  BonDriver_TSTask は、TSTask で受信中のストリームを開くための BonDriver です。


◆ ログについて

  TSTask では詳しいログを出力することができますので、何かおかしいことがある場合
  などにはログを取ってみてください。
  TSTask / TSTaskCentre のコマンドラインオプションで /loglevel 5 と指定すると、
  すべてのログが記録されます。また、/log を指定するとログがファイルに書き出され
  ます。
  /debuglog を付けると DebugView などで表示できる形でログが出力されます。


◆ 注意事項

  オリジナルの BonTest の注意事項に準拠します。


◆ ライセンス

  ・このプログラムは GPL とします。
  ・このプログラムの使用及び使用不能によって生じたいかなる損害も補償しません。
  ・設定のアイコンは Fugue Icons を使用しています。

    Fugue Icons
    Copyright (C) 2011 Yusuke Kamiyamane. All rights reserved.
      <http://p.yusukekamiyamane.com/>
    The icons are licensed under a Creative Commons Attribution 3.0 license.
      <http://creativecommons.org/licenses/by/3.0/>


◆ 謝辞

  オリジナルの BonTsEngine の作者である 拡張ツール中の人 氏と、改造版の作者であ
  る Meru-co 氏に感謝します。


◆ 更新履歴

  ver.0.2.0
    ■共通
    ・多くの修正などを行った
    ・サーバー/クライアントタスクの上限をそれぞれ50に増やした
    ・Windows XP を動作対象外とした
    ■TSTask
    ・最初のチャンネル設定までの間隔とチャンネル変更の最小間隔の設定を追加した
    ・ストリーミング時の接続リトライ間隔とリトライ回数の設定を追加した
    ・ストリーミングのアドレスに IPv6 のアドレスを指定できるようにした(未テスト)
    ・チャンネルファイルを CP932 か UTF-16 として読み込むようにした
    ・指定サービスのストリーミングや保存時に対象となるストリームタイプに
      MPEG-1/2/4 Audio、H.265、AC3、DTS などを追加した
    ・全てのサービスを保存時にどのサービスにも属さないパケットが保存されないの
      を修正
    ・ストリーミング停止時にデッドロックが起こる不具合を修正
    ■TSTaskCentre
    ・画面 DPI 設定に応じて各部のサイズが変わるようにした
    ・ステータスバーのデフォルトのフォントを変更した
    ・ダイアログのフォントをＭＳ Ｐゴシックから Meiryo UI にした
    ・ログをクリップボードにコピーする機能を追加した
    ・タスクの情報をリスト形式にして表示される情報を増やした
    ・メッセージ送信で全てのタスクに送信する機能を追加した
    ・チャンネル一覧の「ch-*.txt の形式でコピー」で、チャンネル名に半角空白が含
      まれる場合正しい形式にならないのを修正
    ■BonDriver_TSTask
    ・TSTask を新しく起動した時に追従するようにした

  ver.0.1.5  2011/10/30 (非公開)
    ■共通
    ・コマンドラインスイッチの最後に - を付けて逆の意味になるようにした
    ・ログを上書きするか追記するかの設定を追加した
    ・ログの時刻をミリ秒単位まで出力するようにした
    ・パイプサーバーの待機処理を修正
    ・録画ファイルの情報を正常に取得できない不具合を修正
    ・その他細かい修正
    ■TSTask
    ・BonDriver のチャンネル変更などをワーカースレッドで行うようにした
    ・複数起動時にログのファイル名に連番を付加するようにした
    ■TSTaskCentre
    ・色々な情報を表示する情報バーを追加した
    ・テーマ機能を拡張した
    ・ツールの変数に %service-name%、%service-id%、%file-cur%、%rec-dir-cur% を
      追加した
    ・TSTask のログ表示に保存機能を追加した
    ・ログ関係のコマンドラインオプションを追加した

  ver.0.1.4  2011/9/28
    ■共通
    ・INI ファイルの読み書きに API を使用しないようにした
    ・その他細かい修正
    ■TSTask
    ・/d での BonDriver の指定を絶対パスでも行えるようにした
    ・/chspace と一緒に /sid /nid /tsid を指定しても正常に機能しない不具合を修正
    ■TSTaskCentre
    ・チャンネルスキャンされていない場合に全てのチャンネルから選べるように修正

  ver.0.1.3  2011/9/26
    ■TSTask
    ・クライアントへの通知処理を別スレッドで行うように変更した
    ・クライアントを最小化状態で起動するコマンドラインオプション /min を追加した
    ・チャンネルとサービス変更時の TvRock への通知処理を修正
    ・TvRock に通知するビットレートがバイト単位になっていたのを修正
    ・その他細かい修正
    ■TSTaskCentre
    ・サービス変更がステータスバーの表示に反映されないのを修正
    ・その他細かい修正

  ver.0.1.2  2011/9/24
    ■TSTask
    ・TvRock へのストリームの出力が正常に行われないことがある不具合を修正
    ・ver.0.1.1 で、ネットワーク送信のポート番号が変になる不具合を修正
    ・コマンドラインオプション /ini での INI ファイルの指定が正常に機能しない不
      具合を修正
    ■TSTaskCentre
    ・TSTask の設定ダイアログに、予備の録画先フォルダとクライアントの設定を追加
      した
    ・チャンネル一覧に TvRock の ch-*.txt の形式でクリップボードにコピーする機
      能を追加した
    ・その他細かい修正

  ver.0.1.1  2011/9/23
    ■TSTask
    ・不正なメモリアクセスでクラッシュする不具合を修正
    ■TSTaskCentre
    ・TSTask の設定をダイアログで行えるようにした
    ・TSTaskCentre の設定から TSTask の設定と被っているものを除去した
    ・いくつかの設定が保存されなかったり反映されなかったりする不具合を修正

  ver.0.1.0  2011/9/22
    ・最初のリリース

