封裝格式--4:PS格式詳解

“本文轉載自:[jimte_pro]的網(wǎng)絡流媒體--PS封裝格式

本文相關系列:

1.PS格式概述

  • MPEG2-PS:一種多路復用數(shù)字音視頻等的封裝容器。PS是Program Stream(程序流或節(jié)目流)的簡稱。程序流將一個或多個分組但有共同的時間基準的基本數(shù)據(jù)流(PES)合并成一個整體流。它是為可靠穩(wěn)定的儲存媒介如光盤而設計的。

  • ES:Elementary Stream(基本碼流),是由編碼器輸出的原始基礎碼流,它只含有解碼器所必需的、并與原始圖象或原始音頻相接近的信息。由由壓縮器輸出的用于傳送 單路視音頻信號的原始碼流。ES只包含一種內(nèi)容的數(shù)據(jù)流,如只含視頻或只含音頻等。

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

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

2.PS流基本封裝格式

??PS用到的基本術語如下:

  • PSH:Program Stream pack Header ,是PS包的包頭;

  • PS system header:Partial system header,系統(tǒng)頭;

  • PSM:Program Stream Map,節(jié)目流映射( PSM)提供節(jié)目流中基本流的描述及其相互關系。當在傳輸流中承載時,此結構將不修正。當 stream_id 值為 0xBC 時, PSM 作為 PES 包存在。

  • PES Header:PES Packetized Elementary Streams,PES流的基本單位是PES包。PES包由包頭和payload組成。

  • PS封裝結構:

ps_1.PNG

??一般來說一個完整的PS包封裝格式如下所示:

  • 視頻關鍵幀的封裝:
ps_2.png
  • 視頻非關鍵幀的封裝:
ps_3.png

3.ps格式描述

3.1 PS header格式

ps_4.PNG

(1)開始的數(shù)據(jù):sync bytes

ps_5.PNG

(2)SCR數(shù)據(jù)

ps_6.png

(3)速率

ps_7.png

??PSH一般來說最少需要包含14個Byte,擴展長度根據(jù)stuffing lenght計算,最長為7個byte(stuffing lenght 只有3位長度),這些字段可以用于存放幀序號等參數(shù)。下圖為一段碼流的PS頭:

ps_8.png

3.2 Partial system headerg格式

ps_9.png

(1)開始數(shù)據(jù)

ps_10.png

(2)rate_bound

ps_11.png

(3)其他數(shù)據(jù)

ps_12.png
ps_13.png

下圖為一段碼流的系統(tǒng)頭:

ps_14.png

3.3 Program Stream Map

ps_15.png
ps_16.png

下圖為一段PS的map:

ps_17.png

3.4 PS PES Header

ps_18.png
ps_19.png

PES頭如下圖所示:

ps_20.png

4.參考資料

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容