PID
Packet Identifier / ピーアイディー
TSのパケット1つ1つに付いている13ビットの番号で、そのパケットが映像か音声か字幕か制御情報かを区別します。受信機はPIDを手がかりに必要なパケットだけを拾い、残りを読み飛ばします。
- 正式名称
- Packet Identifier(パケット識別子)
- 規格
- ISO/IEC 13818-1(ITU-T H.222.0)
- ビット数
- 13ビット。0x0000〜0x1FFFの8192通り
- 位置
- 188バイトのTSパケットの先頭4バイトのヘッダーの中
- MPEG-2で決まっているPID
- PAT 0x0000、CAT 0x0001、TSDT 0x0002、ヌルパケット 0x1FFF
- 日本のSIの主なPID
- NIT 0x0010、SDT 0x0011、EIT 0x0012、TDT・TOT 0x0014
- 映像・音声のPID
- 固定されていない。番組ごとにPMTが示す
- 地上デジタル放送のEIT
- 0x0012に加えて0x0026と0x0027も使う(ARIB STD-B10)
TS解析ツールの画面に 0x0100 0x0110 0x1FFF といった番号が並び、どれが何なのか分からないという状態から始まる人が多い部分です。PIDはTSのパケットに付いた通し番号で、番号そのものに意味はありません。意味を与えているのは、同じTSの中を流れているPATとPMTという表です。
PIDが使われる場面
放送局の送出では、多重化装置に番組ごとの映像、音声、字幕、データ放送を入れるときに、それぞれへ流すPIDを設定します。チャンネルごとにPIDの割り当て表を決めておき、設備を更新しても同じ番号を使い続ける運用が一般的です。
受信機の側では、選局のたびにPIDが使われます。テレビはPSI/SIの表からそのチャンネルの映像と音声のPIDを取り出し、そのPIDのパケットだけをデコーダーへ渡します。複数の番組が同居するMPTSから1チャンネルだけを再生できるのは、この選び分けのおかげです。
検証や監視の現場では、PIDは調査の入口になります。TSDuckのようなTS解析ツールは、PIDごとのパケット数とビットレートを一覧にできるので、字幕のPIDにパケットが流れているか、データ放送のPIDが想定の帯域を超えていないかをここで確かめます。ffprobeでも、ストリームの一覧にPIDが16進数で表示されます。
PIDの仕組みと決まっている番号
PIDは13ビットなので、1本のTSの中で使える番号は8192通りです。このうち一部はMPEG-2 Systemsが用途を決めています。0x0000はPAT、0x0001はCAT、0x1FFFはヌルパケットで、ヌルパケットは中身が無く、全体のビットレートを一定に保つための詰め物として流れます。
チャンネル名や番組表を運ぶSIの表のPIDは、MPEG-2 Systemsではなく放送方式ごとの規格で決まります。日本のデジタル放送では、SDTが0x0011、EITが0x0012といった割り当てです。地上デジタル放送のEITは1つのPIDに収まらず、0x0012、0x0026、0x0027の3つが使われます。この割り当てはARIB STD-B10の表に載っています。地上デジタル放送の運用そのものはARIB TR-B14にまとめられています。
映像と音声のPIDは、どの番号を使うかが規格で決まっていません。番組ごとのPMTが「この番組の映像は0x0100、音声は0x0110」と示し、受信機はそれに従います。同じ局でもチャンネルごとに番号が違うのは、このためです。
多重化のときPIDはどう決まるか
多重化装置では、入力してくるストリームごとにPIDを割り当てます。決め方は放送事業者の設計次第ですが、番組番号と対応づけて、映像を0x0100番台、音声を0x0110番台、字幕をさらに別の番台に置くように、番台で用途を分ける組み方がよく使われます。後から番組を増やしたり字幕を足したりしても番号がぶつからないようにするためです。
別々に作られたストリームを1本にまとめるときは、PIDの重複が起きます。この場合は多重化装置がPIDを付け替え、それに合わせてPATとPMTを作り直します。既存のTSに番組を足す再多重の装置も、同じ処理を行います。
PIDで間違えやすい点
PIDから中身の種類は分かりません。0x0100が映像だと決まっているわけではないので、PMTを読まずに番号だけで判断する処理を書くと、別の局のTSで壊れます。
もう1つ多いのが、PIDだけでパケットを抜き出してファイルにする切り出しです。映像と音声のパケットは揃っても、PATとPMTが欠けていれば再生できません。切り出しでは制御情報のPIDも一緒に残すか、表を作り直す必要があります。
よくある質問
PIDは何ビットですか
13ビットで、0x0000から0x1FFFまでの8192通りです。TSパケットの先頭4バイトのヘッダーの中に入っています。
PID 0x1FFFは何のパケットですか
ヌルパケットです。中身のデータは無く、TS全体のビットレートを決まった値に保つために挿入されます。伝送路の容量に余りがあるとき、その分がヌルパケットで埋まります。
TSファイルのPIDを調べる方法はありますか
TSDuckのようなTS解析ツールなら、PIDごとのパケット数とビットレートを一覧で出せます。ffprobeでもストリームの一覧にPIDが表示され、どのPIDがどのコーデックの映像や音声かを確かめられます。
似ている形式との違い
| 名前 | 主に使う場面 | PIDとの違い |
|---|---|---|
| PMT | 番組の中身の案内 | どのPIDが映像でどれが音声かを書いた表。PIDは番号そのもので、PMTはその番号の意味を教える表 |
| program_number | 番組の識別 | 番組を指す番号で、PIDとは別の体系。PATがこの2つを対応づける |
| PCR | 時刻の基準 | 時刻の値そのもの。どのPIDのパケットにPCRを入れるかはPMTのPCR_PIDが示す |
関連する用語
最終更新