iOS-FFmpeg學(xué)習(xí)筆記(二)

視頻播放器原理

視頻播放原理.jpg

視頻播放器播放一個網(wǎng)上文件主要進(jìn)過以下幾個流程:

  • 解協(xié)議
  • 封裝格式數(shù)據(jù)
  • 解封裝
  • 視/音頻壓縮數(shù)據(jù)
  • 視/音頻解碼
  • 得到視/音頻原始數(shù)據(jù)
  • 視音頻同步
  • 將視頻音頻數(shù)據(jù)送至系統(tǒng)的顯卡和聲卡播放出來

解協(xié)議

解協(xié)議的作用就是將流媒體協(xié)議的數(shù)據(jù),解析為標(biāo)準(zhǔn)的相應(yīng)的封裝數(shù)據(jù)格式。視音頻在網(wǎng)絡(luò)上傳播的時候,常常采用各種流媒體協(xié)議,比如:HTTP、RTMP、MMS等等;這些協(xié)議在傳輸音視頻的同時,也會傳輸一些信令數(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、FLV、AVI等等,他的作用就是將已經(jīng)壓縮編碼的視頻數(shù)據(jù)和音頻數(shù)據(jù)按照一定的格式放到一起,例如:將FLV格式的數(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)的聲卡和顯卡播放出來。

流媒體協(xié)議

C29C8FEF-547E-4E0E-B7AF-4D0F7BB4DB44.png
  • 互聯(lián)網(wǎng)視頻服務(wù)通常采用TCP作為其流媒體的傳輸層協(xié)議,因而像RTMP,MMS,HTTP這類的協(xié)議廣泛用 于互聯(lián)網(wǎng)視音頻服務(wù)之中;這類協(xié)議不會發(fā)生丟包,因而保證了視頻的質(zhì)量,但是傳輸?shù)男蕰鄬Φ鸵恍?/li>

封裝格式

封裝格式.png
  • 值得注意除了AVI不支持流媒體外,不支持音視頻編碼,其他的格式都是支持,即可以實現(xiàn)邊下載邊播放的功能。

視頻編碼

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

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

主流編碼標(biāo)準(zhǔn)

  • H.264僅僅是一個編碼標(biāo)準(zhǔn),而不是一個具體的編碼器,H.264只是給編碼器的實現(xiàn)提供參照。
    在學(xué)習(xí)視頻編碼的時候,可能會用到各種編碼器(實際上就是一個exe文件),他們常用的編碼命令可以參 考:各種視頻編碼器的命令行格式

  • 學(xué)習(xí)H.264最標(biāo)準(zhǔn)的源代碼,就是其官方標(biāo)準(zhǔn)JM了。但是要注意,JM速度非常的慢,是無法用于實際的:H.264參考軟件JM12.2RC代碼詳細(xì)流程
    實際中使用最多的就是x264了,性能強悍(超過了很多商業(yè)編碼器),而且開源。其基本教程網(wǎng)上極多,不再贅述。編碼時候可參考:x264編碼指南——碼率控制。編碼后統(tǒng)計值的含義:X264輸出的統(tǒng)計值的含義(X264 Stats Output)
    Google推出的VP8屬于和H.264同一時代的標(biāo)準(zhǔn)??傮w而言,VP8比H.264要稍微差一點。有一篇寫的很好的VP8的介紹文章:深入了解 VP8。除了在技術(shù)領(lǐng)域,VP8和H.264在專利等方面也是打的不可開交,可參考文章:WebM(VP8) vs H.264
    此外,我國還推出了自己的國產(chǎn)標(biāo)準(zhǔn)AVS,性能也不錯,但目前比H.264還是要稍微遜色一點。不過感覺我國在視頻編解碼領(lǐng)域還算比較先進(jìn)的,可參考:視頻編碼國家標(biāo)準(zhǔn)AVS與H.264的比較(節(jié)選)
    近期又推出了AVS新一代的版本AVS+,具體的性能測試還沒看過。不過據(jù)說AVS+得到了國家政策上非常強力的支持。

  • 繼H.264和VP8之后又推出新一代編碼標(biāo)準(zhǔn)HEVC和VP9。

音頻編碼

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

現(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)站較為常見。

直播平臺參數(shù)對比

直播平臺參數(shù).jpg
  • 可以看出,直播服務(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)用中編碼效率最高的視頻編碼標(biāo)準(zhǔn),AAC則是當(dāng)今實際應(yīng)用中編碼效率最高的音頻編碼標(biāo)準(zhǔn)。視頻播放器方面,都使用了Flash播放器。(H.265和VP9不做討論)

點播平臺參數(shù)對比

點播平臺參數(shù).jpg
  • 可以看出,點播服務(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ū)別不是很大。視頻編碼標(biāo)準(zhǔn)和音頻編碼標(biāo)準(zhǔn)是H.264和AAC。這兩種標(biāo)準(zhǔn)分別是當(dāng)今實際應(yīng)用中編碼效率最高的視頻標(biāo)準(zhǔn)和音頻標(biāo)準(zhǔn)。視頻播放器方面,無一例外的都使用了Flash播放器。(H.265和VP9不做討論)

以上就是視頻播放器原理以及你需要了解哪些知識。

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