音視頻開發(fā)基礎(chǔ)知識
音視頻開發(fā)基礎(chǔ)知識
數(shù)字圖像表示RGB表示:

RGB方式
對于一幅圖像,一般使用整數(shù)表示方法來進行描述,比如計算一張的RGB_888圖像的大小,可采用如下方式:
1280 * 7201280×720 * 3 = 2.637 MB,4分鐘就達到了15G的容量。
假如是一部90分鐘的電影,每秒25幀,則一部電影為
2.637MB90分鐘60秒*25FPS= 347.651GB
數(shù)字圖像表示YUV

用途:主要用于視頻信號的壓縮、傳輸和存儲,和向后相容老式
黑白電視。
其中“Y”表示明亮度(Luminance或Luma),也稱灰階值;
“U”和“V”表示的則是色度(Chrominance或Chroma)
作用是描述影像色彩及飽和度,用于指定像素的顏色。
YUV 格式:有兩大類:planar和packed。
? 對于planar的YUV格式,先連續(xù)存儲所有像素點的Y,緊接著存儲所有像素點的U,隨后是所有像素點的V。
? 對于packed的YUV格式,每個像素點的Y,U,V是連續(xù)交*存儲的。
? Libyuv,Google開源的實現(xiàn)各種YUV與RGB之間相互轉(zhuǎn)換、旋轉(zhuǎn)、縮放的庫。

YUV****存在多種格式,比如YUV420p,YUV420sp等,不同的YUV格式的數(shù)據(jù)在存儲時的排列順序是不一樣的,在開發(fā)的過程中必須非常注意,否則畫面會顯示不正常。比如花屏,綠屏等現(xiàn)象。

YUV 4:4:4采樣,每一個Y對應(yīng)一組UV分量。
YUV 4:2:2采樣,每兩個Y共用一組UV分量。
YUV 4:2:0采樣,每四個Y共用一組UV分量。
視頻的主要概念
視頻碼率:kb/s,是指視頻文件在單位時間內(nèi)使用的數(shù)據(jù)流量,也叫碼流率。碼率越大,說明單位時間內(nèi)取樣率越大,數(shù)據(jù)流精度就越高。
視頻幀率:fps,通常說一個視頻的25幀,指的就是這個視頻幀率,即1秒中會顯示25幀。幀率越高,給人的視覺就越流暢。
視頻分辨率:分辨率就是我們常說的640x480分辨率、1920x1080分辨率,分辨率影響視頻圖像的大小。
IPB幀的概念
I 幀(Intra coded frames):I幀不需要參考其他畫面而生成,解碼時僅
靠自己就重構(gòu)完整圖像;
? I幀圖像采用幀內(nèi)編碼方式;
? I幀所占數(shù)據(jù)的信息量比較大;
? I幀圖像是周期性出現(xiàn)在圖像序列中的,出現(xiàn)頻率可由編碼器選擇;
? I幀是P幀和B幀的參考幀(其質(zhì)量直接影響到同組中以后各幀的質(zhì)量);
? I幀是幀組GOP的基礎(chǔ)幀(第一幀),在一組中只有一個I幀;
? I幀不需要考慮運動矢量;
P 幀(Predicted frames:根據(jù)本幀與相鄰的前一幀(I幀或P幀)的不同點來壓縮本幀數(shù)據(jù),同時利用了空間和時間上的相關(guān)性。
? P幀屬于前向預(yù)測的幀間編碼。它需要參考前面最靠近它的I幀或P幀來解碼。 (多個參考幀的時候,遇到過11個參考幀)
B 幀(Bi-directional predicted frames):B 幀圖像采用雙向時間預(yù)測,可以大大提高壓縮倍數(shù)。


音頻基礎(chǔ)
數(shù)字聲音的表示:
顯示中我們能聽到的聲音是連續(xù)波的,但是在計算機中我們只能通過采樣來復(fù)原波形。

音頻的主要概念
采樣頻率:每秒鐘采樣的點的個數(shù)。常用的采樣頻率有:
22000(22kHz):無線廣播。
44100(44.1kHz):CD音質(zhì)。
48000(48kHz):數(shù)字電視,DVD。
96000(96kHz):藍光,高清DVD。
192000(192kHz):藍光,高清DVD。
采樣精度(采樣深度):每個“樣本點”的大小
常用的大小為8bit, 16bit,24bit。
通道數(shù):單聲道,雙聲道,四聲道,5.1聲道。
比特率:每秒傳輸?shù)腷it數(shù),單位為:bps(Bit Per Second)。
間接衡量聲音質(zhì)量的一個標(biāo)準(zhǔn)。
沒有壓縮的音頻數(shù)據(jù)的比特率 = 采樣頻率 ***** 采樣精度 ***** 通道數(shù)。
碼率: 壓縮后的音頻數(shù)據(jù)的比特率。常見的碼率:
96kbps:FM質(zhì)量
128-160kbps:一般質(zhì)量音頻。
192kbps:CD質(zhì)量。
256-320Kbps:高質(zhì)量音頻
碼率越大,壓縮效率越低,音質(zhì)越好,壓縮后數(shù)據(jù)越大。
碼率 = 音頻文件大小/時長。
幀:音頻的幀的概念沒有視頻幀那么清晰,幾乎所有視頻編碼格式都可以簡單的認(rèn)為一幀就是編碼后的一張圖像。
幀長:
(1)可以指每幀采樣數(shù)播放的時間, mp3 48k, 1152個采樣點,每幀則為
24ms;aac則是每幀是1024個采樣點。 攢夠一幀的數(shù)據(jù)才送去做編碼
(2)也可以指壓縮后每幀的數(shù)據(jù)長度。所以講到幀的時候要注意他適用的場合。
每幀持續(xù)時間(秒) = 每幀采樣點數(shù) / 采樣頻率(HZ)


封裝格式基礎(chǔ)
封裝格式(也叫容器)就是將已經(jīng)編碼壓縮好的視頻流、音頻流及字幕按照一定的方案放到一個文件中,便于播放軟件播放。
一般來說,視頻文件的后綴名就是它的封裝格式。
封裝的格式不一樣,后綴名也就不一樣。
比如:同樣的陷可以做成餃子也可以做成包子。對于視頻也是一個道理,同樣的音視頻流可以用不同容器來承載。



H264+AAC封裝為FLV或MP4是最為流行的模式
音視頻同步基礎(chǔ)
音視頻同步概念
DTS(Decoding Time Stamp):即解碼時間戳,這個時間戳的意義在于告訴播放器該在什么時候解碼這一幀的數(shù)據(jù)。
PTS(Presentation Time Stamp):即顯示時間戳,這個時間戳用來告訴播放器該在什么時候顯示這一幀的數(shù)據(jù)。
當(dāng)視頻流中沒有 B 幀時,通常 DTS 和 PTS 的順序是一致的。但存在B幀的時候兩者的順序就不一致了。
音視頻同步方式
Audio Master:同步視頻到音頻
Video Master:同步音頻到視頻
External Clock Master:同步音頻和視頻到外部時鐘
一般情況下 Audio Master > External Clock Master > Video Master

浙公網(wǎng)安備 33010602011771號