MPEG-2 Systems とは ?
MPEG-2
MPEG-2 は, MPEG-1 を改良し, 放送用として十分と言える程度の高画質を目指して規格化されました. MPEG-2 は, DVD やデジタル BS 放送などのデータ形式として, 幅広く利用されています.
MPEG-2 Systems
MPEG-2 を多重化して, 伝送するための規格です. 用途別に, MPEG-2 PS (Program Stream) と MPEG-2 TS (Transport Stream) に分類されます.
ES
MPEG-2 Systems では, 符号化された画像や音声データを, ES (Elementary Stream) と呼びます. そして, MPEG-2 Systes におけるプログラムとは, たがいに同期関係のある映像や音声で, 1 つの時計で同期制御が可能な ES の集まりのことを指します.
PES
ES を適切なサイズに分割してパケット化したものを PES (Packetized Elementary Stream) と呼びます. PES パケットのヘッダは再生時刻の情報を含むことができるので, これによって, 映像と音声を同期して再生することが可能になります (詳細は, 多重信号の同期のセクションを参照).
MPEG-2 PS
単一のプログラム (同期した映像や音声など)をエラーの可能性が低い環境 (光ディスクや HDD など) であつかうことを想定した形式です, 複数の PES パケットを連結して, 先頭にパックヘッダを付与したものを pack と呼び、さらに複数の pack を連結したものがプログラムストリームとなります.
MPEG-2 TS
同時に 1 つ以上のプログラムを, エラーが発生しうる環境 (放送や通信など) であつかうことを想定したデータ形式です. デジタル放送や HLS など, ストリーミングプロトコルで利用されています. MPEG-2 TS は, 伝送を前提としているので, 伝送しやすい固定長で, かつ, 小さいパケットサイズとなっています.
MPEG-2 PS では, PES 複数個をまとめてパケット化するのに対して, MPEG-2 TS では, パケットサイズが小さいので, PES を分解してパケット化します. 具体的には, PES パケットを Transport Packet (TS packet) と呼ばれる 188 バイト固定長のパケットへ分割します. そして, この Transport Packet の連続が, トランスポートストリームとなります. そして, この分割処理によって, 多重化しています.
パケット長 | ペイロード | クロック | プログラム数 | 多重化 | |
---|---|---|---|---|---|
MPEG-2 PS パック | 可変長 | PES | 時刻の修正 ストリームに同期 |
単一プログラム | オーディオ 最大 33 ビデオ 最大 17 |
MPEG-2 TS パケット | 固定長 (188 bytes) |
PES セクション |
ストリームに同期 | マルチプログラム | 特になし |
同期ワード
Transport Packet のヘッダの先頭バイトは, 必ず 0x47 (sync_byte
) になっています. 受信側は, この値があるデータ位置を Transport Packet の先頭として処理します. これによって, 伝送路上でエラーが発生して, 受信側が一時的にパケットの先頭を見失ったとしても 188 バイトごとの sync_byte
を検出して, 同期しなおすことで比較的早期に同期を回復することができます.
PID
それぞれの Transport Packet には, PID (Packet Identifier) と呼ばれる 13 ビットの情報が含まれます. Transport Packet が何を伝送しているのかを表す識別子です. 同一の画像・音声は, それぞれ同じ PID をもつので, Transport Stream を受信した側はそれを利用して, 元の PES(ES)に戻すことができます.
巡回カウンター
MPEG-2 TS はエラーが発生しうる環境であつかうことを想定しているのでエラー検出が必要になります. Transport Packet ヘッダには, 同じ PID の Transport Packet を受信するたびに値が 1 ずつ増加する continuity_counter
という 4 ビットのカウンタがあります. つまり, 受信側でこのカウンタの不連続を検出することで, Transport Packet のロスを検出可能しています.
多重信号の同期
PCR
MPEG-2 TS では, デジタル放送やストリーミングプロトコルで利用されるので, 送信側と受信側の同期をとる必要があります. 基準となるクロックは, 42 ビットで, STC (System Time Clock) と呼ばれています. STC の同期は,約 27 h で, STC の校正データを伝送することによって同期をとることができます. そして, この校正データを PCR (Program Clock Reference) と呼びます.
PTS
同期をとることができたら, 映像や音声といったコンポーネントどうしの同期をとる必要があります. STC を基準にして, 表示する時刻を付加します. この時刻を PTS (Presentation Time Stamp) と呼びます. デコードする時刻を付加することもあります. この時刻を DTS (Decoding Time Stamp) と呼びます.