常见视频编解码格式
1視頻文件類別
常言道:物以類聚,人以群分。視頻文件也不例外,細細算起來,視頻文件可以分成兩大類:其一是影像文件,比如說常見的VCD便是一例。其二是流式視頻文件,這是隨著國際互聯網的發展而誕生的后起視頻之秀,比如說在線實況轉播,就是構架在流式視頻技術之上的。
1.1影像格式
日常生活中接觸較多的VCD、多媒體CD光盤中的動畫……這些都是影像文件。影像文件不僅包含了大量圖像信息,同時還容納大量音頻信息。所以,影像文件的“身材”往往不可小覷。
1.2流式視頻格式
目前,很多視頻數據要求通過Internet來進行實時傳輸,前面我們曾提及到,視頻文件的體積往往比較大,而現有的網絡帶寬卻往往比較“狹窄”,千軍萬馬要過獨木橋,其結果當然可想而知。客觀因素限制了視頻數據的實時傳輸和實時播放,于是一種新型的流式視頻(Streaming Video)格式應運而生了。這種流式視頻采用一種“邊傳邊播”的方法,即先從服務器上下載一部分視頻文件,形成視頻流緩沖區后實時播放,同時繼續下載,為接下來的播放做好準備。這種“邊傳邊播”的方法避免了用戶必須等待整個文件從Internet上全部下載完畢才能觀看的缺點。到目前為止,Internet上使用較多的流式視頻格式主要是以下三種:
RM格式是RealNetworks公司開發的一種新型流式視頻文件格式,它麾下共有三員大將:RealAudio、RealVideo和RealFlash。RealAudio用來傳輸接近CD音質的音頻數據,RealVideo用來傳輸連續視頻數據,而RealFlash則是RealNetworks公司與Macromedia公司新近合作推出的一種高壓縮比的動畫格式。RealMedia可以根據網絡數據傳輸速率的不同制定了不同的壓縮比率,從而實現在低速率的廣域網上進行影像數據的實時傳送和實時播放。這里我們主要介紹RealVideo,它除了可以以普通的視頻文件形式播放之外,還可以與RealServer服務器相配合,首先由RealEncoder負責將已有的視頻文件實時轉換成RealMedia格式,RealServer則負責廣播RealMedia視頻文件。在數據傳輸過程中可以邊下載邊由RealPlayer播放視頻影像,而不必像大多數視頻文件那樣,必須先下載然后才能播放。目前,Internet上已有不少網站利用RealVideo技術進行重大事件的實況轉播。
MOV也可以作為一種流文件格式。QuickTime能夠通過Internet提供實時的數字化信息流、工作流與文件回放功能,為了適應這一網絡多媒體應用,QuickTime為多種流行的瀏覽器軟件提供了相應的QuickTime Viewer插件(Plug-in),能夠在瀏覽器中實現多媒體數據的實時回放。該插件的“快速啟動(Fast Start)”功能,可以令用戶幾乎能在發出請求的同時便收看到第一幀視頻畫面,而且,該插件可以在視頻數據下載的同時就開始播放視頻圖像,用戶不需要等到全部下載完畢就能進行欣賞。此外,QuickTime還提供了自動速率選擇功能,當用戶通過調用插件來播放QuickTime多媒體文件時,能夠自己選擇不同的連接速率下載并播放影像,當然,不同的速率對應著不同的圖像質量。此外,QuickTime還采用了一種稱為QuickTime VR的虛擬現實(VR,Virtual Reality)技術,用戶只需通過鼠標或鍵盤,就可以觀察某一地點周圍360度的景象,或者從空間任何角度觀察某一物體。
Microsoft公司推出的Advanced Streaming Format (ASF,高級流格式),也是一個在Internet上實時傳播多媒體的技術標準,Microsoft公司的野心很大,希圖用ASF取代QuickTime之類的技術標準。ASF的主要優點包括:本地或網絡回放、可擴充的媒體類型、部件下載、以及擴展性等。ASF應用的主要部件是NetShow服務器和NetShow播放器。有獨立的編碼器將媒體信息編譯成ASF流,然后發送到NetShow服務器,再由NetShow服務器將ASF流發送給網絡上的所有NetShow播放器,從而實現單路廣播或多路廣播。這和Real系統的實時轉播則是大同小異。
2常見的視頻的編碼及封裝格式
2.1常見視頻編碼格式
常見的編碼格式有H.264、H.263、MPEG-1、MPEG-2、MPEG、4、Sorenson Spark、VC-1、JPEG、RV、DivX、On2 True Motion VP6。對于高清視頻來說,主流的編碼技術目前主要有 MPEG-2、DivX、XVID、H264/AVC、VC-1、RMVB 和 WMV-HD 等等。其中,H264/AVC、VC-1、MPEG-2 是藍光(Blu-ray Disc)所選擇的編碼格式,也是目前最流行的高清視頻編碼格式。另外就是高清視頻的封裝格式,封裝格式和編碼格式是互相區別的,許多人會把它們混淆。
下圖為常見編碼格式的logo:
圖1.1常見編碼格式logo
絕大多數視聽玩家對于 H264 編碼都不會感到陌生,H264 編碼的身世顯赫,是 ITU-T(國際電信聯盟視頻編碼專家組)與 ISO/IEC(國際標準化組織動態圖像專家組)合作組成的 JVT(聯合視頻組)推動的新一代數字視頻編碼標準,也稱為 MPEG-4/AVC 編碼。H264 編碼依托雄厚的背景,在技術上獨樹一幟,大幅領先于其它編碼算法。
X264 編碼,是 H264 編碼的一個開源分支,它符合 H264 標準,其功能在于編碼,而不作為解碼器使用,X264 編碼最大的特點在于注重實用,它在不明顯降低編碼性能的前提下,努力降低編碼的計算復雜度,X264 對于 H264 編碼中的一些復雜編碼特性做了折衷處理,其壓縮視頻體積小于XVID(MPEG-4)編碼視頻,以小體積、高畫質的特點得到了廣泛認可。
H.263是國際電聯ITU-T的一個標準草案,是為低碼流通信而設計的。但實際上這個標準可用在很寬的碼流范圍,而非只用于低碼流應用,它在許多應用中可以認為被用于取代H.261。H.263的編碼算法與H.261一樣,但做了一些改善和改變,以提高性能和糾錯能力。
1998年IUT-T推出的H.263+是H.263建議的第2版,它提供了12個新的可協商模式和其他特征,進一步提高了壓縮編碼性能。如H.263只有5種視頻源格式,H.263+允許使用更多的源格式,圖像時鐘頻率也有多種選擇,拓寬應用范圍;另一重要的改進是可擴展性,它允許多顯示率、多速率及多分辨率,增強了視頻信息在易誤碼、易丟包異構網絡環境下的傳輸。另外,H.263+對H.263中的不受限運動矢量模式進行了改進,加上12個新增的可選模式,不僅提高了編碼性能,而且增強了應用的靈活性。H.263已經基本上取代了H.261
MPEG-1是MPEG組織制定的第一個視頻和音頻有損壓縮標準。視頻壓縮算法于1990年定義完成。1992年底,MPEG-1正式被批準成為國際標準。MPEG-1是為CD光碟介質定制的的視頻和音頻壓縮格式。一張70分鐘的CD光碟傳輸速率大約在1.4Mbps。而MPEG-1采用了塊方式的運動補償、離散馀弦變換(DCT)、量化等技術,并為1.2Mbps傳輸速率進行了優化。MPEG-1隨后被Video CD采用作為核心技術。MPEG-1的輸出質量大約和傳統錄像機VCR,信號質量相當,這也許是Video CD在發達國家未獲成功的原因。
MPEG-2 編碼標準是由 MPEG(Moving Picture Experts Group)工作組發布的視頻與音頻壓縮國際標準。MPEG-2 編碼于 1994 年發布,常用于廣播信號(衛星電視、有線電視)的視頻和音頻編碼,經過后期不斷修改,不僅成為 DVD 的核心技術,還應用于 HDTV 高清電視傳輸。
MPEG4于1998 年11 月公布,原預計1999 年1月投入使用的國際標準MPEG4不僅是針對一定比特率下的視頻、音頻編碼,更加注重多媒體系統的交互性和靈活性。MPEG-4標準主要應用于視像電話(Video Phone),視像電子郵件(Video Email)和電子新聞(Electronic News)等,其傳輸速率要求較低,在4800-64000bits/sec之間,分辨率為176X144。MPEG-4利用很窄的帶寬,通過幀重建技術,壓縮和傳輸數據,以求以最少的數據獲得最佳的圖像質量。
Sorenson編解碼器可以指三個專有的視頻編解碼器:Sorenson視頻,Sorenson視頻3或Sorenson Spark。 Sorenson視頻也被稱為Sorenson視頻編解碼器,Sorenson視頻量化或SVQ。Sorenson Spark也被稱為H.263或FLV1Sorenson(而且有時誤為Flash視頻(FLV),這是以Adobe Flash容器格式名稱命名)。 這兩種編解碼器的設計由Sorenson媒體公司。Sorenson視頻是用在蘋果的QuickTime和Sorenson Spark在用在Adobe Flash容器中。
WMV(Windows Media Video)作為經久不衰的一種視頻編碼,一直在不斷改進,2003 年,微軟基于 WMV 第九版(WMV9)編碼技術,正式提出了 VC-1 編碼標準,并于 2006 年正式成為國際標準。VC-1 編碼作為較晚推出的高清編碼算法,自然吸收了 MPEG-2 與 H264 編碼的優點,其壓縮比介于 MPEG2 和 H264 之間,編解碼復雜性僅有 H264 的一半,即壓縮時間更短、解碼計算更小,在微軟的大力推動下,VC-1 編碼已經得到了 BD 藍光光盤、電影及電視學會(SMPTE)的支持。
近幾年來,為了更好的推廣 WMV9/VC-1 編碼標準,微軟不遺余力的建立了 WMV-HD 高清資源站點,大量發布采用 VC-1 編碼壓制的 720P、1080P 宣傳片及演示片(WMV-HD 視頻格式) ,試圖營造聲勢,吸引用戶關注。不過,中庸的技術(與 H264 相比無明顯編碼優勢)、封閉的平臺(限于 Windows 系統)、后發的劣勢(2006 年通過成為國際標準)仍然給微軟 VC-1 編碼的應用前景帶來了較大的不確定性。
JPEG 是Joint Photographic Experts Group(聯合圖像專家小組))的縮寫。JPEG的壓縮方式通常是破壞性資料壓縮(lossy compression),意即在壓縮過程中圖像的品質會遭受到可見的破壞,有一種以JPEG為基礎的標準Progressive JPEG是采用無失真的壓縮方式,但Progressive JPEG并沒有受到廣泛的支援。
RealVideo格式文件包括后綴名為RA、RM、RAM、RMVB的四種視頻格式。 Real Video是一種高壓縮比的視頻格式,可以使用任何一種常用于多媒體及Web上制作視頻的方法來創建RealVideo文件。例如Premiere、 VideoShop以及AfterEffects等,對于文件的播放可用realplayer和暴風影音播放。
DivX格式,這是由MPEG-4衍生出的另一種視頻編碼(壓縮)標準,也即我們通常所說的DVDrip格式,它采用了MPEG4的壓縮算法同時又綜合了MPEG-4與MP3各方面的技術,說白了就是使用DivX壓縮技術對DVD盤片的視頻圖像進行高質量壓縮,同時用MP3或AC3對音頻進行壓縮,然后再將視頻與音頻合成并加上相應的外掛字幕文件而形成的視頻格式。其畫質直逼DVD并且體積只有DVD的數分之一。這種編碼對機器的要求也不高,所以DivX視頻編碼技術可以說是一種對DVD造成威脅最大的新生視頻壓縮格式,號稱DVD殺手或DVD終結者。
On2 TrueMotion VP6是主要的移動視頻標準,他采用了Adobe Flash Lite? 3的一些標準,數以百計的網絡門戶,用戶自己制作的內容,以及社交網絡普遍采用基于Flash的VP6格式。
2.2視頻的封裝格式
封裝格式其實是一個“容器”,它不同于編碼格式,封裝就相當于捆綁打包,將已經編碼好的視頻文件和音軌文件打包在一起,并按照一定規則建立排序和索引,便于播放器或播放軟件來索引播放。常見的封裝格式有 MKV、AVI、MOV、TS、PS 等等,高清媒體文件的后綴名(擴展文件名)一般都是媒體的封裝格式。
(1)MOV 格式:MOV 多見于 Apple QuickTime 網站上的電影預告片。MOV 類似于 RMVB,過于封閉自守,民間制作組沒有人會用這個不方便的形式。
(2)AVI 格式:AVI 封裝是微軟在上世紀 90 年代初創立的封裝標準,是當時為對抗 QuickTime 的 MOV 格式而推出的,因為當時還沒有流式播放需要,AVI 的將索引布置在打包文件的尾部,這就使得AVI封裝不能做到流式播放(流媒體)。AVI 封裝只能支持有限的幾種視頻音頻編碼形式,且AVI不能支持音頻的 VBR 動態比特率編碼。
(3)TS 格式:TS(Transport Stream)是一種比較先進的封裝形式,藍光原盤中,就采用了 TS 封裝。TS 封裝支持幾乎所有編碼的高清視頻和音軌文件。PS(Program Stream)封裝的技術基本和 TS 相同,但 PS 封裝和 AVI 一樣,都不是流媒體,不能夠支持流式播放,PS 封裝使用在原先的 HDDVD 中。在高清標準下,MPEG-2 編碼的視頻文件主要采用 TS 封裝格式。
(4)MKV 格式:MKV(Matroska)是一種新興的多媒體封裝格式,可以將各類視頻編碼、16 條或以上不同格式的音頻和語言不同的字幕封裝在一個文件內,它具有開放源代碼、音視頻編碼豐富、網絡親和性好等優勢,已經得到眾多視頻壓制組和玩家的支持,正逐漸成為高清視頻的主流視頻格式。H264 編碼與 X264 編碼目前大多采用 MKV 封裝格式。
3視頻的播放組件及調用流程
視頻文件的解碼過程如下依次需要用到的組件有“分離器”、“解碼器”、“渲染器”,它們統稱為“濾鏡”。
3.1分離器(Splitter)
要正確地播放多媒體文件,播放器首先要正確地調用分離器,把視頻流和(或)音頻流正確地分離出來,然后交給解碼器進行解碼,這就是分離器的使命。上文中說到有不少的封裝格式,每一種封裝格式都必須有相對應一種分離器,才能正確的把視頻和音頻分離出來以供解碼器解碼。
常用的分離器有:
? Gabest MPEG Splitter(Media Player Classic 作者編寫的分離器)、
? KMP Splitter(KMPlayer 原配的分離器)
? Haili Media Splitter
這三種分離器能夠支持較多的封裝格式,其它的分離器還有
? Moonlight-Elecard MPEG2 Demultiplexer(月光分離器)、
? nVIDIA Transport Demux(nVIDIA 公司的分離器,配合 PureVideo 使用)、
? CyberLink Demux(PowerDVD 軟件中的分離器)
3.2解碼器(Decoder)
解碼器在整個視頻的播放中占據了最主要的位置,它的作用是對由分離器分離出來的音頻流和視頻流分別進行解碼。解碼器又分為視頻解碼器和音頻解碼器。
常見的視頻解碼器有:
MPEG-2 視頻解碼器
? InterVideo Video Decoder(WinDVD 的解碼器)
? CyberLink DTV Video/SP Filter
? CyberLink Video/SP Filter(PowerDVD 的解碼器)
? Moonlight-Elecard MPEG2 Video Decoder
? nVIDIA Video Decoder(nVIDIA PureVideo 的解碼器)
? Sonic CinemasterVideo、Gabest Video Decoder
H264/X264/AVC 視頻解碼器
? CyberLink H.264/AVC Decoder(PowerDVD 的解碼器)、
? CoreAVC DirectShow Video Decoder
? Moonlight H264 Video Decoder
? ffdshow MPEG-4 Video Decoder
VC-1 視頻解碼器
CyberLink VC-1 Deocder(PowerDVD 的解碼器)、Media Player Classic Video Decoder、WMVideo Decoder DMO(微軟的解碼器)等等。
常見的音頻解碼器有:
? CyberLink Audio Decoder(PowerDVD 的解碼器)
? AC3 Filter
? InterVideo Audio Decoder
? nVIDIA Audio Decoder
3.3渲染器(Renderer)
渲染器與解碼器一樣,分為視頻渲染器和音頻渲染器,解碼后的視頻數據經過視頻渲染器的渲染后呈現到顯示設備上,解碼后的音頻經過音頻渲染器的渲染后從聲卡輸出。渲染在視頻播放的過程中是很重要的,因為它會影響到視頻最終的效果,不同的渲染器有不同的技術特性,對電腦的配置(主要是 CPU 和顯卡)的要求也不一樣。
視頻渲染器主要有以下幾種:
舊式視頻渲染器(Video Renderer):
這種是最原始的渲染器,它接收到來自解碼器解碼后的數據流,在顯示設備上顯示。這種渲染器基本上不能調用到顯卡硬件特性,全靠 CPU 來完成渲染任務。
覆蓋合成器(Overlay Mixer):
覆蓋合成器能夠將若干路視頻流合并輸出到顯示設備上,并且它能夠很好地調用顯卡硬件的拉伸,顏色空間變換等硬件功能,以減少對 CPU 資源的占用率。視頻覆蓋的畫面質量事實上取決于顯卡硬件。通常在使用覆蓋合成器的時候無法直接對正在播放的視頻截圖。
VMR 渲染器(Video Mixing Renderer):
VMR 對覆蓋合成器進行了改進,它是基于 DirectX 的視頻渲染器,能夠支持 16 路的視頻流混合。VMR 根據 DirectX 版本的不同,可以分為 VMR7 和 VMR9,其中 VMR7 基于 DirectDraw7(2D),而 VMR9 基于 Direct3D9(3D),VMR9 可以支持視頻特效(Video Effects)和視頻變換(Video Transitions)。VMR 根據渲染模式的不同又分為“窗口化”(Windowed)、“無窗口”(Windowless)、“未渲染”(Renderless)模式。
EVR 增強型視頻渲染器(Enhanced Video Renderer)
微軟在 Windows Vista 系統就開始引入的新視頻渲染器,當然也包含在新的操作系統 Windows 7 中。它與 VMR 最大的區別就是能夠支持 DXVA 2.0。
要將 4:2:0 YUV 轉換為 4:4:4 YUV,按照前面講述的兩個方法進行操作即可。首先將 4:2:0 圖像轉換為 4:2:2,然后將 4:2:2 圖像轉換為 4:4:4。您還可以切換兩個上轉換過程的順序,因為操作順序對于結果的視覺質量不會產生真正的影響。
總結
- 上一篇: [css] 使用css实现一个load
- 下一篇: [vue-cli]vue-cli怎么解决