通称「MPEG-2 TS」、「TS」は、「ISO/IEC 13818-1」または「ITU-T H.222.0」として規格化されている多重化方式です。
多重化方式とは、平たく言えば、ビデオやオーディオをまとめる方法のことです。
解析
TSストリーム
TSストリームは、「TSパケット」と呼ばれる 188バイトずつのデータで構成されます。
【TS Stream】 =【TS Packet】+【TS Packet】+・・・【TS Packet】
つまり、何の欠損もなければ、TS のファイルサイズは188の倍数バイトになるわけです。
ただし、TSパケットに情報を付加して、192バイトや、204バイトのパケットにする別規定もあります。
TSパケット
TSパケット(transport_packet)の構造は次の通りです。
名称 | ビット数 | 概要 |
---|---|---|
TSパケットヘッダー | 32 | ヘッダー |
アダプテーションフィールド | 可変長 | ストリームを紐解くのに使用する追加情報。ないこともある。 |
ペイロード | 可変長 | ビデオやオーディオのデータそのもの。 |
TSパケットヘッダー
TSパケットヘッダーは4バイト(32ビット)で、内容は下記の通りです。
名称 | ビット数 | 概要 |
---|---|---|
sync_byte | 8 | 必ず 0x47 となる。0x47 でない場合、伝送エラー等が発生している。 |
transport_error_indicator | 1 | |
payload_unit_start_indicator | 1 | |
transport_priority | 1 | |
PID | 13 | Packet ID。パケット識別子。パケットの種類(ビデオなのかオーディオなのか)などを区別する。 |
transport_scrambling_control | 2 | |
adaptation_field_control | 2 | このTSパケットに含まれるデータの種別。00は予約で、01でペイロードのみを含み、10でアダプテーションフィールドのみを含み、11でアダプテーションフィールドとペイロードが含まれることを示す。 |
continuity_counter | 4 | 巡回カウンター。ストリームの先頭のパケットから0,1,2,3,・・・,15,0,1,2,・・・となる。伝送中に欠損が発生した場合、巡回カウンターが連続にならないので、パケットロスを検知できる。ただし、常に0となる場合もある。adaptation_field_controlの値によっては増えない。 |
※H.222.0-2006 2.4.3.2 "Transport Stream packet layer" を参考のこと
アダプテーションフィールド
アダプテーションフィールドの内容は結構複雑で、様々なフラグで情報を持っていたり持っていなかったりします。中でも重要な情報は、PCR(Program Clock Reference)で、27MHzの値で記録されています。
TSペイロード
TSペイロードには、ビデオやオーディオの実データが入っています。
しかし、1つのTSパケットは188バイトで、TSパケットヘッダーを取り除いた部分は最大でも184バイトしかありません。
ということで、ほとんどのデータは収まらないので、PIDが同じTSパケットのペイロードをつなぎ、
そのつないだものが実データということになります。
ただし、この実データは「PES」と呼ばれる構成をしています。
PES
PES は Packetized Elementary Stream の略で、TS に格納されたビデオやオーディオなどの要素ストリームを指します。PES は概念的なもので、実際のデータ構造は「PESパケット」と呼びます。
PESパケットは次のようなデータ構造を持ちます。
【PES Packet】 =【PES Header】+【PES Payload】+・・・+【PES Header】+【PES Payload】
PESヘッダー
規格書の「Table 2-21 – PES packet」を参照のこと。
PESペイロード
PID
Packet IDは、TSパケットの種類を区別するための13bitの情報です。
値域は [0x0000, 0x1FFF] です。
いくつか予約されているものと、自由に設定できるものがあります。
定義済みPID
PID | 名前 | 概要 |
0x0000 | PAT, Program Association Table | 後述のPMT、NITを定義する |
0x0001 | 限定アクセステーブル | |
0x0002 | トランスポートストリームディスクリプションテーブル | |
0x0003 | IPMP制御情報テーブル | |
0x0004 ~ 0x000F | 予約 | |
0x0010 ~ 0x1FFE | network_PID, Program_map_PID, elementary_PID, その他 | |
0x1FFF | ヌルパケット |
別規定
FEC
- Forward Error Correction
Timestamped TS
ARIB