Android多媒體軟件開發入門(二)

PART 1

ES(Elementary Streams,原始流)是直接從編碼器出來的數據流。ES流經過PES打包器之後,被轉換成PES(Packetized Elementary Streams,分組的ES))包。ES是隻包含一種內容的數據流,如只含視頻或只含音頻等,打包之後的PES也是隻含一種性質的ES,如只含視頻ES的PES或只含音頻ES的PES等。每個ES都由若干個存取單元(AU)組成,每個視頻AU或音頻AU都是由頭部和編碼數據兩部分組成,1個AU相當於編碼的1幅視頻圖像或1個音頻幀。PES分組,是用來傳遞ES的一種數據結構。PES流的基本單位是PES包。PES包由包頭和Payload組成。

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

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

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

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

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

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

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

TS流文件,是一種DVD的文件格式,TS格式的特點就是要求從視頻流的任一片段開始都是可以獨立解碼的,這種特性就決定了TS流文件主要用來實時傳送的節目,比如實時廣播的電視節目。PS主要應用於存儲的具有固定時長的節目,如DVD電影,將DVD上的VOB文件的前面一截剪掉(或者乾脆就是數據損壞),那麼就會導致整個文件無法解碼。

TS流主要由header payload 組成,其中header 部分相對來說比較簡單一些,payload部分成分比較複雜,其中payload 可以是PSI(其中包括PAT , PMT),可以是PES(從攝像頭採集的數據經過壓縮算法後的數據被成爲ES , 一般是在一幀的ES數據前加上點頭信息,其中最主要的是PTSDTS信息,就形成了PES),可以是一些自適應數據(每一包TS碼流長度是固定的188字節,視頻數據不夠188個字節,使用0xFF填充)

PAT表(Program Association Table,節目關聯表)

PAT表主要包含頻道號碼和每一個頻道對應的PMTPID號碼,這些信息我們在處理PAT表格的時候會保存起來,以後會使用到這些數據。

PMT表(Program Map Table,節目映射表)

PMT表中包含的數據如下:

(1) 當前頻道中包含的所有Video數據的PID

(2) 當前頻道中包含的所有Audio數據的PID

(3) 和當前頻道關聯在一起的其他數據的PID(如數字廣播,數據通訊等使用的PID)

參考資料:關於ES、PES、PS以及TS碼流 http://www.360doc.com/content/13/0829/15/13084517_310733557.shtml

PART 2

微碼簡介:

微碼是控制硬件decoder的程序,AMRISC指令的彙編語言,只能處理ES數據(RM除外)。

視頻播放器播放一個互聯網上的視頻文件,需要經過以下幾個步驟:解協議,解封裝,解碼視音頻,視音頻同步。解協議的作用,就是將流媒體協議的數據,解析爲標準的相應的封裝格式數據。視音頻在網絡上傳播的時候,常常採用各種流媒體協議,例如HTTP,RTMP,或是MMS等等。這些協議在傳輸視音頻數據的同時,也會傳輸一些信令數據。這些信令數據包括對播放的控制(播放,暫停,停止),或者對網絡狀態的描述等。解協議的過程中會去除掉信令數據而只保留視音頻數據。解封裝的作用,就是將輸入的封裝格式的數據,分離成爲音頻流壓縮編碼數據和視頻流壓縮編碼數據。解碼的作用,就是將視頻/音頻壓縮編碼數據,解碼成爲非壓縮的視頻/音頻原始數據。解碼是整個系統中最重要也是最複雜的一個環節。通過解碼,壓縮編碼的視頻數據輸出成爲非壓縮的顏色數據,例如YUV420P,RGB等等;壓縮編碼的音頻數據輸出成爲非壓縮的音頻抽樣數據,例如PCM數據。

PART 3

H.265旨在在有限帶寬下傳輸更高質量的網絡視頻, H.265標準也同時支持4K(4096×2160)和8K(8192×4320)超高清視頻。

傳輸碼率:H.263可以2~4Mbps的傳輸速度實現標準清晰度廣播級數字電視(符合CCIR601、CCIR656標準要求的720*576);而H.264由於算法優化,可以低於2Mbps的速度實現標清數字圖像傳送;H.265 High Profile可實現低於1.5Mbps的傳輸帶寬下,實現1080p全高清視頻傳輸。

CVBS 複合視頻廣播信號(消隱和同步)是一種較老的顯示方式,即第一代視頻顯示輸出方式。(第二代是S-VIDEO,第三代是VGA,第四代是DVI,第五代是HDMI)

HDMI是一種高清數字接口標準,它可以提供很高的帶寬,無損地傳輸數字視頻和音頻信號。HDCP(High-bandwidth Digital Content Protection,高帶寬數碼內容保護)用於保護HDMI或者DVI傳輸的高清晰信號不會被非法錄製。HDCP技術規範由Intel領頭完成。支持HDCP保護技術的播放設備或是顯示設備上,均會擁有一個獨一無二的HDCP密鑰-HDCP KEY(Secret Device Keys),它使用40組56bit的數組密碼組成,主要放在芯片製造商的芯片之中,而且每一個擁有HDCP芯片的設備,還會擁有一組私鑰(Device Private Key),而這組私鑰將會組成KSV(Key Selection Vector),KSV相當於這臺芯片設備的序號。

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