目錄
- 序言
- 聲音的物理性質
- 數(shù)字音頻
- 音頻編碼
- 圖像的物理現(xiàn)象
- 圖像的數(shù)值表示
- 視頻的編碼方式
一 序言
音視頻技術是為了記錄闸度,存儲和回放聲學現(xiàn)象才發(fā)明的寸痢。
當人類有了記錄以及存儲聲音的能力后鸿染,就迎來了模擬信號
到數(shù)字信號
的轉換板祝。
二 聲音的物理性質
2.1 聲音是波
聲音是由物體振動而產(chǎn)生的肛循。
聲音是一種壓力波,當演奏樂器蚊夫、 拍打一扇門或者敲擊桌面時诉字,它們的振動都會引起空氣有節(jié)奏的振動, 使周圍的空氣產(chǎn)生疏密變化这橙,形成疏密相間的縱波(可以理解為石頭落入水中激起的波紋)奏窑,由此就產(chǎn)生了聲波,這種現(xiàn)象會一直延續(xù)到振動 消失為止屈扎。
2.2 聲波的三要素
聲波的三要素是頻率
埃唯、振幅
和波形
- 頻率代表音階的高低
- 振幅代表響度
- 波形代表音色
分貝常用于描述響度的大小
波 的形狀決定了其所代表聲音的音色
2.3 聲音的傳播介質
聲音的傳播介質 很廣,它可以通過空氣鹰晨、液體和固體進行傳播;而且介質不同墨叛,傳播的 速度也不同止毕。
聲音在真空中是無法傳播的。
2.4 共鳴
聲音的傳播過程也是一種能量的傳播過程漠趁。
三 數(shù)字音頻
本節(jié)將分3個概念對數(shù)字音頻進行講解扁凛, 分別是采樣
、量化
和編碼
闯传。
3.1 采樣
所謂采樣
就是在時間軸上對信號進行數(shù)字化
谨朝。根據(jù)奈奎斯特定理(也稱為采樣定 理),按比聲音最高頻率高2倍以上的頻率對聲音進行采樣(也稱為AD 轉換)
對于高質量的音頻信號甥绿,其頻率范圍(人耳 能夠聽到的頻率范圍)是20Hz~20kHz
字币,所以采樣頻率一般為 44.1kHz
。
44.1kHz
就是代表1秒會采樣44100
次共缕。
3.2 量化
具體的每個采樣又該如何表示呢?
這就涉及將要講解的第二個概念:量化
洗出,量化是指在幅度軸上對信號進行數(shù)字化。
3.3 編碼
既然每一個量化
都是一個采樣
图谷,那么這么多的采樣該如何進行存儲
呢?
這就涉及將要講解的第三個概念:編碼
翩活。所謂編碼,就是按照一定的格式記錄采樣
和量化
后的數(shù)字數(shù)據(jù)便贵,比如順序存儲
或壓縮存儲
等菠镇。
這里面涉及了很多種格式,通常所說的音頻
的裸數(shù)據(jù)
格式就是脈沖 編碼調制(Pulse Code Modulation嫉沽,PCM
)數(shù)據(jù)辟犀。
描述一段PCM數(shù)據(jù)一 般需要以下幾個概念:量化格式
(sampleFormat)俏竞、采樣率
(sampleRate)绸硕、聲道數(shù)
(channel)。
以CD的音質為例:
1.量化格式(有的地方描述為位深度)為16比特(2字節(jié))
2.采樣率為44100
3.聲道數(shù)為 2
這些信息就描述了CD的音質魂毁。而對于聲音格式玻佩,還有一個概念用來描述它的大小,稱為數(shù)據(jù)比特
率席楚,即1秒時間內的比特數(shù)目
咬崔,它用于衡 量音頻數(shù)據(jù)單位時間內的容量大小。而對于CD音質的數(shù)據(jù)烦秩,比特率為 多少呢?計算如下
44100 * 16 * 2 = 1378.125kbps
分貝是用來表示聲音強度
的單位垮斯。所謂分貝是指兩個相同的 物理量(例如,A1和A0)之比取以10為底的對數(shù)并乘以10(或20)只祠, 即:
N = 10 * lg(A1 / A0)
四 音頻編碼
壓縮算法包括有損壓縮和無損壓縮兜蠕。
根據(jù)不同的應用場景(包括存儲設備、傳輸網(wǎng)絡環(huán)境抛寝、播放設備 等)熊杨,可以選用不同的壓縮編碼算法曙旭,如PCM
、WAV
晶府、AAC
桂躏、MP3
、 Ogg
等川陆。
壓縮編碼的原理實際上是壓縮掉冗余信號
剂习,冗余信號是指不能被人 耳感知到的信號,包含人耳聽覺范圍之外的音頻信號以及被掩蔽掉的音 頻信號等较沪。
下面介紹幾種常用的壓縮編碼格式进倍。
WAV編碼
WAV編碼的一種實現(xiàn)(有多種實現(xiàn)方 式,但是都不會
進行壓縮操作)就是在PCM數(shù)據(jù)格式的前面加上44字節(jié)购对,分別用來描述PCM的采樣率
猾昆、聲道數(shù)
、數(shù)據(jù)格式
等信息骡苞。
-
特點
:音質非常好垂蜗,大量軟件都支持。 -
適用場合
:多媒體開發(fā)的中間文件解幽、保存音樂和音效素材贴见。
MP3編碼
MP3
具有不錯的壓縮比
,使用LAME
編碼(MP3編碼格式的一種實 現(xiàn))的中高碼率的MP3文件躲株,聽感上非常接近源WAV
文件片部。
-
特點
音質在128Kbit/s以上表現(xiàn)還不錯,壓縮比比較高霜定,大量軟件和硬件都支持档悠,兼容性好。 -
適用場合
高比特率下對兼容性有要求的音樂欣賞望浩。
AAC編碼
AAC
是新一代的音頻有損壓縮技術辖所,它通過一些附加的編碼技術 (比如PS
、SBR
等)磨德,衍生出了LC-AAC
缘回、HE-AAC
、HE-AAC v2
三種 主要的編碼格式典挑。
-
特點
在小于128Kbit/s的碼率下表現(xiàn)優(yōu)異酥宴,并且多
用于視頻中的音 頻編碼。 -
適用場合
128Kbit/s以下的音頻編碼您觉,多用于視頻中音頻軌的編碼拙寡。
Ogg編碼
Ogg是一種非常有潛力的編碼,在各種碼率下都有比較優(yōu)秀的表現(xiàn)顾犹,尤其是在中低碼率場景下倒庵。
-
特點
可以用比MP3更小的碼率實現(xiàn)比MP3更好的音質褒墨,高中低碼 率下均有良好的表現(xiàn),兼容性不夠好擎宝,流媒體特性不支持郁妈。 -
適用場合
語音聊天的音頻消息場景。
五 圖像的物理現(xiàn)象
紅綠藍三種色光無法被 分解绍申,故稱為三原色光噩咪。
六 圖像的數(shù)值表示
6.1 RGB表示方式
那么像素里面的子像素又該如何表 示呢?常用的表示方式有以下幾種。
整數(shù)表示:取值范圍為0255或者00FF极阅,8個比特表示一個子像素胃碾,32個比特表示一個像素,這就是類似于某些平臺上表示圖像格式的 RGBA_8888
數(shù)據(jù)格式筋搏。
對于一幅圖像仆百,一般使用整數(shù)表示方法來進行描述,比如計算一張 1280×720的RGBA_8888圖像的大小奔脐,可采用如下方式:
1280 * 720 * 4 = 3.516MB
比如JPEG
壓縮:JPEG是 靜態(tài)圖像壓縮標準俄周,由ISO制定。
6.2 YUV表示方式
對于視頻幀的裸數(shù)據(jù)
表示髓迎,其實更多的是YUV
數(shù)據(jù)格式的表示峦朗, YUV主要應用于優(yōu)化
彩色視頻信號的傳輸,使其向后兼容老式黑白電 視排龄。
與RGB
視頻信號傳輸相比波势,它最大的優(yōu)點
在于只需要占用極少的頻 寬(RGB要求三個獨立的視頻信號同時傳輸)。
Y
表示明亮度
(Luminance或Luma)橄维,也稱灰階值尺铣。
U
和V
表示的則是色度
(Chrominance或Chroma),它們的作用是描述影像的色彩及飽和度挣郭, 用于指定像素的顏色迄埃。
之所以采用YUV
色彩空間,是因為它的亮度信號Y
和色度信號U
兑障、 V
是分離
的。
YUV
最常用的采樣格式是4:2:0
蕉汪,4:2:0并不意味著只有Y流译、Cb 而沒有Cr分量。它指的是對每行掃描線來說者疤,只有一種色度分量是以 2:1的抽樣率來存儲的福澡。
相較于RGB,我們可以計算一幀為1280×720的視頻幀驹马,用YUV420P
的格式來表示革砸,其數(shù)據(jù)量的大小如下:
1280 * 720 * 1 + 1280 * 720 * 0.5 = 1.318MB
6.3 YUV和RGB的轉化
凡是渲染到屏幕上的東西(文字除秀、圖片或者其 他),都要轉換為RGB的表示形式算利。
七 視頻的編碼方式
7.1 視頻編碼
視頻壓縮
也是通過去除冗余信息來進行壓縮
的册踩。相較于音頻數(shù)據(jù),視頻數(shù)據(jù)有極強的相關性效拭,也就是說有大量的冗余信息暂吉,包括空間
上的冗余信息和時間
上的冗余信息。
使用幀間編碼
技術可以去除時間
上的冗余信息缎患,具體包括以下幾個 部分慕的。
-
運動補償
運動補償是通過先前的局部圖像來預測、補償當前的局部圖像挤渔,它是減少幀序列冗余信息的有效方法肮街。 -
運動表示
不同區(qū)域的圖像需要使用不同的運動矢量來描述運動信息。 -
運動估計
運動估計是從視頻序列中抽取運動信息的一整套技術判导。
使用幀內編碼
技術可以去除空間
上的冗余信息低散。
對于視頻,ISO同樣也制定了標準:Motion JPEG即MPEG
骡楼,MPEG算法是適用于動態(tài)視頻
的壓縮算法
熔号。主要包括這樣幾個版本:Mpeg1(用于VCD)、 Mpeg2(用于DVD)鸟整、Mpeg4 AVC
(現(xiàn)在流媒體使用最多的就是它 了)引镊。
相比較于ISO
制定的MPEG
的視頻壓縮標準
,ITU-T
制定的H.261
篮条、 H.262
弟头、H.263
、H.264
一系列視頻編碼標準
是一套單獨的體系涉茧。
現(xiàn)在使用最多的就是 H.264
標準赴恨,H.264創(chuàng)造了多參考幀
、多塊類型
伴栓、整數(shù)變換
伦连、幀內預測
等新的壓縮技術。
7.2 編碼概念
IPB幀
-
I幀
幀內編碼幀(intra picture)钳垮,I幀通常是每個GOP
(MPEG所 使用的一種視頻壓縮技術)的第一個幀惑淳,經(jīng)過適度地壓縮,作為隨機訪問的參考點饺窿,可以當成靜態(tài)圖像歧焦。
I幀
可以看作一個圖像經(jīng)過壓縮后的產(chǎn)物,I幀壓縮可以得到6:1的壓縮比而不會產(chǎn)生任何可覺察的模糊現(xiàn) 象肚医。
I幀
壓縮可去掉視頻的空間
冗余信息绢馍,屬于幀內編碼
技術向瓷。
P幀
前向預測編碼幀(predictive-frame),通過將圖像序列中前 面已編碼幀的時間冗余信息充分去除來壓縮傳輸數(shù)據(jù)量的編碼圖像舰涌,也稱為預測幀
猖任。B幀
雙向預測內插編碼幀(bi-directional interpolated prediction frame),既考慮源圖像序列前面的已編碼幀舵稠,又顧及源圖像序列后面 的已編碼幀之間的時間冗余信息超升,來壓縮傳輸數(shù)據(jù)量的編碼圖像,也稱為雙向預測幀
哺徊。
基于上面的定義室琢,我們可以從解碼的角度來理解IPB幀。
-
I幀
自身可以通過視頻解壓算法解壓成一張單獨的完整視頻畫面落追,
所以I幀去掉的是視頻幀在空間
維度上的冗余信息盈滴。 -
P幀
需要參考其前面的一個I幀或者P幀來解碼成一張完整的視頻畫
面。 -
B幀
則需要參考其前一個I幀
或者P幀
及其后面的一個P幀
來生成一 張完整的視頻畫面轿钠,所以P幀與B幀去掉的是視頻幀在時間
維度上的冗 余信息巢钓。
IDR幀與I幀的理解
-
IDR幀
就是一種特殊的I幀
。 - 在解碼器中疗垛,一旦收到一個
IDR幀
症汹,就會立即清理參考幀緩沖區(qū),并將IDR幀
作為被參考
的幀贷腕。
PTS與DTS
DTS
主要用于視頻的解碼
背镇,英文全稱是Decoding Time Stamp,
PTS
主要用于在解碼階段進行視頻的同步
和輸出
泽裳,全稱Presentation Time Stamp瞒斩。
在沒有B幀
的情況下,DTS
和PTS
的輸出順序是一樣的涮总。
FFmpeg
中使用AVPacket
結構體來描述解碼前或編碼后的壓縮數(shù)據(jù)胸囱,用AVFrame
結構體來描述解碼后或編碼前的原始數(shù)據(jù)。
對于視頻來說瀑梗,AVFrame
就是視頻 的一幀圖像烹笔,這幀圖像什么時候顯示給用戶,取決于它的PTS
夺克。DTS
是AVPacket
里的一個成員箕宙,表示該壓縮包應該在什么時候被解碼
。
GOP的概念
兩個I幀之間形成的一組圖片铺纽,就是GOP
(Group Of Picture)的概 念。通常在為編碼器設置參數(shù)的時候哟忍,必須要設置gop_size
的值狡门,其代 表的是兩個I幀之間的幀數(shù)目
陷寝。
在提高視頻質量的技巧中,還有個技巧是多使用B幀
其馏。
一般來說凤跑,I
的壓縮率是7(與JPG差不多),P
是20叛复,B
可以達到50仔引,可見使用B幀能節(jié)省大量空間。
結合IPB幀和圖1-11褐奥,相信大家能夠更好地理解PTS與DTS的概念咖耘。
本文是對音視頻開發(fā)進階指南書籍的總結。