MPEG2 TSの仕様について調べた(3)

前回特定したPMTの内容について。


取り合えず前回の結果以下のような感じにデータを出してみた。

SecSize:152 ID:dc30 VER:20 NEXT:1 SECN:0 LSECN:0
PCR_PID:0100 PI_LEN:12 DSCF[TAG:09 DSC_LEN:4 CAS_ID:0005 CA_PID:0060 PF<c1,01,84,de,01,ef,>]
Data[SF_ID:02 E_PID:0111 ESI_LEN:6 DSCF<52,01,00,c8,01,47,>]
Data[SF_ID:0f E_PID:0112 ESI_LEN:3 DSCF<52,01,10,>]
Data[SF_ID:06 E_PID:0114 ESI_LEN:8 DSCF<52,01,30,fd,03,00,08,3d,>]
Data[SF_ID:0d E_PID:0810 ESI_LEN:15 DSCF<52,01,40,fd,0a,00,0c,33,3f,00,03,00,00,ff,bf,>]
Data[SF_ID:0d E_PID:0811 ESI_LEN:10 DSCF<52,01,50,fd,05,00,0c,1f,ff,bf,>]
Data[SF_ID:0d E_PID:081a ESI_LEN:10 DSCF<52,01,5e,fd,05,00,0c,1f,ff,bf,>]
Data[SF_ID:0d E_PID:081f ESI_LEN:10 DSCF<52,01,5f,fd,05,00,0c,1f,ff,bf,>]
Data[SF_ID:0d E_PID:0816 ESI_LEN:10 DSCF<52,01,60,fd,05,00,0c,1f,ff,bf,>]
Data[SF_ID:0d E_PID:081b ESI_LEN:10 DSCF<52,01,6e,fd,05,00,0c,1f,ff,bf,>]
CRC:ab4a4b27

よってPATから指定されているPMTからPCRのPID:0x0100、限定受信PID:0x0060、繰り返しの部分からPIDが9個指定されているのが分かる。それぞれストリーム形式が0x02、0x0f、0x06、0x0dと指定されている。このストリーム形式とは何だろうと調べてみる。するとそれぞれ値が決められていて0x02は映像ストリーム、0x0fが音声ストリーム(ADTSトランスポート構造)、0x06がプライベートデータを格納したPESパケット、0x0dがISO/IEC 13818-6(タイプD)となっていた。0x0dは取り合えず置いておくとして、これでPMTから映像と音声のPIDが参照できることが分かった。
またそれぞれの記述子領域を見てみると、先頭から1バイトずつ「記述子タグ」「記述子長」「コンポーネントタグ」と規定されているようだが最後のタグの長さが違うのはなぜだ。
記述子タグは全て0x52で、これはストリーム識別記述子あることを示している。
記述子長は0x01 = 1であるが、これはその次のコンポーネントタグが1バイトと規定されているためだと思われる。
それでコンポーネントタグだが、これでその映像や音声がどの形式で格納されているかの情報を伝えているようだが、いまいちよく分からない。音声については0x10でこれがコンポーネントタグとして「音声2/0/0-3/2/2-0.1モード(マルチチャンネルステレオ音声モード表記法らしい)」を示してることは情報として探すことが出来た。音声のモードが指定されているのだから、映像についてもこの部分で解像度やMPEG2ですよとかそういうことが分かるようになっているはずなのだが。まあ詳細についてはおいおい調べておくことにしてまずは先に進むことにする。

まずは映像についてだが、データ自体は多分映像PIDに指定されているパケットのペイロードを連結すればいいんだろうけどMPEG2の技術自体を理解していないと意味が無い。ここを読んで頑張っていこうと思う。

0 コメント:

コメントを投稿