ffmpeg對ts流的解析
阿新 • • 發佈:2019-01-10
下面我們來分析,在ISO/IEC 13818-1裡有說明,PAT(Program Association Table)的PID值為0x00,TS包的標識(即sync_byte)為0x47,並且為了確保這個TS包裡的資料有效,所以我們一開始查詢47
40 00這三組16進位制數,為什麼這樣?具體的奧祕在TS包的結構上,前面已經說了sync_byte固定為0x47。現在往下看transport_error_indicator、payload_unit_start_indicator、transport_priority和PID這四個元素,PID為0x00,這是PAT的標識。transport_error_indicator 為0,transport_priority為0。把他們看成是兩組8位16進位制數就是:40
00。現在看看我們的TS流片斷例子,看來正好是47 40 00開頭的,一個TS流的頭部佔據了4個位元組。剩下的負載部分的內容由PID來決定,例子看來就是一個PAT表。在這裡有個地方需要注意一下,payload_unit_start_indicator為1時,在前4個位元組之後會有一個調整位元組,它的數值決定了負載內容的具體開始位置。現在看例子中的資料47
40 00 17 00第五個位元組是00,說明緊跟著00之後就是具體的負載內容。