參考:
從上往下解釋:
一段es流=n幀(就是第2行中的資料)
1幀 = 1 pes_payload
1pes = 1pes包頭 + 1 pes_payload
第四行解釋
從pes方面理解:
1pes 切成n段,每段組成乙個ts包的負載。
從ts方面理解:
1段ts流的草綠色部分+白色部分 = pes
最開始的ts包由 ts包頭(圖中有t標誌的) + pes 包頭(草綠色) + pes_payload(白色) 組成
最末尾的ts包由 ts包頭(圖中有t標誌的) + 自適應字段(橙色)+ pes_payload(白色) 組成
以上兩種ts包很簡單,在中間的ts包有點複雜,經過血的教訓,發現其由3種包組成,出現位置隨機,每種出現的概率不相同,如下:
第一種 ts包頭(圖中有t標誌的) + 自適應字段(橙色)+ pes_payload(白色),出現概率 1%
第二種 ts包頭(圖中有t標誌的) + 自適應字段(橙色)出現概率 0.1%
第三種 ts包頭(圖中有t標誌的) + pes_payload(白色)出現概率 98.9%
參考:連續碼流.
pes流(packet elementary stream):也叫打包的基本碼流, 是將基本的碼流es流根據需要分成長度不等的資料報, 並加上包頭就形成了打包的基本碼流pes流.
ts流(transport stream):也叫傳輸流,
每個es流會有不同的pid標示. 而又為了可以分析這些es流, ts有一些固定的pid用來間隔傳送program和es流資訊的**:
pat和pmt表.
ps是節目流編碼器出來的是ts流,傳輸介面為asi口,編碼器整個作用過程是把模擬訊號變成es,再打包成pes,再打包成ts流輸出。
復用器是把多路單節目或多節目ts流合稱1路多節目ts流,再給調製器。
數字衛星接收機出來的是ts流,也是asi介面,可能包含一路或多路節目,有的還同時有一路模擬訊號視音訊輸出。
模擬衛星接收機出來的是模擬視音訊訊號。,ps流與ts流的區別在於,ps流的包結構是可變長度的,而ts流的包結構是固定長度的.
ts流的解碼過程-es-pes-dts-pts-pcr
ts 流解碼過程:
1. 獲取ts中的pat
2. 獲取ts中的pmt
filter 後得到的ts資料報中的payload 資料就是 one piece of pes,在ts header中有一些關於此
payload屬於哪個 pes的 第多少個資料報。
因此軟體中應該將此payload中的資料copy到pes的buffer中,用於拼接乙個pes包。
6. 拼接好的pes包的包頭會有 pts,dts資訊,去掉pes的header就是 es。
8. i,b,b,p 資訊是在es中的。
在 pes 層,主要是在 pes
vbv ( video buffer verifier ),用以防止解碼器的緩衝器出現上溢或下溢;在 pes 層,主要是在 pes
頭資訊裡出現的顯示時間標籤 pts ( presentation time stamp )和解碼時間標籤 dts ( decoding time
stamp );在 ts 層中, ts 頭資訊包含了節目時鐘參考 pcr ( program clock reference
),用於恢復出與編碼端一致的系統時序時鐘 stc ( system time clock )。
基本流程如下:首先 mpeg-2
壓縮編碼得到的 es 基本流,這個資料流很大,並且只是 i , p , b
,通過打包並在每個幀中插入 pts/dts 標誌,變成 pes 。在插入 pts/dts 標誌時,由於在 b 幀 pts 和 dts
相等,所以無須在 b 幀多插入 dts 。而對於 i 幀 和 p
dts 作為從新排序的依據。
包都有乙個包頭,用於定義 pes 內的資料內容,提供定時資料。每個 i 、 p 、 b幀的包頭都有乙個 pts 和 dts ,但 pts 與
dts 對 b 幀都是一樣的,無須標出 b 幀的 dts 。對 i 幀和 p
。例如,解碼器輸入的影象幀次序為 i1,p4,b2,b3,p7,b5,b6,i10,b8,b9 ,依解碼器輸出的幀次序,應該 p4 比 b2 、
b3 在先,但顯示時 p4 一定要比 b2 、 b3 在後,即 p4
。顯然, pts/dts
標誌表明對確定事件或確定資訊解碼的專用時標的存在,依靠專用時標解碼器,可知道該確定事件或確定資訊開始解碼或顯示的時刻。例如, pts/dts
標誌可用於確定編碼、多路復用、解碼、重建的時間。
pcr
pcr 是ts 裡面的,即ts packet 的 header 裡面可能會有,他用來指定所期望的該ts packet 到達 decoder 的時間,他的作用於scr 類似。
dts, pts
有時候 pes 包頭裡面也會有 dts , pts ,對於pts 來說,他代表了這個pes 包得 payload 裡面的第乙個完整地 audio access unit 或者 video access unit 的 pts 時間(並不是每個 audio/video access unit 都帶有 pts/dts ,因此,你可以在 pes 裡面指定乙個,作為開始)。
pes 包頭的dts 也是這個原理,需要注意的是:對於video 來說他的dts 和 pts 是可以不一樣的,因為 b 幀的存在使其順序可以倒置。而對於 audio 來說, audio 沒有雙向的**,他的 dts 和pts 可以看成是乙個順序的,因此可一直採用乙個,即可只採用pts。
H264 ES PS TS 流的區別
2015 03 07 17 43 5000人閱讀收藏 舉報 連續碼流.pes流 packet elementary stream 也叫打包的基本碼流,是將基本的碼流es流根據需要分成長度不等的資料報,並加上包頭就形成了打包的基本碼流pes流.ps是節目流編碼器出來的是ts流,傳輸介面為asi口,編碼...
H264 ES PS TS 流的區別
es流 elementary stream 連續碼流 pes流 packet elementary stream 也叫打包的基本碼流,是將基本的碼流es流根據需要分成長度不等的資料報,並加上包頭就形成了打包的基本碼流pes流.ps是節目流編碼器出來的是ts流,傳輸介面為asi口,編碼器整個作用過程是...
H264 ES PS TS 流的區別
es流 elementary stream 連續碼流 pes流 packet elementary stream 也叫打包的基本碼流,是將基本的碼流es流根據需要分成長度不等的資料報,並加上包頭就形成了打包的基本碼流pes流.ps是節目流編碼器出來的是ts流,傳輸介面為asi口,編碼器整個作用過程是...