視音頻技術入門

轉載 備忘   原文鏈接:  http://blog.csdn.net/leixiaohua1020/article/details/18893769


1.     視頻播放器原理

視音頻技術主要包含以下幾點:封裝技術,視頻壓縮編碼技術以及音頻壓縮編碼技術。如果考慮到網絡傳輸的話,還包括流媒體協議技術。

視頻播放器的源代碼詳細解析(Media Player Classic - HC,Mplayer,FFplay,XBMC)可以參考系列文章:

Media Player ClassicMedia Player Classic - HC源代碼分析 1:整體結構[系列文章]

MplayerMPlayer源代碼分析

FFplay FFplay源代碼分析:整體流程圖

XBMC XBMC源代碼分析 1:整體結構以及編譯方法[系列文章]

在這裏不細說了,僅簡要說明一下視頻播放器的原理。

視頻播放器播放一個互聯網上的視頻文件,需要經過以下幾個步驟:解協議,解封裝,解碼視音頻,視音頻同步。如果播放本地文件則不需要解協議,爲以下幾個步驟:解封裝,解碼視音頻,視音頻同步。他們的過程如圖所示。

 

解協議的作用,就是將流媒體協議的數據,解析爲標準的相應的封裝格式數據。視音頻在網絡上傳播的時候,常常採用各種流媒體協議,例如HTTP,RTMP,或是MMS等等。這些協議在傳輸視音頻數據的同時,也會傳輸一些信令數據。這些信令數據包括對播放的控制(播放,暫停,停止),或者對網絡狀態的描述等。解協議的過程中會去除掉信令數據而只保留視音頻數據。例如,採用RTMP協議傳輸的數據,經過解協議操作後,輸出FLV格式的數據。

解封裝的作用,就是將輸入的封裝格式的數據,分離成爲音頻流壓縮編碼數據和視頻流壓縮編碼數據。封裝格式種類很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是將已經壓縮編碼的視頻數據和音頻數據按照一定的格式放到一起。例如,FLV格式的數據,經過解封裝操作後,輸出H.264編碼的視頻碼流和AAC編碼的音頻碼流。

解碼的作用,就是將視頻/音頻壓縮編碼數據,解碼成爲非壓縮的視頻/音頻原始數據。音頻的壓縮編碼標準包含AAC,MP3,AC-3等等,視頻的壓縮編碼標準則包含H.264,MPEG2,VC-1等等。解碼是整個系統中最重要也是最複雜的一個環節。通過解碼,壓縮編碼的視頻數據輸出成爲非壓縮的顏色數據,例如YUV420P,RGB等等;壓縮編碼的音頻數據輸出成爲非壓縮的音頻抽樣數據,例如PCM數據。

視音頻同步的作用,就是根據解封裝模塊處理過程中獲取到的參數信息,同步解碼出來的視頻和音頻數據,並將視頻音頻數據送至系統的顯卡和聲卡播放出來。

接下來的幾節我們將會列出主要的流媒體協議,封裝格式,以及視音頻編碼標準。更詳細的比較可以參考:

視頻參數(流媒體系統,封裝格式,視頻編碼,音頻編碼,播放器)對比

2.     流媒體協議

流媒體協議是服務器與客戶端之間通信遵循的規定。當前網絡上主要的流媒體協議如表所示。

主要流媒體協議一覽

名稱

推出機構

傳輸層協議

客戶端

目前使用領域

RTSP+RTP

IETF

TCP+UDP

VLC, WMP

IPTV

RTMP

Adobe Inc.

TCP

Flash

互聯網直播

RTMFP

Adobe Inc.

UDP

Flash

互聯網直播

MMS

Microsoft Inc.

TCP/UDP

WMP

互聯網直播+點播

HTTP

WWW+IETF

TCP

Flash

互聯網點播

RTSP+RTP經常用於IPTV領域。因爲其採用UDP傳輸視音頻,支持組播,效率較高。但其缺點是網絡不好的情況下可能會丟包,影響視頻觀看質量。因而圍繞IPTV的視頻質量的研究還是挺多的。

RTSP規範可參考:RTSP協議學習筆記

RTSP+RTP系統中衡量服務質量可參考:網絡視頻傳輸的服務質量(QoS

上海IPTV碼流分析結果可參考:IPTV視頻碼流分析

因爲互聯網網絡環境的不穩定性,RTSP+RTP較少用於互聯網視音頻傳輸。互聯網視頻服務通常採用TCP作爲其流媒體的傳輸層協議,因而像RTMP,MMS,HTTP這類的協議廣泛用於互聯網視音頻服務之中。這類協議不會發生丟包,因而保證了視頻的質量,但是傳輸的效率會相對低一些。

此外RTMFP是一種比較新的流媒體協議,特點是支持P2P。

RTMP我做的研究相對多一些:比如RTMP規範簡單分析,或者RTMP流媒體播放過程

相關工具的源代碼分析:RTMPdump源代碼分析 1 main()函數[系列文章]

RTMP協議學習:RTMP流媒體技術零基礎學習方法

3.     封裝格式

封裝格式的主要作用是把視頻碼流和音頻碼流按照一定的格式存儲在一個文件中。現如今流行的封裝格式如下表所示:

主要封裝格式一覽

名稱

推出機構

流媒體

支持的視頻編碼

支持的音頻編碼

目前使用領域

AVI

Microsoft Inc.

不支持

幾乎所有格式

幾乎所有格式

BT下載影視

MP4

MPEG

支持

MPEG-2, MPEG-4, H.264, H.263等

AAC, MPEG-1 Layers I, II, III, AC-3等

互聯網視頻網站

TS

MPEG

支持

MPEG-1, MPEG-2, MPEG-4, H.264

MPEG-1 Layers I, II, III, AAC,

IPTV,數字電視

FLV

Adobe Inc.

支持

Sorenson, VP6, H.264

MP3, ADPCM, Linear PCM, AAC等

互聯網視頻網站

MKV

CoreCodec Inc.

支持

幾乎所有格式

幾乎所有格式

互聯網視頻網站

RMVB

Real Networks Inc.

支持

RealVideo 8, 9, 10

AAC, Cook Codec, RealAudio Lossless

BT下載影視

由表可見,除了AVI之外,其他封裝格式都支持流媒體,即可以“邊下邊播”。有些格式更“萬能”一些,支持的視音頻編碼標準多一些,比如MKV。而有些格式則支持的相對比較少,比如說RMVB。

這些封裝格式都有相關的文檔,在這裏就不一一例舉了。

我自己也做過輔助學習的小項目:

TS封裝格式分析器

FLV封裝格式分析器

 

4.     視頻編碼

視頻編碼的主要作用是將視頻像素數據(RGB,YUV等)壓縮成爲視頻碼流,從而降低視頻的數據量。如果視頻不經過壓縮編碼的話,體積通常是非常大的,一部電影可能就要上百G的空間。視頻編碼是視音頻技術中最重要的技術之一。視頻碼流的數據量佔了視音頻總數據量的絕大部分。高效率的視頻編碼在同等的碼率下,可以獲得更高的視頻質量。

視頻編碼的簡單原理可以參考:視頻壓縮編碼和音頻壓縮編碼的基本原理

注:視頻編碼技術在整個視音頻技術中應該是最複雜的技術。如果沒有基礎的話,可以先買一些書看一下原理,比如說《現代電視原理》《數字電視廣播原理與應用》(本科的課本)中的部分章節。

主要視頻編碼一覽

名稱

推出機構

推出時間

目前使用領域

HEVC(H.265)

MPEG/ITU-T

2013

研發中

H.264

MPEG/ITU-T

2003

各個領域

MPEG4

MPEG

2001

不溫不火

MPEG2

MPEG

1994

數字電視

VP9

Google

2013

研發中

VP8

Google

2008

不普及

VC-1

Microsoft Inc.

2006

微軟平臺

由表可見,有兩種視頻編碼方案是最新推出的:VP9和HEVC。目前這兩種方案都處於研發階段,還沒有到達實用的程度。當前使用最多的視頻編碼方案就是H.264。

4.1 主流編碼標準

H.264僅僅是一個編碼標準,而不是一個具體的編碼器,H.264只是給編碼器的實現提供參照用的。

基於H.264標準的編碼器還是很多的,究竟孰優孰劣?可參考:MSU出品的 H.264編碼器比較2011.5

在學習視頻編碼的時候,可能會用到各種編碼器(實際上就是一個exe文件),他們常用的編碼命令可以參考:各種視頻編碼器的命令行格式

學習H.264最標準的源代碼,就是其官方標準JM了。但是要注意,JM速度非常的慢,是無法用於實際的:H.264參考軟件JM12.2RC代碼詳細流程

實際中使用最多的就是x264了,性能強悍(超過了很多商業編碼器),而且開源。其基本教程網上極多,不再贅述。編碼時候可參考:x264編碼指南——碼率控制。編碼後統計值的含義:X264輸出的統計值的含義(X264 Stats Output

Google推出的VP8屬於和H.264同一時代的標準。總體而言,VP8比H.264要稍微差一點。有一篇寫的很好的VP8的介紹文章:深入瞭解 VP8。除了在技術領域,VP8和H.264在專利等方面也是打的不可開交,可參考文章:WebM(VP8) vs H.264

此外,我國還推出了自己的國產標準AVS,性能也不錯,但目前比H.264還是要稍微遜色一點。不過感覺我國在視頻編解碼領域還算比較先進的,可參考:視頻編碼國家標準AVSH.264的比較(節選)

近期又推出了AVS新一代的版本AVS+,具體的性能測試還沒看過。不過據說AVS+得到了國家政策上非常強力的支持。

4.2 下一代編碼標準

下一代的編解碼標準就要數HEVC和VP9了。VP9是Google繼VP8之後推出的新一代標準。VP9和HEVC相比,要稍微遜色一些。它們的對比可參考:(1)HEVC與VP9編碼效率對比 (2)HEVC,VP9,x264性能對比

HEVC在未來擁有很多大的優勢,可參考:HEVC將會取代H.264的原因

學習HEVC最標準的源代碼,就是其官方標準HM了。其速度比H.264的官方標準代碼又慢了一大截,使用可參考:HEVC學習—— HM的使用

未來實際使用的HEVC開源編碼器很有可能是x265,目前該項目還處於發展階段,可參考:x265(HEVC編碼器,基於x264)介紹。x265的使用可以參考:HEVCH.265)標準的編碼器(x265DivX265)試用

主流以及下一代編碼標準之間的比較可以參考文章:視頻編碼方案之間的比較(HEVCH.264MPEG2等)

此外,在碼率一定的情況下,幾種編碼標準的比較可參考:限制碼率的視頻編碼標準比較(包括MPEG-2H.263 MPEG-4,以及 H.264

結果大致是這樣的:

HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2。

截了一些圖,可以比較直觀的瞭解各種編碼標準:

HEVC碼流簡析:HEVC碼流簡單分析

H.264碼流簡析:H.264簡單碼流分析

MPEG2碼流簡析:MPEG2簡單碼流分析

以上簡析使用的工具:視頻碼流分析工具

我自己做的小工具:  H.264碼流分析器


5.     音頻編碼

音頻編碼的主要作用是將音頻採樣數據(PCM等)壓縮成爲音頻碼流,從而降低音頻的數據量。音頻編碼也是互聯網視音頻技術中一個重要的技術。但是一般情況下音頻的數據量要遠小於視頻的數據量,因而即使使用稍微落後的音頻編碼標準,而導致音頻數據量有所增加,也不會對視音頻的總數據量產生太大的影響。高效率的音頻編碼在同等的碼率下,可以獲得更高的音質。

音頻編碼的簡單原理可以參考:視頻壓縮編碼和音頻壓縮編碼的基本原理

主要音頻編碼一覽

名稱

推出機構

推出時間

目前使用領域

AAC

MPEG

1997

各個領域(新)

AC-3

Dolby Inc.

1992

電影

MP3

MPEG

1993

各個領域(舊)

WMA

Microsoft Inc.

1999

微軟平臺

由表可見,近年來並未推出全新的音頻編碼方案,可見音頻編碼技術已經基本可以滿足人們的需要。音頻編碼技術近期絕大部分的改動都是在MP3的繼任者——AAC的基礎上完成的。

這些編碼標準之間的比較可以參考文章:音頻編碼方案之間音質比較(AACMP3WMA等)

結果大致是這樣的:

AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3

AAC格式的介紹:AAC格式簡介

AAC幾種不同版本之間的對比:AAC規格(LCHEHEv2)及性能對比

AAC專利方面的介紹:AAC專利介紹

此外杜比數字的編碼標準也比較流行,但是貌似比最新的AAC稍爲遜色:AC-3技術綜述

我自己做的小工具: AAC格式分析器


6.     現有網絡視音頻平臺對比

現有的網絡視音頻服務主要包括兩種方式:點播和直播。點播意即根據用戶的需要播放相應的視頻節目,這是互聯網視音頻服務最主要的方式。絕大部分視頻網站都提供了點播服務。直播意即互聯網視音頻平臺直接將視頻內容實時發送給用戶,目前還處於發展階段。直播在網絡電視臺,社交視頻網站較爲常見。

6.1 直播平臺參數對比

主流互聯網視音頻平臺直播服務的參數對比如表所示:

現有網絡視音頻平臺參數對比

名稱

協議

封裝

視頻編碼

音頻編碼

播放器

CNTV

私有

華數TV

RTMP

FLV

H.264

AAC

Flash

六間房

RTMP

FLV

H.264

AAC

Flash

中國教育電視臺

RTMP

FLV

H.264

AAC

Flash

北廣傳媒移動電視

RTMP

FLV

H.264

AAC

Flash

上海IPTV

RTSP+RTP

TS

H.264

MP2

機頂盒

可以看出,直播服務普遍採用了RTMP作爲流媒體協議,FLV作爲封裝格式,H.264作爲視頻編碼格式,AAC作爲音頻編碼格式。採用RTMP作爲直播協議的好處在於其被Flash播放器支持。而Flash播放器如今已經安裝在全球99%的電腦上,並且與瀏覽器結合的很好。因此這種流媒體直播平臺可以實現“無插件直播”,極大的簡化了客戶端的操作。封裝格式,視頻編碼,音頻編碼方面,無一例外的使用了FLV + H.264 + AAC的組合。FLV是RTMP使用的封裝格式,H.264是當今實際應用中編碼效率最高的視頻編碼標準,AAC則是當今實際應用中編碼效率最高的音頻編碼標準。視頻播放器方面,都使用了Flash播放器。

6.2 點播平臺參數對比

主流網絡視音頻平臺點播服務的參數對比如表所示:

現有互聯網視音頻平臺參數對比

名稱

協議

封裝

視頻編碼

音頻編碼

播放器

CNTV

HTTP

MP4

H.264

AAC

Flash

CNTV(部分)

RTMP

FLV

H.264

AAC

Flash

華數TV

HTTP

MP4

H.264

AAC

Flash

優酷網

HTTP

FLV

H.264

AAC

Flash

土豆網

HTTP

F4V

H.264

AAC

Flash

56網

HTTP

FLV

H.264

AAC

Flash

音悅臺

HTTP

MP4

H.264

AAC

Flash

樂視網

HTTP

FLV

H.264

AAC

Flash

新浪視頻

HTTP

FLV

H.264

AAC

Flash

可以看出,點播服務普遍採用了HTTP作爲流媒體協議,H.264作爲視頻編碼格式,AAC作爲音頻編碼格式。採用HTTP作爲點播協議有以下兩點優勢:一方面,HTTP是基於TCP協議的應用層協議,媒體傳輸過程中不會出現丟包等現象,從而保證了視頻的質量;另一方面,HTTP被絕大部分的Web服務器支持,因而流媒體服務機構不必投資購買額外的流媒體服務器,從而節約了開支。點播服務採用的封裝格式有多種:MP4,FLV,F4V等,它們之間的區別不是很大。視頻編碼標準和音頻編碼標準是H.264和AAC。這兩種標準分別是當今實際應用中編碼效率最高的視頻標準和音頻標準。視頻播放器方面,無一例外的都使用了Flash播放器。

發佈了47 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章