系列文章:
1、音視頻之視頻壓縮技術及數字視頻綜述
2、音視頻之視頻壓縮編碼的基本原理
3、音視頻之H.264/AVC編碼器原理
4、音視頻之H.264的句法和語義
5、音視頻之H.264/AVC解碼器的原理和實現
6、音視頻之H.264視頻編碼傳輸及其在移動通信中的應用
7、音視頻之H.264的可伸縮編碼SVC
????????H.264采用分層模式,定義了視頻編碼層(VCL)和網絡提取層(NAL),后者專為網絡傳輸設計,能適應于不同網絡中的視頻傳輸,進一步提高網絡“親和性”。H.264引入了面向IP包的編碼機制,有利于網絡中的分組傳輸,支持網絡中視頻的流媒體傳輸。H.264具有較強的抗誤碼特性,特別適應丟包率高、干擾嚴重的無線視頻傳輸的要求。
一、H.264/AVC在無線通信中的傳輸:
? ? ? ? 1、H.264/AVC在無線通信中的應用:
????????根據傳輸速率、端到端時延以及時延抖動等QoS要求,H.264定義了3類視頻傳輸服務。
????????應用于視頻電話和視頻會議的包交換會話服務PCS:
????????編碼、傳輸和解碼實時雙向同時進行,最小化會話服務中的端到端時延,保持視頻和音頻的同步。編解碼器的參數能實時調整,錯誤恢復機制要根據實際網絡的變化而改變。在這種應用中,編碼、傳輸和解碼實時地雙向同時進行。
????????應用于直播和視頻錄像的包交換流媒體服務PSS:
????????傳輸和解碼同時進行,與實時編碼相比對時延要求降低,編碼器可以進行優化實現高效編碼。對于流媒體服務,用戶請求已經編碼好并存放在服務器的隊列。鑒于流媒體服務使用不可靠的傳輸協議,編碼時要進行差錯控制并進行信道糾錯編碼。
????????多媒體信息服務MMS:
????????編碼,傳輸和解碼三者完全分離。記錄的視頻信號進行離線編碼和本地存儲,可在任何時間進行發送,接受端在完全下載下來后才進行解碼。由于這種應用的非實時性,編碼器可以通過優化進行高效編碼,使用可靠的傳輸協議如FTP和HTTP,對時延和錯誤恢復機制沒有要求。
????????不同的視頻應用具有不同的QoS等級和工作方式,如圖8.1所示。
????????
? ? ? ? 2、H.264分層傳輸結構:
????????多媒體視頻在不同環境下的傳輸,不僅需要高效率的編碼,同時還需要編碼后的視頻能容易地無縫集成到當前和未來的網絡協議架構當中。鑒于H.263和MPEG-4標準制訂過程中面臨的網絡應用的相關問題,H.264在系統層面提出了一個全新的概念,定義了視頻編碼層VCL和網絡提取層NAL,如圖8.2所示。
????????VCL包括VCL編碼器與VCL解碼器,主要功能是采用運動補償、 變換編碼、熵編碼以及去方塊濾波等多種技術,進行視頻壓縮數據的高效組織和表示。與以往的編碼標準不同的是,它引入了一系列新特性,使得H.264的編碼壓縮效率得到了極大提升。H.264只明確地規定了解碼過程,給視頻捕捉、預處理、編碼等階段的具體實現方法留有了充分的余地。VCL也可根據當前的網絡情況調整編碼參數(如幀率 等)來適應網絡的變化。
????????NAL由NAL編碼器和NAL解碼器組成,主要功能是定義數據封裝的格式,為VCL提供與網絡無關的統一接口。數據承載在網絡提取層單元(NALU)中,NALU采用統一的數據格式,包含單個字節的包頭信息和多個字節的數據。包頭信息包含存儲標志和類型標志。存儲標志用于指示當前數據不屬于被參考的幀,從而便于服務器根據網絡的擁塞情況進行丟棄;類型標志用于指示圖像數據的類型。NAL支持眾多基于包的有線/無線通信網絡,諸如H.320、MPEG-2和RTP/IP等。
????????為了實現NAL適應不同類型的傳輸系統,傳輸層中需按照不同的傳輸協議,進一步封裝NAL單元。
????????3、H.264分組交換業務傳輸協議棧:
????????就移動通信中的視頻傳輸而言,除了高效的視頻壓縮,視頻數據傳輸如何適應無線信道和移動通信的特點,同樣也是一個非常關鍵的問題。
????????按照圖8.2所示,H.264視頻編碼層的數據被封裝成RTP包后,在IP網絡中進行傳輸。圖8.3和圖8.4分別給出了cdma2000系統和WCDMA系統中H.264的NAL單元封裝過程。值得注意的是,為了減少由于數據重傳而造成的延時,傳輸層采用了面向無連接的UDP。考慮到鏈路層以下的MAC層和物理層,具體系統大多不一樣,這里將其簡化。
????????從圖8.3可以看出,NAL單元首先被封裝成RTP/UDP/IP包。根據頭壓縮協議(ROHC,RObust Header Compression),RTP/UDP/IP包頭被壓縮,再加上PPP頭,成為一個無線鏈路協議層(RLC,Radio Link Control)業務數據單元(SDU,Service Data Unit)。RLC-PDU是數據 傳輸的處理單位。如果RLC-SDU比RLC-PDU大,SDU就會被分成若干PDU,因此同一NAL單元有可能會被分割成在不同幀中。RLP幀加上 RLP頭形成物理層的邏輯傳輸單元(LTU, Logical Transmission Unit)。
????????RLC有3種工作模式——透明、非確認和確認模式,為用戶和數據提供分段和重傳機制。其中,在透明和非確認模式下,RLC是單向的,對于出錯協議數據單元PDU,采用丟棄或標記的方法;在確認模式下, RLC是雙向的,使用自動重轉機制來確保數據的正確傳輸。
????????圖8.4與圖8.3的不同之處在于,在3GPP的UMTS系統中, RTP/UDP/IP包頭壓縮采用PDCP。另外,3GPP系統中移動臺采用分組數據協議(PDP,Packet Data Protocol),上下文通過網關支持節點 GGSN來得到IP地址,所以UMTS系統中無需PPP封裝。
二、H.264視頻編碼的容錯技術:
????????H.264/AVC視頻編碼標準采取了一系列的切合實際的技術措施,提高了網絡適應性,增強了數據的抗誤碼的魯棒性,從而保證視頻傳輸后的壓縮視頻的QoS。
????????與以往的視頻編碼標準不同的是,H.264/AVC標準從系統層面定義了視頻編碼層(VCL)和網絡提取層(NAL)。其中,視頻編碼層獨立于網絡,主要包括核心壓縮引擎和塊、宏塊、片的語法句法定義。 通過引入一系列新特性,不但使H.264的編碼壓縮效率提升了近1倍, 而且多種錯誤恢復工具又增強了視頻流的魯棒性。
????????網絡提取層的主要功能是定義數據的封裝格式,把VCL產生的比特字符串適配到各種各樣的網絡和多元環境中。H.264涉及片級別以上的語法定義,包括3方面的內容:
- 獨立片解碼所要求的數據表示,類似以往視頻壓縮標準中的圖像和頭部順序數據;
- 防止競爭的編碼;
- 附加的增強信息以及編碼片的比特字符串。
????????下面分別就VCL和NAL對于視頻傳輸的QoS進行分析。
????????H.264視頻編解碼標準中錯誤恢復技術的應用同其他視頻編解碼標準H.263、MPEG-2和MPEG-4一樣,也是通過多種技術的聯合應用來增強視頻流在誤碼、丟包多發環境(如因特網和無線信道)中傳輸的魯棒性。有些是專門為提高差錯魯棒性而采用的技術;有些主要是為提高編碼效率而提出的技術,但同時也為增強差錯控制性能做出了貢獻。
????????在H.261、H.263、MPEG-1、MPEG-2、MPEG-4中,許多錯誤恢復工具已經得到了很好的應用,如圖像分割的不同形式(片、塊組)、I 模式宏塊,片和圖像的內插、參考圖像選擇(帶有和不帶反饋,圖像級別,GOB/SLICE或MB級別)、數據分割等。
????????H.264標準繼承了以前視頻編碼標準中某些優秀的錯誤恢復工具, 同時也改進和創新了多種錯誤恢復工具。這里主要介紹的H.264的錯誤恢復工具有:參數集、靈活的宏塊排序FMO、冗余片RS、SP/SI幀。
? ? ? ? 1、H.264的視頻編碼層的錯誤恢復:
????????參數集:
????????參數集是H.264標準的一個新概念,是一種通過改進視頻碼流結構增強錯誤恢復能力的方法。H.264的參數集又分為序列參數集和圖像參 數集。其中,序列參數集包括一個圖像序列的所有信息,即兩個IDR圖像間的所有圖像信息。圖像參數集包括一個圖像的所有分片的全部相關信息,包括圖像類型、序列號等,解碼時某些序列號是否丟失可用來檢驗信息包的丟失與否。多個不同的序列和圖像參數集存儲在解碼器中,編碼器依據每個編碼分片的頭部的存儲位置來選擇適當的參數 集,圖像參數集本身也包括使用的序列參數集參考信息。
????????眾所周知,一些關鍵信息比特的丟失(如序列和圖像的頭信息) 會造成解碼的嚴重負面效應,而H.264把這些關鍵信息分離出來,憑借參數集的設計,確保在易出錯的環境中能正確地傳輸這些信息。這種碼流結構的設計無疑增強了碼流傳輸的錯誤恢復能力。
? ? ? ? 靈活宏塊排序FMO:
????????一幅圖像由若干片組成,每片包含一系列的宏塊(MB)。MB的排列可按光柵掃描順序,也可不按光柵掃描順序。每個片獨立解碼, 不同片的宏塊不能用于自身片中作預測參考。因此,片的設置不會造成誤碼擴散。如圖8.5所示,片0、片1和片2中的宏塊相互之間不能作為預測參考。

????????靈活宏塊排序FMO是H.264的一大特色,適用于H.264的基本檔次和擴展檔次的應用。FMO通過宏塊分配映射技術,把每個宏塊分配到不按掃描順序的片中,圖像內部預測機制,例如幀內預測或運動矢量預測,僅允許用同一片組里的空間相鄰的宏塊。FMO模式劃分圖像的模式各種各樣,重要的有棋盤模式、矩形模式等。當然,FMO模式也可以使一幀中的宏塊順序分割,使得分割后的片的尺寸小于無線網絡的MTU尺寸。經過FMO模式分割后的圖像數據分開進行傳輸。
????????以圖8.6所示,所有的MB被分成了片組0和片組1,相應地分別采用黑色和白色表示。當白片丟失時,因為其周圍的宏塊都屬于其他片的宏塊,利用鄰域相關性,黑片宏塊的某種加權可用來代替白片相應宏塊。這種錯誤隱藏機制可以明顯提高抗誤碼性能。實驗證明,在CIF圖像的視頻會議中,在丟包率達10%時,視頻失真低到需要訓練有素的眼睛才能識別。使用FMO的代價是稍微降低了編碼效率(因為它打破 了原先非鄰居MB之間的預測),而且在高度優化的環境中,有比較高的延遲。
????????
????????冗余片RS:
????????H.264中參考圖像的選擇與以前在H.263中的一樣。在基于反饋的系統中,解碼器接收到丟失或被破壞的圖像信息時,就可運用基于參考圖像選擇的差錯控制方法,選擇參考圖像序列中正確的參考宏塊, 來進行錯誤恢復;而對于無反饋的系統,就不可能運用該方法,因而提出了冗余分片技術。
????????冗余片技術,簡單地講就是,在同一個比特流中,編碼器除了將片自身己編碼的宏塊放置其中外,同一宏塊的1個或多個冗余的表示也同時被放置其中,通過利用宏塊的1個或多個冗余表示來克服誤碼造成的不可用片對重構圖像的影響。
????????這種技術與前面介紹的基于冗余的傳輸(如包復制)和分層編碼有著本質的區別。在包復制冗余傳輸中,被復制的包和復制包一模一 樣;在分層編碼中,基本層包含了解碼圖像所需的最基本的信息,而增強層是在基本層的基礎上對圖像的細節信息的補充,在解碼器端, 若只接收到增強層的信息而沒有基本層的信息,是不能對圖像進行正確解碼的。而在冗余片技術的使用中,冗余片使用不同的編碼參數來編碼,從而形成對同一宏塊的不同表示(每種表示都可以獨立的用于解碼,只是質量各不相同)。例如,主冗余片可以使用較小的QP來量化編碼,因此具有較好的重構圖像質量;次要的冗余片可以使用一個較大的QP來量化編碼,這樣質量粗糙一些但碼率更低。在解碼器中重構圖像時,如果主冗余片可用,則僅使用主冗余片而丟棄其余的冗余片;只有當主冗余片在傳輸的過程中丟失或由于誤碼等原因而不可用時,其余的冗余片才用于重構圖像。
????????這種對主次冗余片不同編碼參數的運用,使得冗余片技術在花銷最少比特數的情況下,最大限度地保證了重構圖像的質量,尤其是在有誤碼傾向的移動信道或IP信道環境下,采用冗余片技術可顯著提高重構圖像的主客觀質量。
? ? ? ? SP/SI幀技術:
????????隨著H.264/AVC為了順應視頻流的帶寬自適應性和抗誤碼性能的要求,又定義了兩種新的幀類型:SP幀和SI幀。
????????SP幀編碼的基本原理同P幀類似,仍是基于幀間預測的運動補償預測編碼,兩者之間的差異在于SP幀能夠參照不同參考幀重構出相同的圖像幀。充分利用這一特性,SP幀可取代了I幀,廣泛應用于流間切換、拼接、隨機接入、快進快退以及錯誤恢復等應用中,同時大大降低了碼率的開銷。與SP幀相對應,SI幀則是基于幀內預測編碼技術, 其重構圖像和對SP的重構圖像完全相同。SP幀的編碼效率盡管略低于P幀,但卻遠遠高于I幀,大大改善了H.264的網絡親和性,支持靈活的流媒體服務應用,具有很強的抗誤碼性能,適應在噪聲干擾大、丟包率高的無線信道中傳輸。
????????采用不同的參考幀預測,可以獲得同一幀的多個SP幀,利用這種特性可以增強錯誤恢復的能力。例如,如圖8.7所示,正在進行視頻流傳輸的比特流中的一個幀無法正確解碼,得到用戶端反饋的錯誤報告后,服務器就可以發送其后最鄰近主SP幀的一個輔SP幀——
,以避免錯誤影響更多后續幀,
幀的參考幀是已經正確解碼的幀。當然,用戶端也可以使用輔SI幀——
來實現相同的功能。
????????
? ? ? ? 2、H.264的網絡提取層的錯誤恢復:
????????NAL支持眾多基于包的有線/無線通信網絡,諸如H.320、MPEG-2 和RTP/IP等。但目前,絕大部分的視頻應用所采用的網絡協議層次是 RTP/UDP/IP,因此在下面的描述中主要基于這個傳輸框架。下面首先分析NAL層的基本處理單元NALU以及它的網絡封裝、分割和合并的方法。
? ? ? ? NAL單元:
????????每個NAL單元是一個一定語法元素的可變長字節字符串,包括包含一個字節的頭信息(用來表示數據類型),以及若干整數字節的負荷數據。一個NAL單元可以攜帶一個編碼片、A/B/C型數據分割、一個序列或圖像參數集。
????????NAL單元的頭信息結構如圖8.8所示,NAL單元按RTP序列號按序傳送。其中,T為負荷數據類型,占5個比特;R為重要性指示位,占2個比特;最后的F為禁止位,占1個比特。具體如下。
? ? ? ? NALU類型位:
????????可以表示NALU的32種中的不同類型特征,類型1~12是H.264的定義的,類型24~31是用于H.264以外的,RTP負荷規范使用這其中的一 些值來定義包聚合和分裂,其他值為H.264保留。
????????重要性指示位:
????????用于在重構過程中標記一個NAL單元的重要性,值越大,越重要。值為0表示這個NAL單元沒有用于預測,因此可被解碼器拋棄而不會有錯誤擴散;值高于0表示此NAL單元要用于無漂移重構,且值越高,對此NAL單元丟失的影響越大。
? ? ? ? 禁止位:
????????編碼中默認置為0,當網絡識別此單元中存在比特錯誤時,可將其置為1,以便接收方丟掉該單元,主要用于適應不同種類的網絡環境 (比如有線無線相結合的環境)。例如對于從無線到有線的網關,一 邊是無線的非IP環境,一邊是有線網絡的無比特錯誤的環境。假設一 個NAL單元到達無線那邊時,校驗和檢測失敗,網關可以選擇從NAL 流中去掉這個NALU單元,也可以把已知被破壞的NAL單元前傳給接收端。在這種情況下,智能的解碼器將嘗試重構這個NAL單元(已知它 可能包含比特錯誤)。而非智能的解碼器將簡單的拋棄這個NAL單元。
????????NAL單元結構規定了用于面向分組或用于流的傳輸子系統的通用格式。在H.320和MPEG-2系統中,NAL單元的流應該在NAL單元邊界內,每個NAL單元前加一個3個字節的起始前綴碼。在分組傳輸系統中,NAL單元由系統的傳輸規程確定幀界,因此不需要上述的起始前綴碼。
????????一組NAL單元被稱為一個接入單元,定界后加上附加增強信息 (SEI),形成基本編碼圖像。該基本編碼圖像(PCP)由一組已編碼的NAL單元組成,其后是冗余編碼圖像(RCP),它是PCP同一視頻圖像的冗余表示,用于解碼中PCP丟失情況下恢復信息。如果該編碼視頻圖像是編碼視頻序列的最后一幅圖像,應出現序列NAL單元的“end”, 表示該序列結束。一個圖像序列只有一個序列參數組,并被獨立解碼。如果該編碼圖像是整個NAL單元流的最后一幅圖像,則應出現流 的“end”。一個接入單元的組成見圖8.9
????????H.264采用上述嚴格的接入單元,不僅使H.264可自適應于多種網絡,而且進一步提高了其抗誤碼的能力。序列號的設置可發現丟的是哪一個VCL單元。冗余編碼圖像使得即使基本編碼圖像丟失,仍可得到較“粗糙”的圖像。
? ? ? ? H.264中的RTP:
????????上面闡述了NAL單元的結構和實現方法,這里要詳細討論RTP的載荷規范和抗誤碼性能。RTP可通過發送冗余信息來減少接收端的丟包率,但會增加時延,與冗余片不同的是,它增加的冗余信息是個別重點信息的備份,適合于的非平等保護機制。
????????相應的多媒體傳輸規范有:
- ①分組復制多次重發,發送端對最重要的比特信息分組進行復制重發,使得保證接收端能至少正確接收到一次,同時接收端要丟棄已經正確接收的分組的多余備份;
- ②基于分組的前向糾錯,對被保護的分組進行異或運算,將運算結果作為冗余信息發送到接收方,由于時延,不用于對話型應用,可用于流媒體;
- ③視頻冗余編碼,可保護包括視頻在內的任何數據流,每個分組由頭標、載荷以及前一分組的載荷組成,H.264中可與數據分割一起使用。
????????RTP的封裝規范總結如下:
- ①額外開銷要少,使MTU尺寸在100~ 64k字節范圍內;
- ②易于區分分組的重要性,而不必對分組內的數據解碼;
- ③載荷規范應當保證不用解碼就可識別由于其他的比特丟失而造成的分組不可解碼;
- ④支持將NALU分割成多個RTP分組;
- ⑤支持將多個NALU匯集在一個RTP分組中。
????????H.264采用了簡單打包的方案,即一個RTP分組里放入一個 NALU,將NALU(包括同時作為載荷頭標的NALU頭)放入RTP的載荷中,設置RTP頭標值。理想情況下,VCL不會產生超過MTU尺寸的 NAL單元,來避免IP層的分拆。在接收端,通過RTP序列信息識別復制包并丟棄,取出有效RTP包里的NAL單元。基本檔次和擴展檔次允許片的無序解碼,這樣在抖動緩存中就不必對包重新排序。在使用主檔次時(不允許片的亂序),要通過RTP序列信息來對包重新排序。
????????存在如下情況,例如當使用內容預編碼時,編碼器不了解底層網絡的MTU大小,將產生許多大于MTU尺寸的NALU,這就需要涉及NALU分割和合并。
????????(1)NALU的分割:
????????雖然IP層的分割可以使數據塊小于64k字節,但無法在應用層實現 保護,從而降低了非平等保護方案的效果。由于UDP數據包小于64k字 節,而且一個片的長度對某些應用場合來說太小,所以應用層打包是RTP打包方案的一部分。大致具有以下特點:
- ①NALU的分塊以按RTP次序號升序傳輸;
- ②能夠標記第一個和最后一個NALU分塊;
- ③可以檢測丟失的分塊。
????????(2)NALU的合并:
????????一些NALU如SEI、參數集等非常小,將它們合并在一起有利于減少頭標開銷。現有的兩種集合分組:
- ①單一時間集合分組STAP,按時間戳進行組合,一般用于低延遲環境;
- ②多時間集合分組MTAP,不同時間戳也可以組合,一般用于高延遲環境,比如流應用。
三、移動無線信道中的精確碼率控制算法:
????????在2.5G、3G等低碼率信道中的視頻通信,由于信道資源不足,對碼率控制的精度提出非常高的要求,需要將編碼器的輸出比特率波動,控制在很小的范圍內。在傳統碼率控制算法中,為了使編碼器的輸出碼率更加精確,經常會造成同一幅圖像中在空間上的圖像質量不均勻。尤其在無線/低帶寬信道中,這種負面效果會被放大,圖像中局部過量化的情況會非常明顯,這會極大地損傷圖像的主觀效果。
????????這里提出一種適用于低碼率及無線信道的宏塊級自適應碼率分配方法。此種方法以宏塊為單位進行分析處理,將宏塊的紋理及運動信息提取抽象為宏塊能量,將碼率分配與宏塊能量密切相關。這樣能達到精確分配碼率,同時控制編碼質量,提升圖像主觀效果。本文提出的算法的優勢在于既能提供碼率控制的精確性,又能平滑圖像在空間上的質量變化,提升圖像主觀質量。宏塊級碼率自適應碼率控制算法尤其適用于低碼率/窄帶下的視頻應用,與此同時,算法不依賴于特定編碼體系,可廣泛適用于H.264、MPEG-4或其他編碼器。
? ? ? ? 1、宏塊能量的提取:
????????本文對圖像宏塊進行分析,將宏塊紋理復雜和運動復雜分別提取,按照特定的方式計算得出宏塊能量。
????????宏塊紋理復雜度:
????????宏塊紋理復雜因子基于自然圖像在空間上的相關和連續性。組成圖像的各像素在空間與周圍像素都有相關性,這個特性可以被利用來減除空間冗余度。如果圖像空間冗余度高,圖像編碼復雜相對較低; 圖像空間冗余度低,圖像編碼復雜度相對較高。本文采用Sobel算子來 計算宏塊的紋理復雜因子,為了降低計算復雜度先對宏塊中的像素進行亞采樣。具體計算過程見圖8.10。
????????為了降低計算復雜度,本文對輸入的原始像素進行2∶1亞采樣,采樣后的像素個數是原始像素個數的1/2,對采樣后的像素進行邊界方向向量計算所耗費的時間大約是原來的1/2。本文中所采用的像素亞采樣方法如圖8.11所示。在亞采樣后的圖中,實心圓表示可用的采樣像素, 亞采樣后的像素值是由兩個相鄰像素求平均得到,如亞采樣后圖中像素A等于原始像素1和原始像素2的平均。因為相鄰像素在空間上的強相關性,亞采樣后的數據保留了原圖像的數據特征,對算法的性能影響很小,亞采樣后計算復雜度將很大幅度地降低。
????????本文在對宏塊亞采樣的基礎上,對宏塊空間冗余度進行分析,選取Sobel算子和
,提取宏塊邊界向量的水平和垂直方向分量,如公式(8.1)。其中,
和
分別代表邊界向量的水平和垂直方向分量,
等是指像素
在原始圖像中的相鄰像素。
????????對于亞采樣后的像素,相應的邊界向量為 。為了方便計算,定義邊界方向向量的模是:
????????將宏塊亞采樣后的像素所對應的邊界方向的向量模相加求和,得到,此變量在一定程度上可以表示當前宏塊的空間相關性。如果當前宏塊與周圍宏塊相關性比較大,對于編碼而言宏塊的紋理復雜度小;相反宏塊紋理復雜度大。宏塊紋理復雜因子求法見公式(8.3)。 其中,
是宏塊的紋理復雜因子,a是調整因子,取值根據經驗選取。
????????
????????宏塊運動復雜度:
????????宏塊運動復雜度是指宏塊所在的物體的運動的劇烈程度。求運動復雜因子的算法如下:
- ①針對當前宏塊作運動搜索,這里參考圖像選擇前一幀圖像,運動搜索方法選擇菱形運動搜索算法;
- ②計算宏塊預測數據和原始數據的差異,用SATD來計算;
- ③根據SATD來計算出運動復雜因子
:
????????式中,b是調整系數。SATD(Sum of Absolute Transform Difference,變換后絕對差和),表示在頻域中的殘差分布。SATD的計算方法見公式(8.5)。
????????其中,DiffT=H?Diff?H,
????????
????????宏塊能量:
????????宏塊能量由宏塊的紋理復雜度和宏塊運動復雜度兩個部分組成, 如式(8.6)所示。其中,是宏塊的紋理復雜因子,
是宏塊的運動復雜因子。
? ? ? ? 2、與宏塊能量相結合,在宏塊級別分配碼率:
????????本文將各個宏塊比特分配與宏塊能量相結合,這種模型可以將碼率控制算法與圖像的自然特性有機地結合起來,在不增加網絡帶寬的前提下重建的圖像更貼近人的主觀效果。基于宏塊的比特率分配方法由公式(8.7)表示。其中,表示第n幀圖像中第i個宏塊分配的目標比特數,i是當前宏塊在圖像中的索引號,N是圖像中宏塊的個數,
是第n幀圖像分配的目標比特數,
是第i個宏塊能量。
????????
? ? ? ? 3、計算編碼量化參數Qp:
????????在已經分配好宏塊比特率的情況下,使用RD模型以宏塊為單位求解編碼的量化參數Qp,通過求解式(8.8)的根可以得到Qp。其中,B是當前幀分配的目標比特數;SAD是當前幀的均方差,可以由前一幀圖像估計出來;Qp是第i個宏塊的量化參數。、
是調整參數。
四、移動互聯網中多媒體業務平臺的設計:
????????移動互聯網的核心業務主要圍繞多媒體展開,建設適用于移動業務的多媒體系統,是移動互聯網業務開展的必要技術條件。下面以中國移動“萬花筒”業務的平臺設計為例,介紹3G移動互聯網業務中的多媒體平臺設計方案。
? ? ? ? 1、移動互聯網的多媒體業務核心平臺:
????????“萬花筒”是中國移動在廣東推出的移動多媒體新業務平臺產品, 是一套完整的從客戶端到運營后臺的整體運營平臺。“萬花筒”平臺是集瀏覽、搜索、直播、點播、下載、上傳、訂閱、互動功能于一體的綜合性的業務平臺,同時提供了業務運營需要的各種管理、計費、接入等功能。用戶通過平臺能實現同時在普通PC、手機終端、專業移動 終端上觀看電視、短片,查閱新聞資訊、天氣、證券,收聽音樂等豐富內容的多媒體應用。CP/AP/SP等合作伙伴通過該平臺能進行各種內 容/應用服務的開發,并實現業務收入。
????????其中,多媒體應用包括:手機電視、手機音樂、手機電子報、電子雜志、視頻點播、移動視頻交友聊天、證券股評、移動遠教、移動視頻會議、城市應急指揮、公交監控、企業視頻監控、家庭視頻監控等。
????????萬花筒平臺由編轉碼系統、流媒體傳輸系統、內容管理平臺、手機客戶端和網絡管理平臺組成,具體如圖8.12所示。
????????編轉碼系統:
????????編轉碼系統決定整個多媒體平臺的視音頻效果。由于移動信道的特殊性質,壓縮編碼器必須作出特殊優化,將音視頻源轉換成適合在移動環境下傳輸的高畫質、低碼率的音視頻文件和直播信號。
????????流媒體傳輸系統:
????????移動信道由于具備“易錯”的特性,對音視頻流的傳輸與分發提出特殊要求。需要開發適應移動網抖動大、連接不穩定、基站切換等問題的流傳輸系統,同時提供支持百萬級用戶訪問的能力。
????????業務管理系統:
????????業務管理系統可以針對音視頻節目的上傳、審核、發布,并對文字、圖片等多媒體資料進行編輯發布。EPG節目單可以在WAP站點進行發布,手機用戶可以輕松訪問。
????????手機客戶端:
????????用戶可以通過包含Windows Mobile、Symbian、Linux的智能手機, 訪問精彩流暢的音視頻內容。
????????網絡管理平臺:
????????為更好地支持系統運營,還需要網絡管理平臺,以實現對全網設備的維護、監控和管理,并通過資源平衡服務器,實現對用戶訪問的智能高度和分流。
? ? ? ? 2、編轉碼系統:
????????編轉碼系統構成如圖8.13所示。
????????移動信道低碼率的情況下,信源編碼有如下的獨特難點,需要特殊優化:
- (1)由于時間、空間上的采樣率變小,相對應的冗余度相對變小;
- (2)更高的量化噪聲,需要優化、調節R-D模型,使之適應;
- (3)由過壓縮引起的塊效應更為突出;
- (4)振鈴效應;
- (5)只允許更小的碼率波動,需要更精確的碼率控制算法;
- (6)必須在碼率和失真之間作更精細的權衡,將有限的比特集中到容易引起人眼敏感的區域;
- (7)丟包引起的解碼錯誤。
????????3、設計流分發服務器:
????????本節設計一個按照3GPP標準協議框架設計的流分發系統。下文的3GSS是本文在3GPP框架下設計的流分發服務器。
????????服務方式:
????????3GSS流媒體服務器的服務方式有兩種。
????????(1)直播:
????????直播是在一段完整的時間里同步展現事件的發生過程。直播不同于其他方式,他的特點是可以實現信息和真實狀況的同步,表現的是敘事時間(播出時長)與行為時間(事件過程)的一致性。直播是同步展示事件的現實狀態,讓事實的可信度提高。從時效上來看,任何一種報道形式都不會超越“此時此刻”了,所以直播是信息“保鮮”的最好手段。在直播過程中,用戶不能對流進行后退、快進、快退或暫停等操作。
????????(2)點播:
????????對本地提供的節目進行點播。內容提供商將預先錄制好的多媒體內容編碼壓縮成相應的格式,存放在本地服務器上并把內容的描述信息以及鏈接放置在流媒體的門戶網站上。最終用戶就可以通過訪問門戶網站,發現感興趣的內容,有選擇地進行播放。用戶可任意對本地節目進行點播。在點播連接中,用戶可以對流進行后退、快進、快退 或暫停等操作。
? ? ? ? 總體架構:
????????(1)系統布局:
????????3GSS流媒體服務器為核心后臺服務器,它的系統布局如圖8.14所示。
????????由圖8.14所示,3GSS流媒體服務器主要用于接收一路或多路音視頻編碼流,同時提供給播放器用戶觀看節目內容。其主要功能是對媒體內容進行緩存、調度和傳輸,流媒體應用系統的主要性能體現都取決于媒體服務器的性能和服務質量。由此可見,流媒體服務器是流媒體應用系統的基礎,也是最主要的組成部分。
????????(2)系統構架:
????????圖8.15描述了3GSS的系統架構,從媒體源的角度看,我們可以發現3GSS提供的兩大核心功能就是對實時編碼流的傳輸和對非實時節目的發送,即我們熟悉的直播和點播功能。
? ? ? ? 4、客戶端:
????????客戶端在整個系統中的位置如圖8.16所示。可以看出,萬花筒客戶端使用流程大致如下:
- (1)運行主程序,顯示歡迎界面;
- (2)判斷是否要升級;
- (3)分級下載EPG菜單;
- (4)顯示菜單;
- (5)點播、直播等服務;
- (6)如果點擊須付費節目,則讓用戶注冊或輸入密碼,并發 wappush訂閱扣費。
????????萬花筒客戶端程序邏輯結構如圖8.17所示。其中,調度控制層控制功能模塊,負責處理模塊間的共存或互斥關系,負責模塊間的通信, 并對功能模塊進行封裝,抽象出對界面層的接口。界面顯示層負責獲取節目信息,并展現在手機上,根據業務邏輯對界面跳轉進行控制。
?參考資料:
? ? ? ? ? ? ? ??《新一代視頻壓縮編碼標準 —H.264/AVC》——畢厚杰 王健?編著
????????????????https://github.com/wangyongyao1989/WyFFmpeg/tree/main/h264