前言
音視頻相關(guān)的基礎(chǔ)知識(shí)網(wǎng)上層出不窮,我們要善于站在巨人的肩膀上去學(xué)習(xí),本篇博客將基于雷老師(雷霄驊)的博客以及講課ppt,如果沒(méi)有雷老師的無(wú)私奉獻(xiàn),就沒(méi)有我們寶貴的學(xué)習(xí)資料,愿老師在天堂能夠一路走好,也希望我們能夠注重勞逸結(jié)合,多休息!這里奉上老師的博客地址:
[總結(jié)]FFMPEG視音頻編解碼零基礎(chǔ)學(xué)習(xí)方法
好了,不要那么嚴(yán)肅了,回過(guò)來(lái),我們學(xué)習(xí)還是要繼續(xù)的,下面進(jìn)入正文:
視頻播放器原理
我們可能不知道,錄像、錄音,實(shí)質(zhì)上是一個(gè)壓縮采集到的圖像或者音頻數(shù)據(jù)的過(guò)程,這個(gè)過(guò)程又稱為編碼。那為什么需要編碼(壓縮)呢?因?yàn)樵O(shè)備采集到的音視頻數(shù)據(jù)太大了,如果不進(jìn)行壓縮,占用的空間太大,不利于傳輸?shù)取?br> 而播放視頻或者音頻文件,實(shí)質(zhì)上是一個(gè)解壓縮的過(guò)程,這個(gè)過(guò)程又稱為解碼。那為什么又要解碼(解壓縮)呢?因?yàn)椴シ牌鞑シ判枰氖且纛l采樣數(shù)據(jù)、視頻像素?cái)?shù)據(jù),通俗一點(diǎn)來(lái)說(shuō)就是需要的是編碼之前的數(shù)據(jù),所以需要解碼來(lái)獲取。
播放一個(gè)視頻文件的流程如下:

首先拿到的是一個(gè)封裝格式數(shù)據(jù),一般封裝格式為FLV、MKV、MP4等,也就是我們平常拿到的一個(gè)音視頻文件的后綴,這樣說(shuō),大家應(yīng)該了解了吧,原來(lái)這就是封裝格式啊。通過(guò)解封裝格式數(shù)據(jù)得到音頻壓縮數(shù)據(jù)和視頻壓縮數(shù)據(jù),再分別對(duì)其進(jìn)行處理,音頻壓縮數(shù)據(jù)進(jìn)行音頻解碼得到音頻采樣數(shù)據(jù),視頻壓縮數(shù)據(jù)進(jìn)行視頻解碼得到視頻像素?cái)?shù)據(jù),然后通過(guò)音視頻同步技術(shù),分別進(jìn)行音頻視頻的播放。
封裝格式
封裝格式常見(jiàn)的有:AVI、MP4、TS、FLV、MKV、RMVB
1. 封裝格式的作用
封裝格式的作用就是將視頻碼流和音頻碼流按照一定的格式存儲(chǔ)在一個(gè)文件中。也就是說(shuō)封裝格式相當(dāng)于一個(gè)容器,將視頻碼流和音頻碼流放在里面。

2. 封裝格式分析工具
Elecard Format Analyzer

- MPEG2-TS格式簡(jiǎn)介
不包含文件頭,數(shù)據(jù)大小固定(188Byte)的TS Packet構(gòu)成。

- FLV格式簡(jiǎn)介
包含文件頭,數(shù)據(jù)由大小不固定的Tag構(gòu)成。


視頻編碼數(shù)據(jù)
視頻編碼后的常見(jiàn)數(shù)據(jù)格式有:HEVC(H.265)、H264、MPEG4、MPEG2、VP9、VP8、VC-1
1. 視頻編碼的作用
將視頻像素?cái)?shù)據(jù)(RGB、YUV等)壓縮成為視頻碼流,從而降低視頻的數(shù)據(jù)量。
2. 視頻編碼的分析工具
Elecard Stream Eye

H.264格式簡(jiǎn)介
- 數(shù)據(jù)由不固定的NALU構(gòu)成
- 最常見(jiàn)的情況下,1個(gè)NALU存儲(chǔ)了1幀畫(huà)面的壓縮編碼后的數(shù)據(jù)。

H.264壓縮方法
- 比較復(fù)雜。包含了幀內(nèi)預(yù)測(cè)、幀間預(yù)測(cè)、熵編碼、環(huán)路濾波等環(huán)節(jié)構(gòu)成。
- 可以將圖像數(shù)據(jù)壓縮100倍以上。

音頻編碼數(shù)據(jù)
音頻編碼后的常見(jiàn)數(shù)據(jù)格式有:AAC、AC-3、MP3、WMA
1. 音頻編碼的作用
將音頻采樣數(shù)據(jù)(PCM等)壓縮成為音頻碼流,從而降低音頻的數(shù)據(jù)量。
2. 音頻編碼分析工具
暫不涉及。

AAC格式簡(jiǎn)介
數(shù)據(jù)由大小不固定的ADTS構(gòu)成。

AAC壓縮方法
比較復(fù)雜,暫不對(duì)其中的算法做過(guò)多介紹。
可以將音頻數(shù)據(jù)壓縮10倍以上。
視頻像素?cái)?shù)據(jù)
常見(jiàn)的視頻像素?cái)?shù)據(jù)格式有:RGB24、RGB32、YUV420P、YUV422P、YUV444P等。壓縮編碼中一般使用的是YUV格式的像素?cái)?shù)據(jù),最為常見(jiàn)的是YUV420P。
特點(diǎn)
視頻像素?cái)?shù)據(jù)體積很大,一般情況下1小時(shí)高清視頻的RGB24格式的數(shù)據(jù)體積為:
3600 * 25 * 1920 * 1080 * 3 = 559.9GByte
PS:這里假定幀率為25HZ,取樣精度8bit。
YUV格式像素?cái)?shù)據(jù)查看工具
YUV Player
RGB格式簡(jiǎn)介
R代表Red,G代表Green,B代表Blue,這三種顏色可以混合成世界上所有的顏色。彩色圖像中的每個(gè)點(diǎn),由R、G、B三個(gè)分量組成。

以RGB24為例,圖像像素?cái)?shù)據(jù)的存儲(chǔ)方式如下:

從圖中可以看出,RGB24依次存儲(chǔ)了每個(gè)像素點(diǎn)的R、G、B信息。
PS:BMP文件存儲(chǔ)的就是RGB格式的像素?cái)?shù)據(jù)。
YUV格式簡(jiǎn)介
相關(guān)實(shí)驗(yàn)表明,人眼對(duì)亮度敏感,而對(duì)色度不敏感。因而可以將亮度信息和色度信息分離,并對(duì)色度信息采用更“狠”一點(diǎn)的壓縮方案,從而提高壓縮效率。
YUV格式中,Y只包含亮度信息,而UV只包含色度信息。以YUV420P為例,圖像像素?cái)?shù)據(jù)的存儲(chǔ)方式如圖所示:

從圖中可以看出,YUV420P首先存儲(chǔ)了整張圖像的Y信息,然后存儲(chǔ)整張圖像的U信息,最后存儲(chǔ)整張圖像的V信息。

音頻采樣數(shù)據(jù)
常見(jiàn)的音頻采樣數(shù)據(jù)格式為:PCM。
特點(diǎn)
音頻采樣數(shù)據(jù)體積很大,一般情況下一首4分鐘的PCM格式的歌曲體積為:
4 * 60 * 44100 * 2 * 2 = 42.3MByte
PS:這里假定采樣率為44100,采樣精度為16bit。
音頻采樣數(shù)據(jù)查看工具
Adobe Audition
PCM格式簡(jiǎn)介
- 單聲道的情況下按照順序存儲(chǔ)每個(gè)采樣點(diǎn)的數(shù)據(jù)。
- 雙聲道的情況下按照“左右、左右”的順序存儲(chǔ)每個(gè)采樣點(diǎn)兩個(gè)聲道的數(shù)據(jù)。


展望
關(guān)于音視頻相關(guān)的知識(shí),實(shí)在是太多太多,所以我們不斷地學(xué)習(xí),不斷地積累,在工作中增加知識(shí),利用知識(shí)去服務(wù)于工作。
喜歡本篇博客的簡(jiǎn)友們,就請(qǐng)來(lái)一波點(diǎn)贊,您的每一次關(guān)注,將成為我前進(jìn)的動(dòng)力,謝謝!