音視頻相關(guān)基礎(chǔ)知識(shí)

前言

音視頻相關(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è)視頻文件的流程如下:

1.png

首先拿到的是一個(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.png

2. 封裝格式分析工具

Elecard Format Analyzer

3.png
  1. MPEG2-TS格式簡(jiǎn)介
    不包含文件頭,數(shù)據(jù)大小固定(188Byte)的TS Packet構(gòu)成。
4.png
  1. FLV格式簡(jiǎn)介
    包含文件頭,數(shù)據(jù)由大小不固定的Tag構(gòu)成。
5.png
6.png

視頻編碼數(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

7.png
H.264格式簡(jiǎn)介
  • 數(shù)據(jù)由不固定的NALU構(gòu)成
  • 最常見(jiàn)的情況下,1個(gè)NALU存儲(chǔ)了1幀畫(huà)面的壓縮編碼后的數(shù)據(jù)。
8.png
H.264壓縮方法
  • 比較復(fù)雜。包含了幀內(nèi)預(yù)測(cè)、幀間預(yù)測(cè)、熵編碼、環(huán)路濾波等環(huán)節(jié)構(gòu)成。
  • 可以將圖像數(shù)據(jù)壓縮100倍以上。
9.png

音頻編碼數(shù)據(jù)

音頻編碼后的常見(jiàn)數(shù)據(jù)格式有:AAC、AC-3、MP3、WMA

1. 音頻編碼的作用

將音頻采樣數(shù)據(jù)(PCM等)壓縮成為音頻碼流,從而降低音頻的數(shù)據(jù)量。

2. 音頻編碼分析工具

暫不涉及。

10.png
AAC格式簡(jiǎn)介

數(shù)據(jù)由大小不固定的ADTS構(gòu)成。

11.png
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è)分量組成。

12.png

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

13.png

從圖中可以看出,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ǔ)方式如圖所示:

14.png

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

15.png

音頻采樣數(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ù)。
16.png
17.png

展望

關(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)力,謝謝!

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

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

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