トップページ > MPEG-TS  > 手動でMPEG-TSからPCRを抜き出す



手動でMPEG-TSからPCRを抜き出す

ts2someにも書きましたが、MPEG-TSからPCRと動画PIDと音声PIDを抜き出す目処が立ってきました。といっても、MPEG-TSを完全に理解したわけではないので、実装までにはまだ暫くかかりそうです。

あるMPEG-TSファイルのPMTブロックのTSヘッダー以降を抜き出すと、次のようなバイナリーが得られます(AAC音声記述部分以降は省略)

00000010101100000111110001101100
00111001110101010000000000000000
11100001000000001111000000001100
00001001000001000000000000000101
11100001000000011100000100000001
10000100110111100000000111101111
00000010111000010001000111110000
00000110010100100000000100000000
11001000000000010100011100001111
11100001000100101111000000000011

で、色んな資料や解析ツールを参照して、手動で分解していくと次の結果が得られて、見事にPCRとMPEG-2のPIDとAACのPIDが抜き出せました。分かりやすいようにブロック毎に段落をつけています。

00000010
1
0
11
000001111100
0110110000111001:Program_Number:0x6C39
11
01010
1
00000000
00000000
111
0000100000000:PCR_PID:0x0100
1111
000000001100
00001001
00000100
0000000000000101
111
0000100000001
11000001
00000001
10000100
11011110
00000001
11101111
00000010:Stream_Type:0x02:MPEG2 VIDEO
111
0000100010001:Elementary_PID:0x0111
1111
000000000110
01010010
00000001
00000000
11001000
00000001
01000111
00001111:Stream_Type:0x0F:MPEG2 AAC
111
0000100010010:Elementary_PID:0x0112
1111
000000000011

後はこれをPerlのプログラムに落とし込んで行けばOKのはずですが、MPEG-TSによってはPMTの値をうまく抜け出せないことがあり、色々と試行錯誤が必要のようです。

何のこっちゃと言われそうですが、ようはPerlでMPEG-TSそのものを解析して、自動でDGIndexから確実にMPEGとAACを吐き出させる(Demux)目処が立ちそうということです。(PerlがDemuxするわけではないです・・・)

Program_Info_Lengthは1ビット単位ではなくて、8ビット単位を一つと数えるとは気づかず、ここで足踏みしてしまいました。

年内には何とかしたいな・・・。



トラックバック

このエントリーのトラックバックURL:
http://darusuna.sakura.ne.jp/mt/mt-tb.cgi/5221

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Blu-rayドライブ (Amazon)






DLNA/DTCP-IPクライアント

ロケフリ HD



Amazonベストセラー






Powered by
Movable Type 3.34