2010/03/26

Transport Stream Format.

簡介:

Transport Stream (傳輸串流) 簡稱 TS, 主要根據 ITU-T Rec. H.262 | ISO/IEC 13818-2 and ISO/IEC 13818-3制定而成.

Transport Stream 包含了一個或以上的 Program (節目),

Program 由 Video , Audio 和節目資訊(PSI) 組成,

而 Video 和 Audio 的 Elementary Stream 將被拆解裝載到 PES Packets.

而 PSI 則分為四種如下所列:

  • Program Association Table
  • Program Map Table
  • Conditional Access Table
  • Network Information Table

TS 結構分析 :

TS 的長度是固定的, 每個 TS Packet 都是 188 Bytes.

而前四個 Bytes 為同步字元(0x47),

之後則為 PID 等資訊,

解碼時, Client 端裝置會先根據 PID 找到 PAT 表,

在透過 PAT 表內提供的 PMT 之 PID 來找到PMT 所在的位置,

最後再從 PMT 中找到相對應的資料串流, 開始解碼.

因此 , PAT 和 PMT 表是一定必須要提供的部份!

TS_Packet.jpg

PAT 結構:


PAT_Table.jpg

  • table_id : 8 bit, PAT table ID 固定為 0x00
  • section_syntax_indicator : 1 bit,
  • '0' : 1 bit
  • reserved : 2 bits
  • section_length : 12 bits, ( 0xB000 | PAT HeaderLength )
  • transport_stream_id : 16 bits
  • reserved : 2 bits
  • version_number : 5 bits
  • current_next_indicator : 1 bit.
  • section_number : 8 bits,
  • last_section_number : 8 bits,
  • program_number : 16 bits, 與 PMT 表中 program_number 對應
  • reserved : 3 bits
  • network_PID or program_map_PID : 當 program_number == 0 為 networks PID, 反之為 program PID.
  • CRC_32

PMT 結構:


PMT_Table.jpg

  • table_id : 8 bit, PMT table ID 固定為 0x02
  • section_syntax_indicator : 1 bit,
  • '0' : 1 bit
  • reserved : 2 bits
  • section_length : 12 bits, ( 0xB000 | PMT HeaderLength )
  • program_number : 16 bits, (和 PAT 表中的 Program_number 對應)
  • reserved : 2 bits,
  • version_number : 5 bitts,
  • current_next_indicator : 1 bit.
  • section_number : 8 bits,
  • last_section_number : 8 bits,
  • reserved : 3 bits,
  • PCR_PID : 13 bits,
  • reserved : 4 bits,
  • program_info_length : 12 bits,
  • stream_type : 8 bits, (MPEG4 : 0x10, H.264 : 0x1B , etc ...)
  • reserved : 3 bits,
  • elementary_PID : 13 bits,
  • reserved : 4 bits
  • ES_info_length : 12 bits,
  • CRC32 : 32 bits



1 則留言:

  1. TS 的長度是固定的, 每個 TS Packet 都是 188 Bytes.

    而"第一個" Bytes 為同步字元(0x47)

    回覆刪除