關於ES、PES、PS以及TS碼流

原文鏈接:http://www.360doc.com/content/13/0829/15/13084517_310733557.shtml

一、基本概念

1)ES  

   ES--Elementary  Streams  (原始流)是直接從編碼器出來的數據流,可以是編碼過的視頻數據流(H.264,MJPEG等),音頻數據流(AAC),或其他編碼數據流的統稱。ES流經過PES打包器之後,被轉換成PES包。

    ES是只包含一種內容的數據流,如只含視頻或只含音頻等,打包之後的PES也是隻含一種性質的ES,如只含視頻ES的PES,只含音頻ES的PES等。每個ES都由若干個存取單元(AU)組成,每個視頻AU或音頻AU都是由頭部和編碼數據兩部分組成,1個AU相當於編碼的1幅視頻圖像或1個音頻幀,也可以說,每個AU實際上是編碼數據流的顯示單元,即相當於解碼的1幅視頻圖像或1個音頻幀的取樣。

2)PES

    PES--Packetized  Elementary Streams  (分組的ES),ES形成的分組稱爲PES分組,是用來傳遞ES的一種數據結構。PES流是ES流經過PES打包器處理後形成的數據流,在這個過程中完成了將ES流分組、打包、加入包頭信息等操作(對ES流的第一次打包)。PES流的基本單位是PES包。PES包由包頭和payload組成。

3)PTS、DTS

   PTS--PresentationTime Stamp(顯示時間標記)表示顯示單元出現在系統目標解碼器(H.264、MJPEG等)的時間。

   DTS--Decoding Time Stamp(解碼時間標記)表示將存取單元全部字節從解碼緩存器移走的時間。

   PTS/DTS是打在PES包的包頭裏面的,這兩個參數是解決音視頻同步顯示,防止解碼器輸入緩存上溢或下溢的關鍵。每一個I(關鍵幀)、P(預測幀)、B(雙向預測 幀)幀的包頭都有一個PTS和DTS,但PTS與DTS對於B幀不一樣,無需標出B幀的DTS,對於I幀和P幀,顯示前一定要存儲於視頻解碼器的重新排序緩存器中,經過延遲(重新排序)後再顯示,所以一定要分別標明PTS和DTS。

4)PS

   PS--Program Stream(節目流)PS流由PS包組成,而一個PS包又由若干個PES包組成(到這裏,ES經過了兩層的封裝)。PS包的包頭中包含了同步信息與時鐘恢復信息。一個PS包最多可包含具有同一時鐘基準的16個視頻PES包和32個音頻PES包。

5)TS

    TS--Transport Stream(傳輸流)由定長的TS包組成(188字節),而TS包是對PES包的一個重新封裝(到這裏,ES也經過了兩層的封裝)。PES包的包頭信息依然存在於TS包中。

    TS流與PS流的區別在於TS流的包結構是固定長度的,而PS流的包結構是可變長度的。PS包由於長度是變化的,一旦丟失某一PS包的同步信息,接收機就會進入失步狀態,從而導致嚴重的信息丟失事件。而TS碼流由於採用了固定長度的包結構,當傳輸誤碼破壞了某一TS包的同步信息時,接收機可在固定的位置檢測它後面包中的同步信息,從而恢復同步,避免了信息丟失。因此在信道環境較爲惡劣、傳輸誤碼較高時一般採用TS碼流,而在信環境較好、傳輸誤碼較低時一般採用PS碼流。

6)TS單一碼流、混合碼流

  單一性:TS流的基本組成單位是長度爲188字節的TS包。

  混合性: TS流由多種數據組合而成,一個TS包中的數據可以是視頻數據,音頻數據,填充數據,PSI/SI表格數據等(唯一的PID對應)。

二、基本流程

1)A/D轉換後,通過MPEG-2壓縮編碼得到的ES基本流。這個數據流很大,並且只是I,P,B的這些視頻幀或音頻取樣信息。

2)通過PES打包器,打包並在每個幀中插入 PTS/DTS標誌,變成PES。原來是流的格式,現在成了數據包的分割形式。

3)PES根據需要打包成PS或TS包進行存儲(DVD)或傳輸(DVB)。因每路音/視頻只包含一路的編碼數據流,所以每路PES也只包含相應的數據流。

 

附:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章