轉自http://blog.csdn.net/rootusers/article/details/42970859
MPEG2的三類幀
PES包的結構:(PES是Packetized Elementary Stream的簡稱,是將原始ES流打包後形成的,)
MPEG-2傳送流系統層
爲了實現解碼同步,在PES中插入PTS和DTS以及相關的系列標誌符。
由圖可以看出,TS由4B的包頭,可變長度的調整頭和負載構成。包頭由同步字節,1b傳送數據包差錯指示,1b淨荷單元起始指示,1b傳送優先權,13b的包標識符PID,2b傳送加擾控制,2b調整字段控制和4b連續計數器組成。
淨荷起始指示表示打包的原始流PES數據包字頭或包含與節目有關的PES信息的起始端,是否出現在該TS包的淨荷中。
調整字段控制表示在在包頭後面是否有調整端和或淨荷。
連續計數器中的數值對於具有相同PID值的淨荷而言,從0-15連續循環,用來在解碼端檢測是否有丟失的TS包。
除了各節目的各個傳送流外,還應有節目專用信息PSI,PSI數據由固定字長的整體字頭和可變字長的節目清單表PAT或單節目映射表PMT以及4b的CRC組成。
MPEG-2傳送流包語法結構
TS包中負載傳送的信息主要有4種類型:
1.視頻和音頻的PES包以及輔助數據。
2.描述單路節目的節目映射表(PMT)與描述多路節目複用信息的節目關聯表(PAT)以及對CA系統所要求的條件訪問表(CAT)。
3.各種業務信息表。
4.DVB數據廣播信息,包括數據管道,異步數據報,同步,被同步數據流,多協議封裝,循環數據,循環對象。
MPEG-TS包頭語法結構:
·sync_byte:1B 值爲0x47。
·payload_unit_start_indicator:1b長度。
當TS包帶有PES包數據時,payload_unit_start_indicator值爲1時,表示TS包的負載以PES包的第一個字節開始,值爲0,表示TS包開始的不是PES包。
當TS包帶有PSI數據時,payload_unit_start_indicator值爲1時,表示TS包帶有PSI部分的第一個字節,即第一個字節帶有指針pointer_field;置爲0,表示TS包不帶有一個PSI部分的第一個字節,即在有效淨荷中沒有指針的pointer_field.
空包payload_unit_start_indicator應置爲0.
·PID:13b。表示淨荷的數據類型。PID=0x0000,表示淨荷的數據位節目關聯表。
PID取值分配:
MPEG-2 TS包調整字段:
調整字段是一個可邊長的域,它是由存在於TS包頭中的調整字段控制值來標識的。