Skip to content

放送波の MPEG2-TS に重畳されている EIT (Event Information Table: 番組情報) の生データを時系列でいい感じに表示するツール

License

Notifications You must be signed in to change notification settings

tsukumijima/EITViewer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EITViewer

放送波の MPEG2-TS に重畳されている EIT (Event Information Table: 番組情報) の生データを時系列でいい感じに表示するツールです。
@chinachu/node-aribts から取得した EIT の情報を、文字列や時刻を human-readable な形にフォーマットした上で、TOT (Time Offset Table: 時刻情報) と一緒に出力します。

Usage

Usage: EITViewer [options]

Options:
  --input <path>               入力の TS ファイルのパス
  --output-log <path>          出力するログファイルのパス (省略時は stdout に出力)
  --eit-types <eit_types>      絞り込む EIT のタイプ (コンマ区切り、present/following/schedule から選択)
  --service-ids <service_ids>  絞り込むサービス ID のリスト (コンマ区切り)
  --event-ids <event_ids>      絞り込むイベント ID のリスト (コンマ区切り)
  -h, --help                   display help for command

--eit-types / --service-ids / --event-ids の3つのオプションを指定して、表示する EIT を絞り込めます。

以下は、EIT: EIT[present] & EIT[following] / service_id: 1032 (NHKEテレ1東京) / event_id: 24177,24185,24188,65522 の条件に一致する EIT を表示する場合のコマンド例です。

$ ./EITViewer --input /path/to/record.ts --output-log /path/to/log.txt --eit-types present,following --service-ids 1032 --event-ids 24177,24185,24188,65522

Tips: TOT は基本5秒おきに送出されているため、EIT が送出された時刻は、(その EIT の直前の TOT の JST_Time に記載されている時刻) ~ (その EIT の直前の TOT の JST_Time に記載されている時刻 + 5 秒) の間になります。
たとえば、目当ての EIT の直前の TOT が 2022-08-07T20:06:35+09:00 なら、目当ての EIT は 2022-08-07T20:06:35+09:002022-08-07T20:06:40+09:00 の間に送出されたことになります。

Log Sample

================================================================================
EIT (Event Information Table) [present] [service_id: 1032]
================================================================================
{ table_id: 78,
  section_syntax_indicator: 1,
  section_length: 152,
  service_id: 1032,
  version_number: 9,
  current_next_indicator: 1,
  section_number: 0,
  last_section_number: 1,
  transport_stream_id: 32737,
  original_network_id: 32737,
  segment_last_section_number: 1,
  last_table_id: 78,
  events:
   [ { event_id: 24188,
       start_time: '2022-08-07T20:05:00+09:00',
       duration: Infinity,
       running_status: 0,
       free_CA_mode: 0,
       descriptors_loop_length: 125,
       descriptors:
        [ { descriptor_tag: 77,
            descriptor_length: 45,
            ISO_639_language_code: 'jpn',
            event_name_length: 21,
            event_name_char: 'NHK手話ニュース🈐',
            text_length: 19,
            text_char: '【キャスター】赤堀仁美' },
          { descriptor_tag: 78,
            descriptor_length: 33,
            descriptor_number: 0,
            last_descriptor_number: 0,
            ISO_639_language_code: '\u0000\u0000\u0000',
            length_of_items: 27,
            items:
             [ { item_description_length: 6,
                 item_description_char: '出演者',
                 item_length: 19,
                 item_char: '【キャスター】赤堀仁美' } ],
            text_length: 0,
            text_char: '' },
          { descriptor_tag: 80,
            descriptor_length: 6,
            stream_content: 1,
            component_type: 179,
            component_tag: 0,
            ISO_639_language_code: 'jpn',
            text_char: '' },
          { descriptor_tag: 84,
            descriptor_length: 4,
            contents:
             [ { content_nibble_level_1: 0,
                 content_nibble_level_2: 0,
                 user_nibble_1: 15,
                 user_nibble_2: 15 },
               { content_nibble_level_1: 11,
                 content_nibble_level_2: 4,
                 user_nibble_1: 15,
                 user_nibble_2: 15 } ] },
          { descriptor_tag: 193,
            descriptor_length: 1,
            digital_recording_control_data: 2,
            maximum_bitrate_flag: 0,
            component_control_flag: 0,
            user_defined: 4 },
          { descriptor_tag: 196,
            descriptor_length: 9,
            stream_content: 2,
            component_type: 1,
            component_tag: 16,
            stream_type: 15,
            simulcast_group_tag: 255,
            ES_multi_lingual_flag: 0,
            main_component_flag: 1,
            quality_indicator: 2,
            sampling_rate: 7,
            ISO_639_language_code: 'jpn',
            text_char: '' },
          { descriptor_tag: 214,
            descriptor_length: 13,
            group_type: 1,
            event_count: 3,
            events:
             [ { service_id: 1032, event_id: 24188 },
               { service_id: 1033, event_id: 24188 },
               { service_id: 1034, event_id: 24188 } ],
            private_data_byte: Buffer [Uint8Array] [] } ] } ],
  CRC_32: Buffer [Uint8Array] [ 104, 49, 205, 147 ] }
================================================================================
EIT (Event Information Table) [following] [service_id: 1032]
================================================================================
{ table_id: 78,
  section_syntax_indicator: 1,
  section_length: 474,
  service_id: 1032,
  version_number: 9,
  current_next_indicator: 1,
  section_number: 1,
  last_section_number: 1,
  transport_stream_id: 32737,
  original_network_id: 32737,
  segment_last_section_number: 1,
  last_table_id: 78,
  events:
   [ { event_id: 24185,
       start_time: '2022-08-07T20:10:00+09:00',
       duration: Infinity,
       running_status: 0,
       free_CA_mode: 0,
       descriptors_loop_length: 447,
       descriptors:
        [ { descriptor_tag: 77,
            descriptor_length: 176,
            ISO_639_language_code: 'jpn',
            event_name_length: 44,
            event_name_char: 'アニメ ラブライブ!スーパースター!! 2期(4)🈑',
            text_length: 127,
            text_char:
             '表参道と原宿と青山、3つの街のはざまにある私立結ヶ丘女子高等学校。新入生も加わって、スクールアイドルの大会「ラブライブ!」優勝を目指す青春ドラマが動きはじめる。' },
          { descriptor_tag: 78,
            descriptor_length: 105,
            descriptor_number: 0,
            last_descriptor_number: 1,
            ISO_639_language_code: '\u0000\u0000\u0000',
            length_of_items: 99,
            items:
             [ { item_description_length: 8,
                 item_description_char: '番組内容',
                 item_length: 89,
                 item_char: '【声】伊達さゆり,Liyuu,岬なこ,ペイトン尚未,青山なぎさ,鈴原希実,籔島朱音,大熊和奏,絵森彩' } ],
            text_length: 0,
            text_char: '' },
          { descriptor_tag: 78,
            descriptor_length: 103,
            descriptor_number: 1,
            last_descriptor_number: 1,
            ISO_639_language_code: '\u0000\u0000\u0000',
            length_of_items: 97,
            items:
             [ { item_description_length: 6,
                 item_description_char: '出演者',
                 item_length: 89,
                 item_char: '【声】伊達さゆり,Liyuu,岬なこ,ペイトン尚未,青山なぎさ,鈴原希実,籔島朱音,大熊和奏,絵森彩' } ],
            text_length: 0,
            text_char: '' },
          { descriptor_tag: 80,
            descriptor_length: 6,
            stream_content: 1,
            component_type: 179,
            component_tag: 0,
            ISO_639_language_code: 'jpn',
            text_char: '' },
          { descriptor_tag: 84,
            descriptor_length: 2,
            contents:
             [ { content_nibble_level_1: 7,
                 content_nibble_level_2: 0,
                 user_nibble_1: 15,
                 user_nibble_2: 15 } ] },
          { descriptor_tag: 193,
            descriptor_length: 1,
            digital_recording_control_data: 2,
            maximum_bitrate_flag: 0,
            component_control_flag: 0,
            user_defined: 4 },
          { descriptor_tag: 196,
            descriptor_length: 9,
            stream_content: 2,
            component_type: 3,
            component_tag: 16,
            stream_type: 15,
            simulcast_group_tag: 255,
            ES_multi_lingual_flag: 0,
            main_component_flag: 1,
            quality_indicator: 2,
            sampling_rate: 7,
            ISO_639_language_code: 'jpn',
            text_char: '' },
          { descriptor_tag: 199,
            descriptor_length: 14,
            data_component_id: 8,
            entry_component: 48,
            selector_length: 5,
            selector_byte: Buffer [Uint8Array] [ 1, 19, 106, 112, 110 ],
            num_of_component_ref: 0,
            component_ref: Buffer [Uint8Array] [],
            ISO_639_language_code: 'jpn',
            text_length: 0,
            text_char: '' },
          { descriptor_tag: 214,
            descriptor_length: 13,
            group_type: 1,
            event_count: 3,
            events:
             [ { service_id: 1032, event_id: 24185 },
               { service_id: 1033, event_id: 24185 },
               { service_id: 1034, event_id: 24185 } ],
            private_data_byte: Buffer [Uint8Array] [] } ] } ],
  CRC_32: Buffer [Uint8Array] [ 61, 132, 71, 193 ] }
================================================================================
EIT (Event Information Table) [present] [service_id: 1032]
================================================================================
{ table_id: 78,
  section_syntax_indicator: 1,
  section_length: 152,
  service_id: 1032,
  version_number: 10,
  current_next_indicator: 1,
  section_number: 0,
  last_section_number: 1,
  transport_stream_id: 32737,
  original_network_id: 32737,
  segment_last_section_number: 1,
  last_table_id: 78,
  events:
   [ { event_id: 24188,
       start_time: '2022-08-07T20:05:00+09:00',
       duration: 300,
       running_status: 0,
       free_CA_mode: 0,
       descriptors_loop_length: 125,
       descriptors:
        [ { descriptor_tag: 77,
            descriptor_length: 45,
            ISO_639_language_code: 'jpn',
            event_name_length: 21,
            event_name_char: 'NHK手話ニュース🈐',
            text_length: 19,
            text_char: '【キャスター】赤堀仁美' },
          { descriptor_tag: 78,
            descriptor_length: 33,
            descriptor_number: 0,
            last_descriptor_number: 0,
            ISO_639_language_code: '\u0000\u0000\u0000',
            length_of_items: 27,
            items:
             [ { item_description_length: 6,
                 item_description_char: '出演者',
                 item_length: 19,
                 item_char: '【キャスター】赤堀仁美' } ],
            text_length: 0,
            text_char: '' },
          { descriptor_tag: 80,
            descriptor_length: 6,
            stream_content: 1,
            component_type: 179,
            component_tag: 0,
            ISO_639_language_code: 'jpn',
            text_char: '' },
          { descriptor_tag: 84,
            descriptor_length: 4,
            contents:
             [ { content_nibble_level_1: 0,
                 content_nibble_level_2: 0,
                 user_nibble_1: 15,
                 user_nibble_2: 15 },
               { content_nibble_level_1: 11,
                 content_nibble_level_2: 4,
                 user_nibble_1: 15,
                 user_nibble_2: 15 } ] },
          { descriptor_tag: 193,
            descriptor_length: 1,
            digital_recording_control_data: 2,
            maximum_bitrate_flag: 0,
            component_control_flag: 0,
            user_defined: 4 },
          { descriptor_tag: 196,
            descriptor_length: 9,
            stream_content: 2,
            component_type: 1,
            component_tag: 16,
            stream_type: 15,
            simulcast_group_tag: 255,
            ES_multi_lingual_flag: 0,
            main_component_flag: 1,
            quality_indicator: 2,
            sampling_rate: 7,
            ISO_639_language_code: 'jpn',
            text_char: '' },
          { descriptor_tag: 214,
            descriptor_length: 13,
            group_type: 1,
            event_count: 3,
            events:
             [ { service_id: 1032, event_id: 24188 },
               { service_id: 1033, event_id: 24188 },
               { service_id: 1034, event_id: 24188 } ],
            private_data_byte: Buffer [Uint8Array] [] } ] } ],
  CRC_32: Buffer [Uint8Array] [ 186, 105, 83, 124 ] }
================================================================================
EIT (Event Information Table) [following] [service_id: 1032]
================================================================================
{ table_id: 78,
  section_syntax_indicator: 1,
  section_length: 474,
  service_id: 1032,
  version_number: 10,
  current_next_indicator: 1,
  section_number: 1,
  last_section_number: 1,
  transport_stream_id: 32737,
  original_network_id: 32737,
  segment_last_section_number: 1,
  last_table_id: 78,
  events:
   [ { event_id: 24185,
       start_time: '2022-08-07T20:10:00+09:00',
       duration: 1500,
       running_status: 0,
       free_CA_mode: 0,
       descriptors_loop_length: 447,
       descriptors:
        [ { descriptor_tag: 77,
            descriptor_length: 176,
            ISO_639_language_code: 'jpn',
            event_name_length: 44,
            event_name_char: 'アニメ ラブライブ!スーパースター!! 2期(4)🈑',
            text_length: 127,
            text_char:
             '表参道と原宿と青山、3つの街のはざまにある私立結ヶ丘女子高等学校。新入生も加わって、スクールアイドルの大会「ラブライブ!」優勝を目指す青春ドラマが動きはじめる。' },
          { descriptor_tag: 78,
            descriptor_length: 105,
            descriptor_number: 0,
            last_descriptor_number: 1,
            ISO_639_language_code: '\u0000\u0000\u0000',
            length_of_items: 99,
            items:
             [ { item_description_length: 8,
                 item_description_char: '番組内容',
                 item_length: 89,
                 item_char: '【声】伊達さゆり,Liyuu,岬なこ,ペイトン尚未,青山なぎさ,鈴原希実,籔島朱音,大熊和奏,絵森彩' } ],
            text_length: 0,
            text_char: '' },
          { descriptor_tag: 78,
            descriptor_length: 103,
            descriptor_number: 1,
            last_descriptor_number: 1,
            ISO_639_language_code: '\u0000\u0000\u0000',
            length_of_items: 97,
            items:
             [ { item_description_length: 6,
                 item_description_char: '出演者',
                 item_length: 89,
                 item_char: '【声】伊達さゆり,Liyuu,岬なこ,ペイトン尚未,青山なぎさ,鈴原希実,籔島朱音,大熊和奏,絵森彩' } ],
            text_length: 0,
            text_char: '' },
          { descriptor_tag: 80,
            descriptor_length: 6,
            stream_content: 1,
            component_type: 179,
            component_tag: 0,
            ISO_639_language_code: 'jpn',
            text_char: '' },
          { descriptor_tag: 84,
            descriptor_length: 2,
            contents:
             [ { content_nibble_level_1: 7,
                 content_nibble_level_2: 0,
                 user_nibble_1: 15,
                 user_nibble_2: 15 } ] },
          { descriptor_tag: 193,
            descriptor_length: 1,
            digital_recording_control_data: 2,
            maximum_bitrate_flag: 0,
            component_control_flag: 0,
            user_defined: 4 },
          { descriptor_tag: 196,
            descriptor_length: 9,
            stream_content: 2,
            component_type: 3,
            component_tag: 16,
            stream_type: 15,
            simulcast_group_tag: 255,
            ES_multi_lingual_flag: 0,
            main_component_flag: 1,
            quality_indicator: 2,
            sampling_rate: 7,
            ISO_639_language_code: 'jpn',
            text_char: '' },
          { descriptor_tag: 199,
            descriptor_length: 14,
            data_component_id: 8,
            entry_component: 48,
            selector_length: 5,
            selector_byte: Buffer [Uint8Array] [ 1, 19, 106, 112, 110 ],
            num_of_component_ref: 0,
            component_ref: Buffer [Uint8Array] [],
            ISO_639_language_code: 'jpn',
            text_length: 0,
            text_char: '' },
          { descriptor_tag: 214,
            descriptor_length: 13,
            group_type: 1,
            event_count: 3,
            events:
             [ { service_id: 1032, event_id: 24185 },
               { service_id: 1033, event_id: 24185 },
               { service_id: 1034, event_id: 24185 } ],
            private_data_byte: Buffer [Uint8Array] [] } ] } ],
  CRC_32: Buffer [Uint8Array] [ 172, 3, 88, 46 ] }
================================================================================
TOT (Time Offset Table)
================================================================================
{ table_id: 115,
  section_syntax_indicator: 0,
  section_length: 11,
  JST_time: '2022-08-07T20:06:40+09:00',
  descriptors_loop_length: 0,
  descriptors: [],
  CRC_32: Buffer [Uint8Array] [ 234, 209, 79, 223 ] }
================================================================================

About

放送波の MPEG2-TS に重畳されている EIT (Event Information Table: 番組情報) の生データを時系列でいい感じに表示するツール

Resources

License

Stars

Watchers

Forks

Packages

No packages published