ISDBScanner
受信可能な日本のテレビチャンネル (ISDB-T/ISDB-S) を全自動でスキャンし、スキャン結果を様々な形式で出力するツール
Install / Use
/learn @tsukumijima/ISDBScannerREADME
ISDBScanner
受信可能な日本のテレビチャンネル (ISDB-T/ISDB-S) を全自動でスキャンし、スキャン結果を EDCB (EDCB-Wine)・Mirakurun・mirakc の各設定ファイルや JSON 形式で出力するツールです。
お使いの Linux PC に接続されているチューナーデバイスを自動的に検出し、全自動で受信可能なすべての地上波・BS・CS チャンネルをスキャンします。
実行時に --exclude-pay-tv オプションを指定すれば、CS と BS の有料放送をスキャン結果から除外することも可能です。
さらに PC に接続されている対応チューナーを自動的に認識し、Mirakurun / mirakc のチューナー設定ファイルとして出力できます。
地上波では、13ch 〜 62ch までの物理チャンネルをすべてスキャンして、お住まいの地域で受信可能なチャンネルを検出します。
BS・CS では、BS・CS1・CS2 ごとに1つの物理チャンネルのみをスキャンし TS 内のメタデータを解析することで、他のチャンネルスキャンツールよりも高速に現在放送中の衛星チャンネルを検出できます。
[!NOTE]
日本のテレビ放送は、主に地上波 (ISDB-T) と衛星放送 (ISDB-S) の2つの方式で行われています。
さらに、衛星放送は BS (Broadcasting Satellite) と CS (Communication Satellite) の2つの方式があります。
各放送媒体を区別するため、各媒体には一意なネットワーク ID が割り当てられています。地上波放送では、居住地域によって受信可能な放送局が異なる特性上、放送局ごとにネットワーク ID が割り当てられています。
BS 放送では、すべて同じネットワーク ID (0x0004) が割り当てられています。
CS 放送では歴史的経緯から、CS1 (0x0006: 旧プラット・ワン系) と CS2 (0x0007: スカイパーフェクTV!2系) で異なるネットワーク ID が割り当てられています。
具体的には、物理チャンネル ND02 / ND08 / ND10 内で放送されているチャンネルは CS1 ネットワーク、それ以外は CS2 ネットワークになります。現在両者の表面的な違いはほとんどありませんが、技術的には異なるネットワークとして扱われています。BS・CS (衛星放送) では、同一ネットワークに属するすべてのチャンネルの情報が、放送波の MPEG-2 TS 内の NIT (Network Information Table) や SDT (Service Description Table) というメタデータに含まれています。
そのため、BS・CS1・CS2 の各ネットワークごとに1つの物理チャンネルをスキャンするだけで、そのネットワークに属するすべてのチャンネルを一括で検出できます。さらに NIT に含まれる「現在放送中の BS/CS 物理チャンネルリスト」の情報を元にチャンネル設定ファイルを出力するため、将来 BS 帯域再編 (トランスポンダ/スロット移動) が行われた際も、再度 ISDBScanner でチャンネルスキャンを行い、出力されたチャンネル設定ファイルを反映するだけで対応できます。
[!NOTE]
地上波の物理チャンネルのうち 53ch - 62ch はすでに廃止されていますが、依然として一部ケーブルテレビのコミュニティチャンネル (自主放送) にて利用されているため、スキャン対象に含めています。
[!IMPORTANT]
検証環境がないため、ISDB-T の C13 - C63ch (周波数変換パススルー方式) と、ISDB-C (トランスモジュレーション方式) で放送されているチャンネルのスキャンには対応していません。
対応チューナー
px4_drv / smsusb (Linux カーネル標準ドライバ) 対応チューナー以外での動作は検証していませんが、おそらく動作すると思います。
[!IMPORTANT]
DVB 版ドライバを利用するには、ISDBScanner v1.1.0 / recisdb v1.2.0 以降が必要です。
recisdb v1.2.0 以前のバージョンは DVB 版ドライバの操作に対応していません。
chardev 版ドライバ
- px4_drv
- PLEX PX-W3U4
- PLEX PX-Q3U4
- PLEX PX-W3PE4
- PLEX PX-Q3PE4
- PLEX PX-W3PE5
- PLEX PX-Q3PE5
- PLEX PX-MLT5PE
- PLEX PX-MLT8PE
- PLEX PX-M1UR
- PLEX PX-S1UR
- e-better DTV02A-1T1S-U
- e-better DTV02A-4TS-P
- e-better DTV03A-1TU
- pt1_drv
- Earthsoft PT1
- Earthsoft PT2
- pt3_drv
- Earthsoft PT3
DVB 版ドライバ
動作検証は smsusb + VASTDTV VT20 のみ行っています。
ほかの PX-S1UD 同等品 (Siano SMS2270 採用チューナー) シリーズであれば同様に動作するはずです。
ISDB-T / ISDB-S 対応であれば smsusb 以外のドライバ (PT1・PT2 / PT3 の DVB 版ドライバや dddvb など) でも動作するはずですが、検証はできていません。
- smsusb (Linux カーネル標準ドライバ)
- PLEX PX-S1UD
- PLEX PX-Q1UD
- MyGica S880i
- MyGica S270 (PLEX PX-S1UD 同等品)
- VASTDTV VT20 (PLEX PX-S1UD 同等品)
対応出力フォーマット
ISDBScanner は、引数で指定されたディレクトリ以下に複数のファイルを出力します。
出力されるファイルのフォーマットは以下の通りです。
[!NOTE]
--exclude-pay-tvオプションを指定すると、Channels.json を除き、すべての出力ファイルにおいて有料放送チャンネルの定義が除外されます。
なお、Channels.json に限り、BS 放送のみ常に有料放送チャンネルも含めた結果が出力されます (CS 放送はチャンネルスキャン処理自体が省略されるため出力されない) 。
- Channels.json
- スキャン時に内部的に保持しているトランスポートストリームとサービスの情報を JSON 形式で出力します。
- 出力される JSON のデータ構造は constants.py 内の実装を参照してください。
- BS/CS の周波数やトランスポンダ番号などかなり詳細な情報が出力されるため、スキャン結果を自作ツールなどで加工したい場合にはこのファイルを利用することをおすすめします。
- EDCB-Wine
- 出力されるファイルはいずれも EDCB-Wine + Mirakurun/mirakc + BonDriver_mirakc を組み合わせた環境での利用を前提としています。
- EDCB のチャンネル設定ファイルには、ChSet4.txt と ChSet5.txt という2つのフォーマットがあります。
- 両者とも中身は TSV で、各行にチャンネル設定データが記述されています。詳細なフォーマットは formatter.py の実装を参照してください。
- ChSet4.txt には、ファイル名に対応する BonDriver ”単体” で受信可能なチャンネルの情報が記述されています。
- ISDBScanner で生成される ChSet4.txt は BonDriver_mirakc / BonDriver_Mirakurun 専用です。
- それ以外の BonDriver で使う際は、別途 ChSet4.txt 内の物理チャンネルの通し番号やチューナー空間番号の対応を変更する必要があります。
- ChSet5.txt には、EDCB に登録されている BonDriver 全体で受信可能なチャンネルの情報が記述されています。
- EDCB-Wine (EpgTimerSrv) のチューナー割り当て/チューナー不足判定のロジックが正常に作動しなくなる可能性があるため、BonDriver_mirakc(_T/_S).dll のチューナー数割り当ては、Mirakurun/mirakc に登録したチューナーの数と種類 (地上波専用/衛星専用/地上波衛星共用) に合わせることを強く推奨します。
- BonDriver_mirakc_T(BonDriver_mirakc).ChSet4.txt
- EDCB 用のチャンネル設定ファイルです。EDCB-Wine + Mirakurun/mirakc + BonDriver_mirakc の組み合わせの環境での利用を前提にしています。
- 地上波のみのチャンネル設定データが含まれます。
- 別途 BonDriver_mirakc.dll を BonDriver_mirakc_T.dll にコピーすることで、BonDriver_mirakc_T.dll を地上波専用の Mirakurun/mirakc 用 BonDriver にすることができます。
- PX-W3U4・PX-W3PE4 などの地上波チューナーと衛星チューナーが分かれている機種をお使いの環境では、EpgTimerSrv のチューナー数設定で Mirakurun/mirakc に登録している地上波チューナーの数だけ BonDriver_mirakc_T.dll に割り当てることで、EDCB 上で地上波チューナーと衛星チューナーを分けて利用できます。
- BonDriver_mirakc_S(BonDriver_mirakc).ChSet4.txt
- BS・CS (衛星放送) のみのチャンネル設定データが含まれます。
- 別途 BonDriver_mirakc.dll を BonDriver_mirakc_S.dll にコピーすることで、BonDriver_mirakc_S.dll を衛星 (BS・CS) 専用の Mirakurun/mirakc 用 BonDriver にすることができます。
- PX-W3U4・PX-W3PE4 などの地上波チューナーと衛星チューナーが分かれている機種をお使いの環境では、EpgTimerSrv のチューナー数設定で Mirakurun/mirakc に登録している衛星チューナーの数だけ BonDriver_mirakc_S.dll に割り当てることで、EDCB 上で地上波チューナーと衛星チューナーを分けて利用できます。
- BS・CS (衛星放送) のみのチャンネル設定データが含まれます。
- BonDriver_mirakc(BonDriver_mirakc).ChSet4.txt
- 地上波・BS・CS すべてのチャンネル設定データが含まれます。
- このチャンネル設定ファイルを合わせて使うことで、BonDriver_mirakc.dll を地上波・衛星 (BS・CS) 共用の Mirakurun/mirakc 用 BonDriver にすることができます。
- PX-MLT5PE などの地上波チューナーと衛星チューナーが統合されている機種 (マルチチューナー) をお使いの環境では、EpgTimerSrv のチューナー数設定で Mirakurun/mirakc に登録しているマルチチューナーの数だけ BonDriver_mirakc.dll に割り当てることで、EDCB 上で適切にマルチチューナーを利用できます。
- 地上波・BS・CS すべてのチャンネル設定データが含まれます。
- ChSet5.txt
- ChSet4.txt と異なり、登録されている BonDriver のいずれかで受信可能な、地上波・BS・CS すべてのチャンネル設定データが含まれます。
- 各チューナー (BonDriver) に依存するチャンネル情報は ChSet4.txt の方に書き込まれます。
- Mirakurun
- channels.yml
- Mirakurun のチャンネル設定ファイルです。地上波・BS・CS すべてのチャンネル設定データが含まれます。
channelプロパティに記述されている物理チャンネル名は、recisdb が受け入れる物理チャンネル指定フォーマット (T13 ~ T62 / BS01_0 ~ BS23_3 / CS02 ~ CS24) に対応しています。- recpt1 の物理チャンネル指定フォーマットとは互換性がありません。
- recpt1 をチューナーコマンドとして使用している場合は、代わりに channels_recpt1.yml を利用してください。
- channels_recpt1.yml
- Mirakurun のチャンネル設定ファイルです。地上波・BS・CS すべてのチャンネル設定データが含まれます。
channelプロパティに記述されている物理チャンネル名は、recpt1 が受け入れる物理チャンネル指定フォーマット (13 ~ 62 / BS01_0 ~ BS23_3 / CS2 ~ CS24) に対応しています。- recisdb の物理チャンネル指定フォーマットとは互換性がありません。
- recisdb をチューナーコマンドとして使用している場合は、代わりに channels.yml を利用してください。
- tuners.yml
- Mirakurun のチューナー設定ファイルです。
- ISDBScanner で自動検出された、PC に接続されているすべてのチューナーの情報が含まれます。
commandプロパティに記述されているチューナーコマンドには、recisdb のtuneサブコマンドが設定されています。- recpt1 をチューナーコマンドとして使用している場合は、代わりに tuners_recpt1.yml を利用してください。
- tuners_recpt1.yml
- Mirakurun のチューナー設定ファイルです。
- ISDBScanner で自動検出された、PC に接続されているすべてのチューナーの情報が含まれます。
commandプロパティに記述されているチューナーコマンドには、recpt1 コマンドが設定されています。- recisdb をチューナーコマンドとして使用している場合は、代わりに tuners.yml を利用してください。
- recpt1 に加え、
decoderとして arib-b25-stream-test コマンドが導入されていることを前提としています。 - recisdb と異なり recpt1 は DVB 版ドライバに対応していないため、DVB デバイスは記述から除外されます。
- channels.yml
- mirakc
- config.yml
- mirakc の設定ファイルです。
channelsセクションには、地上波・BS・CS すべてのチャンネル設定データが含まれます。channelプロパティに記述されている物理チャンネル名は、recisdb が受け入れる物理チャンネル指定フォーマット (T13 ~ T62 / BS01_0 ~ BS23_3 / CS02 ~ CS24) に対応しています。- recpt1 の物理チャンネル指定フォーマットとは互換性がありません。
- recpt1 をチューナーコマンドとして使用している場合は、代わりに config_recpt1.yml を利用してください。
tunersセクションには、ISDBScanner で自動検出された、PC に接続されているすべてのチューナーの情報が含まれます。commandプロパティに記述されているチューナーコマンドには、recisdb のtuneサブコマンドが設定されています。- recpt1 をチューナーコマンドとして使用している場合は、代わりに config_recpt1.yml を利用してください。
- config_recpt1.yml
- mirakc の設定ファイルです。
channelsセクションには、地上波・BS・CS すべてのチャンネル設定データが含まれます。channelプロパティに記述されている物理チャンネル名は、recpt1 が受け入れる物理チャンネル指定フォーマット (13 ~ 62 / BS01_0 ~ BS23_3 / CS2 ~ CS24) に対応しています。- recisdb の物理チャンネル指定フォーマットとは互換性がありません。
- recisdb をチューナーコマンドとして使用している場合は、代わりに config.yml を利用してください。
tunersセクションには、ISDBScanner で自動検出された、PC に接続されているすべてのチューナーの情報が含まれます。commandプロパティに記述されているチューナーコマンドには、recpt1 コマンドが設定されています。- recisdb をチューナーコマンドとして使用している場合は、代わりに config.yml を利用してください。
- recpt1 に加え、
decode-filterとして arib-b25-stream-test コマンドが導入されていることを前提としています。 - recisdb と異なり recpt1 は DVB 版ドライバに対応していないため、DVB デバイスは記述から
- config.yml
