初識__音視頻編解碼是怎么回事?

? ? 以前做視頻播放器開發(fā)的時候,只知道請求服務(wù)器,然后服務(wù)器返回一個播放串。這樣視頻就播放了 其它的操作比如UI定制 通知的跟蹤等.....這些都是UI層面上的東西,壓根跟音視頻編解碼就沒啥關(guān)系!但是有的同學(xué)去面試的時候。如果有做視頻相關(guān)項目的公司。就會被問到音視頻編解碼的知識點。很多人就瞬間石化了!記得14年去快播(那時候快播還沒有倒閉)面試iOS開發(fā)工程師的時候,面試官就問了我對音視頻編解碼的知識 很可惜的是我一句都答上!結(jié)果大家肯定都知道了。好了閑話就先扯到這里。下面就給大家簡單的介紹一下視頻播放的原理。以及現(xiàn)在主流的視頻編解碼格式 以及音頻編解碼格式。讓大家對視頻播放從編碼到播放有一個基礎(chǔ)的概念。


? ?喜歡看電影的朋友應(yīng)該都知道, 我們在一些網(wǎng)站上下載電影。由于下載的來源不同,這些電影文件有不同的格式,用不同的后綴表示:avi,rmvb,mp4,flv,mkv等......。在這里需要注意的是,這些格式代表的是封裝格式。何為封裝格式?就是把視頻數(shù)據(jù)和音頻數(shù)據(jù)打包成一個文件的規(guī)范。僅僅靠看文件的后綴,很難能看出具體使用了什么視音頻編碼標準??偟膩碚f,不同的封裝格式之間差距不大,各有優(yōu)劣。

? ? 注:有些封裝格式支持的視音頻編碼標準十分廣泛,應(yīng)該算比較優(yōu)秀的封裝格式,比如MKV;而有些封裝格式支持的視音頻編碼標準很少,應(yīng)該屬于落后的封裝格式,比如RMVB。

1 . 視頻播放的原理

? ? 音視頻技術(shù)主要包含以下幾點:封裝技術(shù),視頻壓縮編碼技術(shù) 以及 音頻壓縮編碼技術(shù)。如果考慮到網(wǎng)絡(luò)傳輸?shù)脑?,還包括流媒體協(xié)議技術(shù)。在這里不細說了,(還沒學(xué)到那里去等我了解了在告訴大家!) 僅簡要說明一下視頻播放器的原理。

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

? ? 解協(xié)議的作用,就是將流媒體協(xié)議的數(shù)據(jù),解析為標準的相應(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ù)。音頻的壓縮編碼標準包含AAC,MP3,AC-3等等,視頻的壓縮編碼標準則包含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)的顯卡和聲卡播放出來。


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

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

流媒體協(xié)議

? 流媒體協(xié)議是服務(wù)器與客戶端之間通信遵循的規(guī)定。當(dāng)前網(wǎng)絡(luò)上主要的流媒體協(xié)議如表所示。


RTSP+RTP經(jīng)常用于IPTV領(lǐng)域。因為其采用UDP傳輸視音頻,支持組播,效率較高。但其缺點是網(wǎng)絡(luò)不好的情況下可能會丟包,影響視頻觀看質(zhì)量。因而圍繞IPTV的視頻質(zhì)量的研究還是挺多的。

RTSP規(guī)范可參考:RTSP協(xié)議學(xué)習(xí)筆記

RTSP+RTP系統(tǒng)中衡量服務(wù)質(zhì)量可參考:網(wǎng)絡(luò)視頻傳輸?shù)姆?wù)質(zhì)量(QoS)

IPTV碼流分析可參考:IPTV視頻碼流分析

? 因為互聯(lián)網(wǎng)網(wǎng)絡(luò)環(huán)境的不穩(wěn)定性,RTSP+RTP較少用于互聯(lián)網(wǎng)視音頻傳輸?;ヂ?lián)網(wǎng)視頻服務(wù)通常采用TCP作為其流媒體的傳輸層協(xié)議,因而像RTMP,MMS,HTTP這類的協(xié)議廣泛用于互聯(lián)網(wǎng)視音頻服務(wù)之中。這類協(xié)議不會發(fā)生丟包,因而保證了視頻的質(zhì)量,但是傳輸?shù)男蕰鄬Φ鸵恍?/b>此外RTMFP是一種比較新的流媒體協(xié)議,特點是支持P2P。

RTMP協(xié)議學(xué)習(xí):RTMP流媒體技術(shù)零基礎(chǔ)學(xué)習(xí)方法

封裝格式?

??封裝格式的主要作用是把視頻碼流和音頻碼流按照一定的格式存儲在一個文件中?,F(xiàn)如今流行的封裝格式如下表所示:


由表可見,除了AVI之外,其他封裝格式都支持流媒體,即可以“邊下邊播”。有些格式更“萬能”一些,支持的視音頻編碼標準多一些,比如MKV。而有些格式則支持的相對比較少,比如說RMVB。這些封裝格式都有相關(guān)的文檔,在這里就不一一例舉了。

視頻編碼

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

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

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


? ? 由表可見,有兩種視頻編碼方案是最新推出的:VP9和HEVC。目前這兩種方案都處于研發(fā)階段,還沒有到達實用的程度。當(dāng)前使用最多的視頻編碼方案就是H.264。H.264僅僅是一個編碼標準,而不是一個具體的編碼器,H.264只是給編碼器的實現(xiàn)提供參照用的。

音頻編碼

?音頻編碼的主要作用是將音頻采樣數(shù)據(jù)(PCM等)壓縮成為音頻碼流,從而降低音頻的數(shù)據(jù)量。音頻編碼也是互聯(lián)網(wǎng)視音頻技術(shù)中一個重要的技術(shù)。但是一般情況下音頻的數(shù)據(jù)量要遠小于視頻的數(shù)據(jù)量,因而即使使用稍微落后的音頻編碼標準,而導(dǎo)致音頻數(shù)據(jù)量有所增加,也不會對視音頻的總數(shù)據(jù)量產(chǎn)生太大的影響。高效率的音頻編碼在同等的碼率下,可以獲得更高的音質(zhì)。

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


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

現(xiàn)有網(wǎng)絡(luò)視音頻平臺對比

?現(xiàn)有的網(wǎng)絡(luò)視音頻服務(wù)主要包括兩種方式:點播和直播。點播意即根據(jù)用戶的需要播放相應(yīng)的視頻節(jié)目,這是互聯(lián)網(wǎng)視音頻服務(wù)最主要的方式。絕大部分視頻網(wǎng)站都提供了點播服務(wù)。直播意即互聯(lián)網(wǎng)視音頻平臺直接將視頻內(nèi)容實時發(fā)送給用戶,目前還處于發(fā)展階段。直播在網(wǎng)絡(luò)電視臺,社交視頻網(wǎng)站較為常見。

?

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



可以看出,點播服務(wù)普遍采用了HTTP作為流媒體協(xié)議,H.264作為視頻編碼格式,AAC作為音頻編碼格式。采用HTTP作為點播協(xié)議有以下兩點優(yōu)勢:一方面,HTTP是基于TCP協(xié)議的應(yīng)用層協(xié)議,媒體傳輸過程中不會出現(xiàn)丟包等現(xiàn)象,從而保證了視頻的質(zhì)量;另一方面,HTTP被絕大部分的Web服務(wù)器支持,因而流媒體服務(wù)機構(gòu)不必投資購買額外的流媒體服務(wù)器,從而節(jié)約了開支。點播服務(wù)采用的封裝格式有多種:MP4,F(xiàn)LV,F(xiàn)4V等,它們之間的區(qū)別不是很大。視頻編碼標準和音頻編碼標準是H.264和AAC。這兩種標準分別是當(dāng)今實際應(yīng)用中編碼效率最高的視頻標準和音頻標準。視頻播放器方面,無一例外的都使用了Flash播放器。

? 這幾天看了好多的文章就整理了這么多。希望對大家掃盲有幫助!

最后編輯于
?著作權(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)容

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