音視頻之所以叫音視頻是因為他由音頻和視頻構(gòu)成,我們平時看的視頻其實就是音視頻波岛。本文將記錄筆者在學習音視頻遇到的概念,如果你和筆者一樣對音視頻并沒有接觸太多,那么下面的筆記將會幫你認識音視頻碱蒙。
音頻
聲波
-
頻率:頻率代表音階的高低
- 頻率(Hz)越高,波長越短
- 頻率越低夯巷,波長越長
- 波長越長赛惩,聲音更容易繞過障礙物,傳得越遠
-
振幅:振幅代表響度趁餐,響度就是能量大小的反應(yīng)
- 分貝(dB)是描述響度大信缂妗(聲音強度)的單位
- 分貝是無量綱,指兩個相同的物理量A1(被量度量)和A0(基準量或參考量)之比取以10為底的對數(shù)并乘以10(或20)后雷,即
-
波形:波形代表音色
- 音色不同的情況下季惯,在同樣的音調(diào)(頻率)和響度(振幅)下聲音也是不同
-
聲壓:聲波通過媒質(zhì)時吠各,由振動所產(chǎn)生的壓強改變量
- 聲壓的衡量單位是帕斯卡(Pa)
-
聲壓級:指以對數(shù)尺衡量有效聲壓相對于一個基準值的大小
- 分貝(dB)描述聲壓值與基準值的關(guān)系,變化范圍大勉抓,可以達到六個數(shù)量級以上
- 在聲壓級較低時贾漏,聽覺的頻率特性會很不均勻
- 在聲壓級較高時,聽覺的頻率特性會變得較為均勻
人耳
- 能聽到的頻率范圍:20Hz ~ 20kHz
- 較敏感頻率范圍:3 ~ 4kHz
- 頻率較寬的音樂聲壓:80 ~ 90dB 為最佳藕筋,超過 90dB 將會損害人耳
- 人耳極限:105dB
- 兩種聲音傳到我們耳朵的時差小于80ms纵散,我們就無法區(qū)分兩種聲音
數(shù)字音頻
為了將音頻信號數(shù)字化,需要進行采樣念逞、量化和編碼三個步驟困食。
-
采樣:采樣是在時間軸上對信號進行數(shù)字化。根據(jù)奈奎斯特定理(也稱采樣定理)翎承,按比聲音最高頻率2倍以上的頻率對聲音進行采樣(也稱為AD轉(zhuǎn)換)
- 采樣頻率(采樣率):表示一秒中采樣的次數(shù)硕盹,采樣率一般為44.1kHz
- 量化:量化是指在幅度軸上對信號進行數(shù)字化,比如用 16 比特的二進制信號來表示聲音的一個采集叨咖,而16 比特(一個short)所表示的范圍是[-32768, 32767]瘩例,共有 65536 個可能取值,因此最終的音頻信號在幅度上也分為 65535 層
- 編碼:按照一定的格式記錄采樣和量化的數(shù)字數(shù)據(jù)
描述概念
-
量化格式(sampleFormat):也叫位深度甸各,是音頻采樣一次所需要的容量
- 單位:bit垛贤、byte
-
采樣率(sampleRate):
- 單位:Hz、kHz
- 聲道數(shù)(channel)
-
比特率(碼率)(bit rate):1秒時間內(nèi)的比特數(shù)目趣倾,用于衡量音頻數(shù)據(jù)單位時間內(nèi)的容量大小聘惦。比特率越高,存儲越大儒恋,聲音細節(jié)越精確
- 單位:bps善绎、kbps
- 低碼率()
- 中碼率()
- 高碼率()
音質(zhì) | 量化格式(位深) | 采樣率 | 聲道數(shù) | 比特率 | 存儲空間(1分鐘) |
---|---|---|---|---|---|
CD 音質(zhì) | 16比特(2 字節(jié)) | 44100Hz | 2 | 1378.125kbps | 10.09MB |
音頻編碼
PCM 即音頻裸數(shù)據(jù)量大,存在本地稍微可以接受诫尽,但是要在網(wǎng)絡(luò)中實時在線傳播的話就太大了禀酱,因此就有了音頻壓縮編碼的存在。壓縮編碼實際上就是壓縮冗余信號牧嫉,冗余信號指的是人耳聽不到的音頻信號(20Hz ~ 20kHz范圍以外)剂跟。
常見概念
- 壓縮比:通常小于1
- 無損壓縮:解壓后數(shù)據(jù)可以完全復原
- 有損壓縮:解壓后數(shù)據(jù)不能完全復原,壓縮比越小酣藻,丟失信息越多曹洽,信號還原后的失真就會越大
PCM 編碼
PCM(Pulse Code Modulation,脈沖編碼調(diào)制)是無損編碼辽剧,也是音頻裸數(shù)據(jù)衣洁,能夠達到最大程度的高保真。
優(yōu)點:音源信息保存完整,音質(zhì)好
缺點:信息量大抖仅,體積大坊夫,冗余度過大
適用場合:廣泛用于素材保存及音樂欣賞
WAV 編碼
WAV(Waveform Audio File Format)是一種不會進行壓縮操作的編碼砖第,他在 PCM 數(shù)據(jù)格式的前面加上了44字節(jié),分別用來描述 PCM 的采樣率环凿、聲道數(shù)梧兼、數(shù)據(jù)格式等信息。
優(yōu)點:音質(zhì)非常好智听,大量軟件都支持
缺點:信息量大羽杰,體積大,冗余度過大
適用場合:多媒體開發(fā)的中間文件到推、保存音樂和音效素材
MP3 編碼
MP3 具有不錯的壓縮比考赛,使用 LAME 編碼的中高碼率的 MP3 文件,聽感上非常接近 WAV 文件莉测。
優(yōu)點:音質(zhì)在 128 Kbps 以上表現(xiàn)還不錯颜骤,壓縮比比較高,兼容性高
缺點:在 128 Kbps 及以下時捣卤,會出現(xiàn)明顯的高頻丟失
適用場合:高比特率下對兼容性有要求的音樂欣賞
AAC 編碼
AAC 是新一代的音頻有損壓縮技術(shù)忍抽,它通過一些附加的編碼技術(shù)(比如PS、SBR等)董朝,衍生出了 LC-AAC鸠项、HE-AAC、HE-AAC v2 三種主要的編碼格式:
- LC-AAC:主要應(yīng)用于中高碼率場景的編碼()
- HE-AAC:(相當于AAC+SBR)主要應(yīng)用于中低碼率場景的編碼()
-
HE-AAC v2:(相當于AAC+SBR+PS)主要應(yīng)用于低碼率場景的編碼()
- 事實上大部分編碼器都設(shè)置自動啟動 PS 技術(shù)子姜,而則不加 PS 祟绊,相當于普通的 HE-AAC
優(yōu)點:在小于 128 Kbps 的碼率下表現(xiàn)優(yōu)異,支持多種音頻聲道組合哥捕,提供優(yōu)質(zhì)的音質(zhì)
適用場合:128 Kbps 以下的音頻編碼牧抽,多用于視頻中的音頻軌的編碼
SBR:一種音頻編碼增強算法,可在中低碼率下增加音頻的帶寬或改善編碼效率扭弧,但是在高碼率中沒什么作用。
Ogg 編碼
Ogg 在各種碼率下大豆油比較優(yōu)秀的表現(xiàn)记舆,尤其在中低碼率場景下鸽捻。可以用更小的碼率達到更好的音質(zhì)泽腮,128 Kbps 的 Ogg 比 192 Kbps 甚至更高碼率的 MP3 還要出色御蒲。但是它的兼容性不是很好,因此和 MP3 無法相提并論诊赊。
優(yōu)點:可用比 MP3 個更小的碼率實現(xiàn)比 MP3 更好的音質(zhì)厚满,高低中碼率下均有良好的表現(xiàn)
缺點:軟件硬件的兼容性不好
使用場合:語音聊天的音頻消息場景
圖像
一幅幅圖像是由一個個像素點組成的,每個像素點都由3個子像素點組成碧磅。
分辨率
像素點的數(shù)量就是分辨率碘箍,比如一個屏幕的分辨率是1280 x 720
遵馆,那么說明水平方向有 720 個像素點,垂直方向有 1280 個像素點丰榴,因此整個屏幕就有1280 x 720
個像素點(注:這是不算子像素點的說法)货邓。
位圖(Bitmap)
- 位圖,又稱柵格圖(Raster graphics)或點陣圖四濒,是使用像素陣列(Pixel-array/Dot-matrix點陣)來表示的圖像换况。
- 位圖也可指一種數(shù)據(jù)結(jié)構(gòu),代表了有限域中的稠集(dense set)盗蟆,每一個元素至少出現(xiàn)一次戈二,沒有其他的數(shù)據(jù)和元素相關(guān)聯(lián)。
位圖的像素都分配有特定的位置和顏色值喳资。每個像素的顏色信息由 RGB 組合或者灰度值表示觉吭。根據(jù)位深度,可將位圖分為1骨饿、4亏栈、8、16宏赘、24及32位圖像等绒北。每個像素使用的信息位數(shù)越多,可用的顏色就越多察署,顏色表現(xiàn)就越逼真闷游,相應(yīng)的數(shù)據(jù)量越大。
位深度:表示一個位圖所使用的二進制數(shù)目贴汪,即
32 位圖像
能表示 種顏色的彩色圖脐往,1 位圖像
就能表示 種顏色的黑白圖。
RGB 表示方式
一個圖像可以由 RGB 組成扳埂,這些子像素點的常用表示方式如下:
- 浮點表示:取值范圍為 0.0 ~ 1.0业簿,比如 OpenGL ES 中的子像素表示。
-
整數(shù)表示:取值范圍為 0 ~ 255 或者 00 ~ FF阳懂,8 bits表示一個子像素梅尤,32 bits 即 4 bytes 就表示一個像素。
- RGBA_8888:R岩调、G巷燥、B、A 各用 8 bits号枕,一共 32 bits缰揪。
- RGB_565:R 用 6 bits,G 用 6 bits葱淳,B 用 5 bits钝腺,一共 16 bits 即 2 bytes
那么一張1280 x 720
的RGBA_8888
圖像的大小就是:
YUV 表示方式
YUV 主要應(yīng)用于優(yōu)化彩色視頻信號的傳輸抛姑,使其向后兼容老實黑白電視。與 RGB 視頻型號傳輸相比拍屑,最大的優(yōu)點是占用極少的頻寬
- Y:亮度信號表示明亮度(Luminance 或 Luma)途戒,也稱灰階值
-
U、V:色度信號表示色度(Chrominance 或 Chroma)僵驰,作用是描述影像的色彩及飽和度喷斋,用于指定像素的顏色(YUV也叫YCbCr)
-
色調(diào):用
Cr
表示,反映了 RGB 輸入信號紅色部分與 RGB 信號亮度值之間的差異 -
飽和度:用
Cb
表示蒜茴,反映了 RGB 輸入信號藍色部分與 RGB 信號亮度值之間的差異
-
色調(diào):用
表示方式:YUV 的每個分量都使用一個字節(jié)(8位)來表示星爪,所以取值范圍是 0 ~ 255。
存儲格式:
- planar 平面格式:指先連續(xù)存儲所有像素點的 Y 分量粉私,然后存儲 U 分量顽腾,最后是 V 分量。
- packed 打包模式:指每個像素點的 Y诺核、U抄肖、V 分量是連續(xù)交替存儲的。
采樣范式:YUV 圖像的主流采樣方式有如下三種:
YUV 4:4:4 采樣
YUV 4:4:4 采樣窖杀,意味著 Y漓摩、U、V 三個分量的采樣比例相同入客,因此在生成的圖像里管毙,每個像素的三個分量信息完整,都是 8 bits桌硫,也就是一個字節(jié)夭咬。
如下圖所示(Y 分量用叉表示,UV 分量用圓圈表示):
例子:
圖像像素:[Y0 U0 V0]铆隘、[Y1 U1 V1]卓舵、[Y2 U2 V2]、[Y3 U3 V3]
采樣的碼流:Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
映射出的像素點: [Y0 U0 V0]膀钠、[Y1 U1 V1]掏湾、[Y2 U2 V2]、[Y3 U3 V3]
這種采樣方式的圖像和 RGB 顏色模型的圖像大小是一樣托修,并沒有達到節(jié)省帶寬的目的忘巧,當將 RGB 圖像轉(zhuǎn)換為 YUV 圖像時恒界,也是先轉(zhuǎn)換為 YUV 4:4:4 采樣的圖像睦刃。
YUV 4:2:2 采樣
YUV 4:2:2 采樣,意味著 UV 分量是 Y 分量采樣的一半十酣,Y 分量和 UV 分量按照 2 : 1 的比例采樣涩拙。每采樣過一個像素點际长,都會采樣其 Y 分量,而 U兴泥、V 分量就會間隔一個采集一個工育。如下圖所示(Y 分量用叉表示,UV 分量用圓圈表示):
例子:
圖像像素:[Y0 U0 V0]搓彻、[Y1 U1 V1]如绸、[Y2 U2 V2]、[Y3 U3 V3]
采樣的碼流:Y0 U0 Y1 V1 Y2 U2 Y3 V3
映射出的像素點: [Y0 U0 V1]旭贬、[Y1 U0 V1]怔接、[Y2 U2 V3]、[Y3 U2 V3]
兩個圖像共用一個 U稀轨、V 分量扼脐,因此YUV 4:2:2 采樣的圖像比 RGB 模型圖像節(jié)省了三分之一的存儲空間,在傳輸時占用的帶寬也會隨之減少奋刽。
YUV 4:2:0 采樣
YUV 4:2:0 采樣瓦侮,并不是指只采樣 U 分量而不采樣 V 分量。而是指佣谐,在每一行掃描時肚吏,只掃描一種色度分量(U 或者 V),和 Y 分量按照 2:1 的方式采樣台谍。每采樣過一個像素點须喂,都會采樣其 Y 分量,而 U趁蕊、V 分量就會間隔一行按照 2 : 1 進行采樣坞生。對于每個色度分量來說,它的水平方向和豎直方向的采樣和 Y 分量相比都是 2:1 掷伙。如下圖所示(Y 分量用叉表示是己,UV 分量用圓圈表示):
圖像像素:
[Y0 U0 V0]、[Y1 U1 V1]任柜、 [Y2 U2 V2]卒废、 [Y3 U3 V3]
[Y5 U5 V5]、[Y6 U6 V6]宙地、 [Y7 U7 V7] 摔认、[Y8 U8 V8]
采樣的碼流:Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8
映射出的像素點:
[Y0 U0 V5]、[Y1 U0 V5]宅粥、[Y2 U2 V7]参袱、[Y3 U2 V7]
[Y5 U0 V5]、[Y6 U0 V6]、[Y7 U2 V7]抹蚀、[Y8 U2 V8]
四個圖像共用一個 U剿牺、V 分量,因此YUV 4:2:0 采樣的圖像比 RGB 模型圖像節(jié)省了一半的存儲空間环壤,因此它也是比較主流的采樣方式晒来。
RGB 和 YUV 的轉(zhuǎn)化
RGB 到 YUV 的轉(zhuǎn)換,就是將圖像所有像素點的 R郑现、G湃崩、B 分量轉(zhuǎn)換到 Y、U接箫、V 分量竹习。對于顯示器來說,它是通過 RGB 模型來顯示圖像的列牺,而在傳輸圖像數(shù)據(jù)時又是使用 YUV 模型(可節(jié)省帶寬)整陌,因此就有:
- 采集圖像時:將 RGB 模型轉(zhuǎn)換到 YUV 模型
- 顯示圖像時:將 YUV 模型轉(zhuǎn)換為 RGB 模型
標清電視使用標準 BT.601:
高清電視使用標準 BT.709:
圖片壓縮格式
-
JPEG:JPEG(
Joint Photographic Experts Group
) 是一種有損壓縮格式,在提供良好的壓縮性能的同時瞎领,具有較好的重建質(zhì)量泌辫。一般提供壓縮比的選項,壓縮比越小九默,圖片體積就越小震放,質(zhì)量越也差,編碼時間也越短驼修,但解碼時間并沒有很大的差距殿遂。 -
PNG:PNG(
Portable Network Graphics
) 是無損壓縮格式,其并不能提供壓縮比的選項乙各,其壓縮比是有上限的墨礁。 -
BPG:BPG(
Better Portable Graphics
) 是一個優(yōu)秀的有損壓縮格式,它能在相同質(zhì)量下比 JPEG 減少 50% 的體積耳峦。
視頻
視頻中的每幀都代表著一幅靜止的圖像
視頻編碼
相較于音頻數(shù)據(jù)恩静,視屏數(shù)據(jù)有極強的相關(guān)性,也就是說有大量的冗余信息蹲坷,包括空間上的冗余信息和時間上的冗余信息驶乾。
幀間編碼技術(shù) -> 去除時間上的冗余信息
- 運動補償:運動補償是通過先前的局部圖像來預測、補償當前的局部圖像循签,他是減少幀序列冗余的有效方法级乐。
- 運動表示:不同區(qū)域的圖像需要使用不同的運動矢量來描述運動信息。
- 運動估計:運動估計是從視頻序列中抽取運動信息的一整套技術(shù)县匠。
幀內(nèi)編碼技術(shù) -> 去除空間上的冗余信息
MPEG
MPEG 算法是適用于動態(tài)視頻的壓縮算法风科,它除了對單幅圖像進行編碼外罕扎,還利用圖像序列中的相關(guān)原則去除冗余,大大提高了視頻的壓縮比丐重。
版本:Mpeg1(?于 VCD)、Mpeg2(?于 DVD)杆查、Mpeg4 AVC(流媒體使?最多)
H.264
ITU-T 制定的 H.261扮惦、H.262、H.263亲桦、H.264?系列視頻編碼標準是?套單獨的體系崖蜜。其中,H.264 集中了以往標準的所有優(yōu)點客峭,并吸取了以往標準的經(jīng)驗豫领,采?的是簡潔設(shè)計,這使得它? Mpeg4 更容易推?√蚶牛現(xiàn)在使?最多的就是 H.264 標準等恐,H.264 創(chuàng)造了多參考幀、多塊類型备蚓、整數(shù)變換课蔬、幀內(nèi)預測等新的壓縮技術(shù),使?了更精細的分像素運動?量(1/4郊尝、1/8)和新?代的環(huán)路濾波器二跋,這使得壓縮性能得到??提?,系統(tǒng)也變得更加完善流昏。
編碼概念
IPB 幀
-
I幀:幀內(nèi)編碼幀(
intra picture
)扎即,直接表示完整圖像的一幀。通常為每個GOP(MPEG所使用的一種視頻壓縮技術(shù))的第一個幀况凉。- 編碼:通過視頻壓縮算法保存的完整一幀
- 解碼:通過視頻壓縮算法解壓成完整的畫面
- 用途:作為隨機訪問的參考點
- 意義:去除空間冗余信息
-
P幀:前向預測編碼幀(
predictive-frame
)谚鄙,即預測幀,通過前面的圖像編碼特征來確定當前的圖像幀刁绒。- 編碼:通過將圖像序列中前面已編碼幀的時間冗余信息充分去除來壓縮傳輸數(shù)據(jù)量的編碼圖像襟锐。
- 解碼:需要參考其前面的一個I幀或者P幀來解碼成一張完整的視頻畫面
- 意義:去除時間冗余信息
-
B幀:雙向預測內(nèi)插編碼幀(
bi-directional interpolated prediction frame
),即雙向預測幀膛锭,需要通過前后的圖像編碼來確定當前幀粮坞。- 編碼:既考慮源圖像序列前面的已編碼幀,又顧及源圖像序列后面的已編碼幀之間的時間冗余信息初狰,來壓縮傳輸數(shù)據(jù)量的編碼圖像
- 解碼:需要參考其前一個I幀或者P幀及其后面的一個P幀來生成一張完整的視頻畫面
- 意義:去除時間冗余信息
IDR幀:(
instantaneous decoding refresh picture
)是一個特殊的I幀莫杈,這一幀之后的所有參考幀都只會參考到這個IDR幀,而不會再參考前面的幀奢入。
GOP
GOP(Group Of Picture
)筝闹,表示一組圖片媳叨,兩個I幀之間就形成的一組圖片。通常在為編碼器設(shè)置參數(shù)的時候关顷,必須要設(shè)置gop_size
的值糊秆,其代表的是兩個I幀之間的幀數(shù)目。
PS:提高視頻質(zhì)量技巧:
gop_size
越大议双,整個畫面的質(zhì)量就會越好- 多使用B幀(I的壓縮率是7痘番,P是20,B可以達到50)可節(jié)省更多的空間保存I幀平痰。這樣就能在相同的碼率下提供更好的畫質(zhì)汞舱。
PTS 與 DTS
- DTS:(
Decoding Time Stamp
)決定解碼的順序,主要用于視頻的解碼 - PTS:(
Presentation Time Stamp
)決定圖像什么時候顯示給用戶宗雇,主要用于在解碼階段進行視頻的同步和輸出
PS:在沒有B幀的情況下昂芜,DTS 和 PTS 的輸出順序是一樣的。因為B幀打亂了解碼和顯示的順序赔蒲,所以一旦存在B幀泌神,PTS與DTS勢必就會不同。因此需要 DTS 和 PTS 兩種不同的時間戳舞虱。