音視頻基礎(chǔ)

一、視頻播放器原理

視音頻技術(shù)主要包含以下幾點:封裝技術(shù),視頻壓縮編碼技術(shù)以及音頻壓縮編碼技術(shù)。如果考慮到網(wǎng)絡(luò)傳輸?shù)脑挘€包括流媒體協(xié)議技術(shù)。

視頻播放器播放一個互聯(lián)網(wǎng)上的視頻文件,需要經(jīng)過以下幾個步驟:解協(xié)議,解封裝,解碼視音頻,視音頻同步。如果播放本地文件則不需要解協(xié)議,為以下幾個步驟:解封裝,解碼視音頻,視音頻同步。他們的過程如圖所示:


視頻播放器原理.png

解協(xié)議的作用,就是將流媒體協(xié)議的數(shù)據(jù),解析為標(biāo)準(zhǔn)的相應(yīng)的封裝格式數(shù)據(jù)。視音頻在網(wǎng)絡(luò)上傳播的時候,常常采用各種流媒體協(xié)議,例如HTTP,RTMP,或是MMS等等。這些協(xié)議在傳輸視音頻數(shù)據(jù)的同時,也會傳輸一些信令數(shù)據(jù)。這些信令數(shù)據(jù)包括對播放的控制(播放,暫停,停止),或者對網(wǎng)絡(luò)狀態(tài)的描述等。解協(xié)議的過程中會去除掉信令數(shù)據(jù)而只保留視音頻數(shù)據(jù)。例如,采用RTMP協(xié)議傳輸?shù)臄?shù)據(jù),經(jīng)過解協(xié)議操作后,輸出FLV格式的數(shù)據(jù)。

解封裝的作用,就是將輸入的封裝格式的數(shù)據(jù),分離成為音頻流壓縮編碼數(shù)據(jù)和視頻流壓縮編碼數(shù)據(jù)。封裝格式種類很多,例如MP4,MKV,RMVB,TS,F(xiàn)LV,AVI等等,它的作用就是將已經(jīng)壓縮編碼的視頻數(shù)據(jù)和音頻數(shù)據(jù)按照一定的格式放到一起。例如,F(xiàn)LV格式的數(shù)據(jù),經(jīng)過解封裝操作后,輸出H.264編碼的視頻碼流和AAC編碼的音頻碼流。

解碼的作用,就是將視頻/音頻壓縮編碼數(shù)據(jù),解碼成為非壓縮的視頻/音頻原始數(shù)據(jù)。音頻的壓縮編碼標(biāo)準(zhǔn)包含AAC,MP3,AC-3等等,視頻的壓縮編碼標(biāo)準(zhǔn)則包含H.264,MPEG2,VC-1等等。解碼是整個系統(tǒng)中最重要也是最復(fù)雜的一個環(huán)節(jié)。通過解碼,壓縮編碼的視頻數(shù)據(jù)輸出成為非壓縮的顏色數(shù)據(jù),例如YUV420P,RGB等等;壓縮編碼的音頻數(shù)據(jù)輸出成為非壓縮的音頻抽樣數(shù)據(jù),例如PCM數(shù)據(jù)。

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

二、相關(guān)知識點

1、幀率

是用于測量顯示幀數(shù)的量度。所謂的測量單位為每秒顯示的幀數(shù)。每秒顯示幀數(shù)或者幀率表示圖形處理器處理場時每秒能夠更新的次數(shù)。30fps就是可以接受的,60fps則可以明顯提升交互感和逼真感,但超過75fps就不容易察覺有明顯的流暢度提升了。如果幀率超過屏幕刷新率,則會浪費圖像的處理能力。

2、刷新率

刷新率是指屏幕每秒畫面被刷新的次數(shù),刷新率分為垂直刷新率和水平刷新率,一般提到的刷新率通常是指垂直刷新率。垂直刷新率表示屏幕上圖像每秒重繪多少次,也就是每秒屏幕刷新的次數(shù),以Hz為單位。刷新率越高,圖像就越穩(wěn)定,圖像顯示就越自然清晰,對眼睛的影響也越小。達到80Hz以上的刷新率就可以完全消除圖像閃爍和抖動感。

3、編碼格式

編碼的目的是壓縮數(shù)據(jù)量,采用編碼算法壓縮冗余數(shù)據(jù)。(MPEG、H.26X)

4、 封裝格式

把編碼后的音視頻數(shù)據(jù)以一定格式封裝到一個容器中,封裝格式有mkv、avi、ts等。

5、碼率

碼率也就是比特率,比特率是單位時間播放連續(xù)的媒體(如壓縮后的音頻或視頻)的比特數(shù)量。比特率越高,帶寬消耗得越多。比特(bit)0或1

                           文件大?。╞) =  碼率(b/s) * 時長(s)

6、畫質(zhì)與碼率

視頻質(zhì)量和碼率、編碼算法都有關(guān)系。

7、DTS 與 PTS

DTS: 即 Decode Time Stamp,是標(biāo)識讀入內(nèi)存中bit流在什么時候開始送入解碼器中進行解碼。也就是解碼順序的時間戳。

PTS: 即Presentation Time Stamp,主要用于度量解碼后的視頻幀什么時候被顯示出來

8、視頻幀和音頻幀

常見的視頻幀有I、P、B幀等

I 幀表示關(guān)鍵幀,可以理解為這一幀畫面的完整保留,解碼時只需要本幀數(shù)據(jù)就可以完成(因為包含完整畫面)

P 幀表示的是這一幀和之前的一個關(guān)鍵幀(或P幀)的差別,解碼時需要用之前緩存的畫面疊加上本幀定義的差別生成最終畫面。(也就是差別幀,P幀沒有完整畫面數(shù)據(jù),只有與前一幀的畫面差別的數(shù)據(jù))

B 幀是雙向差別幀,也就是B幀記錄的是本幀和前后幀的差別,通過前后畫面數(shù)據(jù)與本幀數(shù)據(jù)的疊加取得最終的畫面。B幀壓縮率高,但解碼時CPU比較吃力。

音頻幀的概念沒有那么清晰,跟音頻編碼格式相關(guān),它是各個編碼標(biāo)準(zhǔn)自己實現(xiàn)的。

PCM(未經(jīng)編碼的音頻數(shù)據(jù))來說,它根本就不需要幀的概念,根據(jù)采樣率和采樣精度就可以播放,比如采樣率為44.1kHz,采樣進度為16位的音頻,你可以算出比特率是4410016kb/s,每秒的音頻數(shù)據(jù)是固定的4410016/8字節(jié)。

AMR幀比較簡單,它規(guī)定每20ms的音頻為一幀,每一幀音頻都是獨立的,有可能采用不同的編碼算法以及不同的編碼參數(shù)。

MP3幀較復(fù)雜,包含更多信息,比如采樣率、比特率等各種參數(shù)。音頻數(shù)據(jù)幀個數(shù)由文件大小和幀長決定,每一幀的長度可能不固定,也可能固定,由比特率決定,每一幀又分為幀頭和數(shù)據(jù)實體兩部分,幀頭記錄了MP3的比特率、采樣率、版本等信息,每一幀之間相互獨立。

9、采樣率

每秒音頻采樣點個數(shù)(8000/44100Hz),采樣單位用Hz表示。

三、視頻封裝格式

格式 全名 開發(fā)商 初版年限 特點
MP4 MP4 Moving Picture Experts Group,即 MPEG(動態(tài)圖像專家組) 1998 常用有損壓縮格式,通用性強
AVI Audio Video Interleaved(音頻視頻交錯格式) 微軟 1992 體積大算法簡單
MOV QuickTime 影片格式 Apple 1991 蘋果專屬格式對很多其他的播放器支持不是很友好
WMV Windows Media Video 微軟 2003 微軟的專業(yè)視頻格式,兼容性并不是很好
FLV Adobe Flash 網(wǎng)絡(luò)流媒體格式 Adobe 2002 被淘汰的早期網(wǎng)絡(luò)視頻格式
MKV Matroska 多媒體容器 Matroska.org 2002 最有包容性的視頻格式,能容納無限量、多種不同類型編碼的視頻、音頻及字幕流
WebM WebM Google 2010 谷歌推出的 HTML5 標(biāo)準(zhǔn)的網(wǎng)絡(luò)視頻標(biāo)準(zhǔn),以MKV容器格式為基礎(chǔ)開發(fā)
RMVB RMVB Real Networks 1997 根據(jù)不同的網(wǎng)絡(luò)傳輸速率,而制定出不同的壓縮比率,從而實現(xiàn)在低速率的網(wǎng)絡(luò)上進行影像數(shù)據(jù)實時傳送和播放,具有體積小,畫質(zhì)不錯的優(yōu)點。已過時。

四、視頻編碼格式

名稱 推出機構(gòu) 推出時間 目前使用領(lǐng)域
HEVC(H.265) MPEG/ITU-T 2013 研發(fā)中
H.264 MPEG/ITU-T 2003 各個領(lǐng)域
MPEG4 MPEG 2001 不溫不火
MPEG2 MPEG 1994 數(shù)字電視
VP9 Google 2013 研發(fā)中
VP8 Google 2008 不普及
VC-1 Microsoft Inc. 2006 微軟平臺

1. MPEG:(Moving Picture Experts Group, ISO旗下的組織)

MPEG是Moving Picture Experts Group的簡稱。這個名字本來的含義是指一個研究視頻和音頻編碼標(biāo)準(zhǔn)的“動態(tài)圖像專家組”組織,成立于1988年,致力開發(fā)視頻、音頻的壓縮編碼技術(shù)。

版本 用途
MPEG - 1 VCD
MPEG - 2 DVD、數(shù)字有線電視信號
MPEG - 4(第二部分) 視頻電話、網(wǎng)絡(luò)傳輸、廣播和媒體存儲

2. H.26X: ITU-T VCEG(Visual Coding Experts Group,國際電聯(lián)旗下的標(biāo)準(zhǔn)化組織)制定

版本 用于
H.261 老的視頻會議和視頻電話產(chǎn)品
H.262 DVD、數(shù)字有線電視信號(與MPEG共同制定,與MPEG-2完全一致)
H.263 視頻會議、視頻電話和網(wǎng)絡(luò)視頻
H.264 高精度視頻的錄制、壓縮和發(fā)布格式(與MPEG-4第十部分完全一致),當(dāng)前主流
H.265 H.264的兩倍之壓縮率,可支持4K分辨率甚至到超高畫質(zhì)電視,最高分辨率可達到8192×4320(8K分辨率)

3. H.264

當(dāng)前主流的編碼格式是H.264,這是由ITU-T VCEG和MPEG共同制定的標(biāo)準(zhǔn),MPEG - 4第十部分內(nèi)容也是H.264。

視頻封裝格式 & 視頻編碼格式

封裝格式是提供了一個容器,用于存放視頻、音頻以及其他配置信息,而編碼格式是指對視頻畫面內(nèi)容進行壓縮的一種標(biāo)準(zhǔn)

六、音頻格式

  • WAV:因其文件擴展名為wav,微軟和IBM聯(lián)合開發(fā)的標(biāo)準(zhǔn),數(shù)據(jù)本身的格式為PCM或壓縮型,屬于無損格式。
  • MP3 : MP3是一種音頻壓縮技術(shù),其全稱是動態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面3(Moving Picture Experts Group Audio Layer III),簡稱為MP3。壓縮比4:1~10:1之間。
  • AAC:Advanced Audio Coding, 出現(xiàn)于1997年,由Fraunhofer IIS、杜比實驗室、AT&T、Sony、Nokia等公司共同開發(fā)。AAC壓縮比通常為18:1。相比MP3,采用更高效的編碼算法,音質(zhì)更佳,文件更小。
  • Opus:Opus格式是一個開放格式,使用上沒有任何專利或限制,比MP3、AAC、HE-AAC等常見格式,有更低的延遲和更好的聲音壓縮率。2012年7月2日,Opus被IETF批準(zhǔn)用于標(biāo)準(zhǔn)化。

七、H.264編碼介紹

IPB幀

I幀:幀內(nèi)編碼幀(intra picture),采用幀內(nèi)壓縮去掉空間冗余信息。
P幀:前向預(yù)測編碼幀(predictive-frame),通過將圖像序列中前面已經(jīng)編碼幀的時間冗余信息來壓縮傳輸數(shù)據(jù)量的編碼圖像。參考前面的I幀或者P幀。
B幀:雙向預(yù)測內(nèi)插編碼幀(bi-directional interpolated prediction frame),既考慮源圖像序列前面的已編碼幀,又顧及源圖像序列后面的已編碼幀之間的冗余信息,來壓縮傳輸數(shù)據(jù)量的編碼圖像,也稱為雙向編碼幀。參考前面一個的I幀或者P幀及其后面的一個P幀。

PTS和DTS

DTS(Decoding Time Stamp)是標(biāo)識讀入內(nèi)存中bit流在什么時候開始送入解碼器中進行解碼。也就是解碼順序的時間戳。
PTS(Presentation Time Stamp)用于度量解碼后的視頻幀什么時候被顯示出來。在沒有B幀的情況下,DTS和PTS的輸出順序是一樣的,一旦存在B幀,PTS和DTS則會不同。也就是顯示順序的時間戳。
GOP即Group of picture(圖像組),指兩個I幀之間的距離,Reference(參考周期)指兩個P幀之間的距離。

一個I幀所占用的字節(jié)數(shù)大于一個P幀,一個P幀所占用的字節(jié)數(shù)大于一個B幀。所以在碼率不變的前提下,GOP值越大,P、B幀的數(shù)量會越多,平均每個I、P、B幀所占用的字節(jié)數(shù)就越多,也就更容易獲取較好的圖像質(zhì)量;Reference越大,B幀的數(shù)量越多,同理也更容易獲得較好的圖像質(zhì)量。

簡而言之:
字節(jié)大小:I > P > B
解碼順序:I -> P -> B


gop解碼.png

八、視頻像素數(shù)據(jù)格式 RGB、YUV

YUV

YUV顏色的表示方法 “Y”表示亮度,“ U”表示色度,“V”表示飽和度。視頻中常用的YUV格式有YUV420,YUV444,YUV422。這些個格式代表的是YUV分量的比例,下面還可以細(xì)分很多格式。像YUV420又可以分為兩種:YUV420P和YUV420SP,android的相機默認(rèn)圖像格式NV21屬于YUV420SP格式。
YUV 4:2:0采樣,每四個Y共用一組UV分量,一個YUV占1.5個字節(jié)。
YUV 4:2:2采樣,每兩個Y共用一組UV分量,一個YUV占 2個字節(jié)。
YUV 4:4:4采樣,每一個Y對應(yīng)一組UV分量,一個YUV占3個字節(jié)。

1.YUV420P:(YU12(Android平臺下叫I420格式)和YV12)一幀YUV420P(YU12)像素數(shù)據(jù),包含wh3/2 Byte的數(shù)據(jù),前wh Byte存儲Y分量,接著wh 1/4存儲U,最后wh1/4存儲的是V。一幀YUV420P的圖像Y:U:V = 4 :1:1
2.YUV444P:一幀YUV444P像素數(shù)據(jù)包含wh3 Byte的數(shù)據(jù)。前wh Byte存儲Y,接著的wh Byte存儲U,最后wh Byte存儲V。一幀YUV420P的圖像Y:U:V = 1:1:1

YUV420 數(shù)據(jù)存儲方式
Y Y Y Y Y Y           Y Y Y Y Y Y           Y Y Y Y Y Y           Y Y Y Y Y Y
Y Y Y Y Y Y           Y Y Y Y Y Y           Y Y Y Y Y Y           Y Y Y Y Y Y
Y Y Y Y Y Y           Y Y Y Y Y Y           Y Y Y Y Y Y           Y Y Y Y Y Y
Y Y Y Y Y Y           Y Y Y Y Y Y           Y Y Y Y Y Y           Y Y Y Y Y Y
U U U U U U           V V V V V V           U V U V U V           V U V U V U
V V V V V V           U U U U U U           U V U V U V           V U V U V U
   (I420)                (YV12)                (N12)                 (NV21)

RGB

RGB相信大家都比較熟悉,他是顏色的三原色,“R”代表紅色,“G”代表綠色,“B”代表藍色,不同的分量顏色值搭配可以表示不同的顏色。
RGB24像素數(shù)據(jù),RGB的分量是怎樣存儲的呢。上述我們YUV420P的存儲分量是分開存儲的(平面方式),而RGB每個像素的三個分量是連續(xù)存儲的(打包方式)。一幀RGB24數(shù)據(jù)格式的圖像,包含wh3Byte的數(shù)據(jù),存儲的順序是第一個像素(8bit)R,(8bit)G,(8bit)B接著存儲下一個像素點(8bit)R,(8bit)G,(8bit)B這樣一次存儲下去的。
小結(jié):數(shù)據(jù)的存在格式可以分為packed(打包)和planar(平面)兩種,上述的YUV420P,YUV444P就是屬于平面的存儲方式,RGB24屬于打包的存儲方式。YUV420(NV12、NV21)的數(shù)據(jù)存儲既有平面又有打包,Y平面,UV打包,即Y信息存儲在一個數(shù)組中,UV信息存儲在一個矩陣中。了解了最基礎(chǔ)的像素數(shù)據(jù)格式以及存儲的分量的位置,便可以去處理操作圖像。

九、音頻采樣數(shù)據(jù)PCM

PCM它是由模擬信號經(jīng)過采樣、量化、編碼轉(zhuǎn)換成的標(biāo)準(zhǔn)數(shù)字音頻數(shù)據(jù)。
來了解一下PCM重要的屬性:
1.Sample Rate : 采樣率(一秒鐘采樣點的個數(shù))8kHz,44.1kHz(CD音質(zhì)),48kHz
2.Sample Size : 位寬度 8-bit,16-bit 一個點所占的bit位,位寬度越高聲音保真度越高
3.Channels : 通道個數(shù),包含立體聲和單聲道兩種類型,立體聲包含左聲道和右聲道
PCM數(shù)據(jù)存入的循序。如果是單聲道的音頻文件,采樣數(shù)據(jù)按時間的先后順序依次存入,如果是雙聲道的話就按照LRLRLR的方式存儲。


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

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

  • 音視頻之所以叫音視頻是因為他由音頻和視頻構(gòu)成,我們平時看的視頻其實就是音視頻。本文將記錄筆者在學(xué)習(xí)音視頻遇到的概念...
    Seacen_Liu閱讀 3,301評論 1 3
  • 一、音視頻播放原理 雷霄驊雷神的[總結(jié)]視音頻編解碼技術(shù)零基礎(chǔ)學(xué)習(xí)方法 音視頻知識小結(jié) 如圖所示,視頻播放器播放一...
    Theendisthebegi閱讀 3,191評論 4 21
  • 小日子一天一天的過~ 有期待,有等待,有開心,有失落,有滿足~ 輝輝陳洋去杭州了,在路上的我們會越來越優(yōu)秀,身邊還...
    夏天的名字被用了閱讀 102評論 0 0
  • 大家好,上一篇文章我和大家分享了要做時間的主人,只有充分合理的利用時間才能干成事。 看看下面三個例子: 1.司馬遷...
    興東Xindo閱讀 268評論 0 0

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