日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

音频和视频的基础知识

發(fā)布時(shí)間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 音频和视频的基础知识 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

    • PCM-脈沖編碼調(diào)制
      • 錄音的原理
      • 記錄聲音-音頻數(shù)字化
      • 音頻數(shù)字化-PCM
    • 采樣
      • 采樣
      • 采樣率
      • 采樣定理
    • 量化
      • 位深度
    • 編碼
    • 聲道(Channel)
    • 比特率
    • 信噪比
    • 編碼(Encode)
    • 解碼(Decode)
    • 常見的音頻編碼和文件格式
    • 無損
      • Monkey's Audio
      • FLAC
      • ALAC
    • 有損
      • MP3
      • WMA
      • AAC
      • Speex
      • Opus
    • 文件格式
      • Ogg
      • WAV
      • AIFF
    • 有損和無損
    • 聲波
    • 音調(diào)
    • 響度
    • 音色
    • 噪音
    • 像素
    • RGB顏色模型
    • 位深度
      • 24bit顏色的表示形式
      • 顏色數(shù)量
      • 其他位深度
      • 不同位深度的對(duì)比
    • 格式
    • 動(dòng)畫
    • YUV
      • 體積更小
      • 組成
      • 兼容性
    • RGB和YUV轉(zhuǎn)換
      • 公式1
      • 公式2
      • 公式3
    • 色度二次采樣
      • 原理
      • 概念
      • 采樣格式
      • 4:4:4
      • 4:2:2
      • 4:2:0
    • H.264編碼
      • 編碼器
      • 解碼器
      • 編碼過程與原理
      • 劃分幀類型
        • GOP的長度
        • GOP的類型
      • 幀內(nèi)/幀間編碼
        • 劃分宏塊
        • 幀內(nèi)編碼
        • 幀間編碼
      • 變換與量化
      • 規(guī)格

PCM-脈沖編碼調(diào)制

錄音的原理

可以簡單理解為:把聲源的振動(dòng)記錄下來,需要時(shí)再讓某個(gè)物體按照記錄下來的振動(dòng)規(guī)律去振動(dòng),就會(huì)產(chǎn)生與原來一樣的聲音。

記錄聲音-音頻數(shù)字化

如何把聲音(聲源的振動(dòng))記錄下來呢?聲音屬于模擬信號(hào),但更便于計(jì)算機(jī)處理和存儲(chǔ)的是數(shù)字信號(hào)(二進(jìn)制編碼),所以需要將模擬信號(hào)(Analog Signal)轉(zhuǎn)成數(shù)字信號(hào)(Digital Signal)后進(jìn)行存儲(chǔ)。這一過程,我們可以稱之為:音頻數(shù)字化。

音頻數(shù)字化-PCM

將音頻數(shù)字化的常見技術(shù)方案是脈沖編碼調(diào)制(PCM,Pulse Code Modulation),主要過程是:采樣 → 量化 → 編碼。

采樣

模擬信號(hào)的波形是無限光滑的,可以看成由無數(shù)個(gè)點(diǎn)組成,由于存儲(chǔ)空間是相對(duì)有限的,數(shù)字編碼過程中,必須要對(duì)波形的點(diǎn)進(jìn)行采樣。

采樣

采樣(Sampling):每隔一段時(shí)間采集一次模擬信號(hào)的樣本,是一個(gè)在時(shí)間上將模擬信號(hào)離散化(把連續(xù)信號(hào)轉(zhuǎn)換成離散信號(hào))的過程。

采樣率

每秒采集的樣本數(shù)量,稱為采樣率(采樣頻率,采樣速率,Sampling Rate)。比如,采樣率44.1kHz表示1秒鐘采集44100個(gè)樣本。

采樣定理

根據(jù)采樣定理(奈奎斯特–香農(nóng)采樣定理,Nyquist-Shannon sampling theorem)得知:只有當(dāng)采樣率高于聲音信號(hào)最高頻率的2倍時(shí),才能把采集的聲音信號(hào)唯一地還原成原來的聲音。

人耳能夠感覺到的最高聲音頻率為20000Hz,因此為了滿足人耳的聽覺要求,需要至少每秒進(jìn)行40000次采樣(40kHz采樣率)。

這就是為什么常見的CD的采樣率為44.1kHz。

電話、無線對(duì)講機(jī)、無線麥克風(fēng)等的采樣率是8kHZ。

人耳聽覺 20HZ–20KHZ 敏感 1KHz–4KHz 最敏感 3.4KHz(再往上容易產(chǎn)生聽覺疲勞)

人嗓音 男 80Hz–500Hz 女100Hz–1KHz

電話 200/300–3KHZ

電視 100HZ

20–250 LOW (LF) 250–2KHz MID (MF) 2kHz–4KHz MH 4KHz–20KHz High (HF)

根據(jù)采樣定律,要保證信號(hào)傳輸中不失真,采樣頻率最起碼是最高頻率的兩倍,也就是說采樣頻率6800hz以上都可以,至于為什么是8000hz,可以認(rèn)為是一種約定而已。

量化

量化(Quantization):將每一個(gè)采樣點(diǎn)的樣本值數(shù)字化。

位深度

位深度(采樣精度,采樣大小,Bit Depth):使用多少個(gè)二進(jìn)制位來存儲(chǔ)一個(gè)采樣點(diǎn)的樣本值。位深度越高,表示的振幅越精確。常見的CD采用16bit的位深度,能表示65536(216)個(gè)不同的值。DVD使用24bit的位深度,大多數(shù)電話設(shè)備使用8bit的位深度。

就相當(dāng)于下圖縱坐標(biāo)的間距 位深度越大 縱坐標(biāo)刻度越密集,表示的振幅越精確。

下圖的橫坐標(biāo)間距越小 表示采樣率越高

編碼

編碼:將采樣和量化后的數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)成二進(jìn)制碼流。

聲道(Channel)

單聲道產(chǎn)生一組聲波數(shù)據(jù),雙聲道(立體聲)產(chǎn)生兩組聲波數(shù)據(jù)。

采樣率44.1kHZ、位深度16bit的1分鐘立體聲PCM數(shù)據(jù)有多大?

  • 采樣率 * 位深度 * 聲道數(shù) * 時(shí)間
  • 44100 * 16 * 2 * 60 / 8 ≈ 10.34MB

1分鐘10.34MB,這對(duì)于大部分用戶來說是不能接受的。

要想在不改變音頻時(shí)長的前提下,降低音頻數(shù)據(jù)的大小,只有2種方法:

降低采樣指標(biāo)、壓縮。

降低采樣指標(biāo)是不可取的,會(huì)導(dǎo)致音頻質(zhì)量下降,用戶體驗(yàn)變差,因此專家們研發(fā)了各種壓縮方案。

舉個(gè)例子:

現(xiàn)在有個(gè)需求,在局域網(wǎng)內(nèi)實(shí)現(xiàn)實(shí)時(shí)語音,傳輸層協(xié)議使用UDP協(xié)議,如果直接使用AudioRecord進(jìn)行錄制音頻流并發(fā)送到另一端進(jìn)行播放,音質(zhì)會(huì)非常差,而且斷斷續(xù)續(xù),原因如下:

采樣頻率: fm = 44.1KHz

量化位數(shù):16bit

聲道配置:2(雙聲道)

那么,碼率 V = 44.1K * 16 *2 = 1411.2 Kbps = 176.4KBps,即每秒傳輸速率大概176.4KB,

若音頻幀時(shí)間為20ms,每個(gè)音頻數(shù)據(jù)包大小為 size = 176.4KBps * 0.02s = 3.528KB,

一般情況下,我們每次讀取一個(gè)音頻幀的數(shù)據(jù),可以取整為3600Byte,

所以 每秒大概發(fā)送 176.4/3.6=49 個(gè)數(shù)據(jù)包,每個(gè)數(shù)據(jù)包大小為3.6KB。

如果再考慮到數(shù)據(jù)報(bào)頭,實(shí)測每秒發(fā)送約45個(gè)數(shù)據(jù)包,每秒傳輸速率大概180KB。

由于一般都是使用手機(jī)連接Wifi,這就要求網(wǎng)絡(luò)質(zhì)量和硬件設(shè)備必須很好,而且信道干擾較弱,并且鏈接的設(shè)備不能過多。只要稍微信號(hào)不好,就會(huì)導(dǎo)致丟包率特別高,而且延時(shí)十分大,根本無法滿足通信的需要。在這種情況下,我們就需要進(jìn)行語音壓縮、降噪等處理。

比特率

比特率(Bit Rate),指單位時(shí)間內(nèi)傳輸或處理的比特?cái)?shù)量,單位是:比特每秒(bit/s或bps),還有:千比特每秒(Kbit/s或Kbps)、兆比特每秒(Mbit/s或Mbps)、吉比特每秒(Gbit/s或Gbps)、太比特每秒(Tbit/s或Tbps)。

采樣率44.1kHZ、位深度16bit的立體聲PCM數(shù)據(jù)的比特率是多少?

  • 采樣率 * 位深度 * 聲道數(shù)
  • 44100 * 16 * 2 = 1411.2Kbps

通常,采樣率、位深度越高,數(shù)字化音頻的質(zhì)量就越好。從比特率的計(jì)算公式可以看得出來:比特率越高,數(shù)字化音頻的質(zhì)量就越好。

信噪比

信噪比(Signal-to-noise ratio,SNR,S/N,訊噪比),指信號(hào)與噪聲的比例,用于比較所需信號(hào)的強(qiáng)度與背景噪聲的強(qiáng)度,以分貝(dB)為單位。

位深度限制了信噪比的最大值,它們的關(guān)系如下表所示。

位深度信噪比
424.08
848.16
1166.22
1272.24
1696.33
18108.37
20120.41
24144.49
32192.66
48288.99
64385.32

關(guān)于信噪比的意義:

圖像的信噪比和圖像的清晰度一樣,都是衡量圖像質(zhì)量高低的重要指標(biāo)。圖像的信噪比是指視頻信號(hào)的大小與噪波信號(hào)大小的比值,其公式為:

S/N(信噪比)= 20 log (信號(hào)/噪聲)dB

信噪比大,圖像畫面就干凈,看不到什么噪波干擾(表現(xiàn)為“顆粒”和“雪花”),看起來很舒服;若信噪比小,則在畫面上,可能滿是雪花,嚴(yán)重影響圖像畫面。信噪比與圖像質(zhì)量之間具有如下對(duì)應(yīng)關(guān)系:

S/N為60dB(比率為1000:1)時(shí),圖像質(zhì)量優(yōu)良,不出現(xiàn)噪聲;

S/N為50dB(比率為316:1)時(shí),圖像有少量噪聲,但圖像質(zhì)量算好;

S/N為40dB(比率為100:1)時(shí),圖像有一定的精細(xì)顆粒或雪花,圖像的精細(xì)結(jié)構(gòu)受到一定的損失;

S/N為30dB(比率為32:1),圖像將是有大量噪聲的劣質(zhì)圖像;

S/N為20dB(比率為10:1),圖像就不能使用。

影響信噪比的因素很多,例如電源的干擾,電子元器件過熱產(chǎn)生的干擾,光敏元件上的小電壓放大成0.7V視頻信號(hào)時(shí),因放大而產(chǎn)生的噪聲,光照度降低時(shí),放大器增益提高,噪聲也將增加等等。

一般攝像機(jī)的信噪比在50-60dB之間,錄像機(jī)在40-50dB之間。

編碼(Encode)

PCM數(shù)據(jù)可以理解為是:未經(jīng)壓縮的原始音頻數(shù)據(jù),體積比較大,為了更便于存儲(chǔ)和傳輸,一般都會(huì)使用某種音頻編碼對(duì)它進(jìn)行編碼壓縮,然后再存成某種音頻文件格式

壓縮分為無損壓縮和有損壓縮。

  • 無損壓縮
    • 解壓后可以完全還原出原始數(shù)據(jù)
    • 壓縮比小,體積大
  • 有損壓縮
    • 解壓后不能完全還原出原始數(shù)據(jù),會(huì)丟失一部分信息
    • 壓縮比大,體積小
    • 壓縮比越大,丟失的信息就越多,還原后的信號(hào)失真就會(huì)越大
    • 一般是通過舍棄原始數(shù)據(jù)中對(duì)人類聽覺不重要的部分,達(dá)成壓縮成較小文件的目的
  • 壓縮比 = 未壓縮大小 / 壓縮后大小

解碼(Decode)

當(dāng)需要播放音頻時(shí),得先解碼(解壓縮)出PCM數(shù)據(jù),然后再進(jìn)行播放。

常見的音頻編碼和文件格式

需要注意的是:音頻文件格式并不等于音頻編碼。比如:

  • WAV只是一種文件格式,并不是一種編碼
  • FLAC既是一種文件格式,又是一種編碼

下面對(duì)常見的音頻編碼和文件格式做一個(gè)簡介。

名稱無損壓縮文件擴(kuò)展名
Monkey’s Audio??.ape
FLAC(Free Lossless Audio Codec)??.flac
ALAC(Apple Lossless Audio Codec)??.m4a/.caf
MP3(MPEG Audio Layer III)?.mp3
WMA(Windows Media Audio)?.wma
AAC(Advanced Audio Coding)?.acc/.mp4/.m4a
Vorbis?.ogg
Speex?.spx
Opus?.opus
Ogg.ogg
WAV(Waveform Audio File Format).wav
AIFF(Audio Interchange File Format).aiff、.aif

無損

Monkey’s Audio

Monkey’s Audio,是一種無損的音頻編碼和文件格式,文件擴(kuò)展名為.ape,壓縮率一般在55%左右。

FLAC

FLAC(Free Lossless Audio Codec),是一種無損的音頻編碼和文件格式,文件擴(kuò)展名為.flac。雖然壓縮率稍有不及Monkey’s Audio,但FLAC技術(shù)更先進(jìn),占用資源更低,有更多的平臺(tái)及硬件產(chǎn)品支持FLAC。

ALAC

ALAC(Apple Lossless Audio Codec),是由Apple開發(fā)的一種無損的音頻編碼,文件擴(kuò)展名為.m4a、.caf。

有損

MP3

MP3(MPEG Audio Layer III),是非常流行的一種有損音頻編碼和文件格式,文件擴(kuò)展名為.mp3。

第1版是:MPEG-1 Audio Layer III,屬于國際標(biāo)準(zhǔn)ISO/IEC 11172-3
第2版是:MPEG-2 Audio Layer III,屬于國際標(biāo)準(zhǔn)ISO/IEC 13818-3
第3版是:MPEG-2.5 Audio Layer III,并不是由MPEG官方開發(fā)的,不是公認(rèn)的標(biāo)準(zhǔn)

WMA

WMA(Windows Media Audio),是由Microsoft開發(fā)的音頻編碼和文件格式,文件擴(kuò)展名為.wma。包括4種類型:

WMA:原始的WMA編解碼器,作為MP3的競爭者,屬于有損音頻編碼
WMA Pro:支持更多聲道和更高質(zhì)量的音頻,屬于有損音頻編碼
WMA Lossless:屬于無損音頻編碼
WMA Voice:屬于有損音頻編碼

AAC

AAC(Advanced Audio Coding),是由Fraunhofer IIS、杜比實(shí)驗(yàn)室、AT&T、Sony、Nokia等公司共同開發(fā)的有損音頻編碼和文件格式,壓縮比通常為18:1。

AAC被設(shè)計(jì)為MP3格式的后繼產(chǎn)品,通常在相同的比特率下可以獲得比MP3更高的聲音質(zhì)量,是iPhone、iPod、iPad、iTunes的標(biāo)準(zhǔn)音頻格式。

AAC編碼的文件擴(kuò)展名主要有3種:

.acc:傳統(tǒng)的AAC編碼,使用MPEG-2 Audio Transport Stream(ADTS)容器
.mp4:使用了MPEG-4 Part 14的簡化版即3GPP Media Release 6 Basic(3gp6)進(jìn)行封裝的AAC編碼
.m4a:為了區(qū)別純音頻MP4文件和包含視頻的MP4文件而由Apple公司使用的擴(kuò)展名
Apple iTunes對(duì)純音頻MP4文件采用了.m4a文件擴(kuò)展名
M4A的本質(zhì)和音頻MP4相同,故音頻MP4文件可以直接更改文件擴(kuò)展名為.m4a
Vorbis
Vorbis,是由Xiph.Org基金會(huì)開發(fā)的一種有損音頻編碼。通常以O(shè)gg作為容器格式,所以常合稱為Ogg Vorbis,文件擴(kuò)展名為.ogg。

Speex

Speex,是由Xiph.Org基金會(huì)開發(fā)的一種有損音頻編碼和文件格式,文件擴(kuò)展名為.spx。

Opus

Opus,是由Xiph.Org基金會(huì)開發(fā)的一種有損音頻編碼和文件格式,文件擴(kuò)展名為.opus。用以取代Vorbis和Speedx。經(jīng)過多次盲聽測試,在任何給定的比特率下都比其他標(biāo)準(zhǔn)音頻格式具有更高的質(zhì)量,包括MP3、AAC。

文件格式

Ogg

Ogg是一種多媒體文件格式,由Xiph.Org基金會(huì)所維護(hù),可以納入各式各樣的音視頻編碼(音頻、視頻都可以),文件擴(kuò)展名常為.ogg。

Ogg常用的音頻編碼有:

有損壓縮:Speex、Vorbis、Opus
無損壓縮:FLAC
未壓縮:PCM

WAV

WAV(Waveform Audio File Format),是由IBM和Microsoft開發(fā)的音頻文件格式,擴(kuò)展名是.wav,通常采用PCM編碼,常用于Windows系統(tǒng)中。

AIFF

AIFF(Audio Interchange File Format),由Apple開發(fā)的音頻文件格式,擴(kuò)展名是.aiff、.aif。跟WAV一樣,通常采用PCM編碼,常用于Mac系統(tǒng)中。

有損和無損

根據(jù)采樣率和位深度可以得知:相對(duì)于自然界的信號(hào),音頻編碼最多只能做到無限接近,任何數(shù)字音頻編碼方案都是有損的,因?yàn)闊o法完全還原。目前能夠達(dá)到最高保真水平的就是PCM編碼,因此,PCM約定俗成叫做無損音頻編碼,被廣泛用于素材保存及音樂欣賞,CD、DVD以及常見的WAV文件中均有應(yīng)用。

但并不意味著PCM就能夠確保信號(hào)絕對(duì)保真,PCM也只能做到最大程度的無限接近。我們習(xí)慣性的把MP3列入有損音頻編碼范疇,是相對(duì)于PCM編碼的。要做到真正的無損是困難的,就像用數(shù)字去表達(dá)圓周率,不管精度多高,也只是無限接近,而不是真正等于圓周率的值。

聲波

以揚(yáng)聲器為例子,揚(yáng)聲器發(fā)聲時(shí)是振膜在振動(dòng)。

振膜的振動(dòng)會(huì)導(dǎo)致振膜旁邊的空氣振動(dòng),然后導(dǎo)致更大范圍的空氣跟著一起振動(dòng),最后耳朵旁邊的空氣也開始振動(dòng)。

空氣的振動(dòng)帶來了動(dòng)能(Kinetic Energy),能量傳入了耳朵中,最后就聽到了聲音。

所以,揚(yáng)聲器可以通過空氣來傳播能量,而不是傳播空氣本身。

聲音與波有著相同的關(guān)鍵特征:可以通過介質(zhì)傳播能量,而不是傳播介質(zhì)本身。

  • 因此,我們也把聲音稱為聲波
  • 聲音的傳播介質(zhì)可以是氣體、液體、固體,比如:2個(gè)人面對(duì)面交流時(shí),聲音是通過空氣傳播到對(duì)方耳中

為什么自己錄下來的聲音和平時(shí)說話的聲音,聽起來會(huì)不太一樣?

  • 當(dāng)自己說話的時(shí)候,實(shí)際上自己聽到了2個(gè)聲音,分別來自2種不同的傳播介質(zhì)
    • 聲波 → 空氣 → 耳朵
    • 聲波 → 血肉、骨骼等介質(zhì) → 耳朵
  • 錄制聲音時(shí)
    • 聲波 → 空氣 → 錄音設(shè)備
  • 當(dāng)聽自己錄下來的聲音時(shí),自己只聽到了1個(gè)聲音
    • 聲波 → 空氣 → 耳朵
  • 所以,平時(shí)別人耳中聽到的你說話的聲音,就是你錄音中的聲音

人耳又是如何聽到聲音的呢?

大概過程是:聲源 → 耳廓(收集聲波) → 外耳道(傳遞聲波) → 鼓膜(將聲波轉(zhuǎn)換成振動(dòng)) → 聽小骨(放大振動(dòng)) → 耳蝸(將振動(dòng)轉(zhuǎn)換成電信號(hào)) → 聽覺神經(jīng)(傳遞電信號(hào)) → 大腦(形成聽覺)

如果只關(guān)注單個(gè)空氣分子,可以發(fā)現(xiàn):它來回振動(dòng)的軌跡,就是一個(gè)正弦或余弦函數(shù)的曲線圖

橫軸:代表時(shí)間。

縱軸:代表空氣分子來回振動(dòng)時(shí)產(chǎn)生的位移。

平衡位置:該空氣分子的未受振動(dòng)干擾時(shí)的位置

從平衡位置到最大位移位置之間的距離,叫做振幅(Amplitude)。

空氣分子完全來回振動(dòng)一次所花費(fèi)的時(shí)間,叫做周期(Period),單位是秒(s)。

物體每秒來回振動(dòng)的次數(shù),叫做頻率(Frequency),也就是周期分之一。

  • 單位是秒分之一(1/s),也稱為赫茲(Hz)
  • 比如440Hz代表物體每秒來回振動(dòng)440次
  • 因此,頻率用來表示物體振動(dòng)的快慢

理論上,人類的發(fā)聲頻率是85Hz ~ 1100Hz,人類只能聽見20Hz ~ 20000Hz之間的聲音。

  • 低于20Hz的稱為:次聲波(Infrasound)
  • 高于20000Hz的稱為:超聲波(Ultrasound)

音調(diào)

頻率越高,音調(diào)就越高。

頻率越低,音調(diào)就越低。

通常女生講話時(shí),聲帶振動(dòng)的頻率就比較高,因此我們聽到的音調(diào)就高,而男生講話時(shí),聲帶振動(dòng)的頻率就比較低,因此我們聽到的音調(diào)就低。

響度

當(dāng)提高聲音的響度(音量,大小)時(shí),振動(dòng)的幅度會(huì)變大。

我們常用dB(分貝)來描述聲音的響度。

分貝情景
0剛能聽到的聲音
15以下感覺安靜
30耳語的音量大小
40冰箱的嗡嗡聲
60正常交談的聲音
70相當(dāng)于走在鬧市區(qū)
85汽車穿梭的馬路上
95摩托車啟動(dòng)聲音
100裝修電鉆的聲音
110卡拉OK、大聲播放MP3的聲音
120飛機(jī)起飛時(shí)的聲音
150燃放煙花爆竹的聲音

音色

音色(Timbre)是指聲音的特色。

  • 不同的聲源由于其材料、結(jié)構(gòu)不同,則發(fā)出聲音的音色也不同
  • 我們之所以能夠根據(jù)聲音區(qū)分出不同的樂器、不同的人,都是因?yàn)樗鼈兊囊羯煌?/li>
  • 不同音色的聲音,即使在同一響度和同一音調(diào)的情況下,也能讓人區(qū)分開來

原理

通常聲源的振動(dòng)產(chǎn)生的并不是單一頻率的聲波,而是由基音和不同頻率的泛音組成的復(fù)合聲音。

  • 當(dāng)聲源的主體振動(dòng)時(shí)會(huì)發(fā)出一個(gè)基音(基本頻率,基頻,Fundamental Frequency)
  • 同時(shí)其余各部分也有復(fù)合的聲源,這些聲源組合產(chǎn)生泛音
  • 泛音(Overtone)其實(shí)就是物理學(xué)上的諧波(Harmonic)

音調(diào)是由基音決定的,而音色主要取決于泛音。

音色不同,波形也就不同。

聲音的最終波形是由多個(gè)不同的波形組合而成的。

噪音

聲源作無規(guī)則振動(dòng)時(shí)發(fā)出的聲音

長期的噪音可以影響人的身心健康。

  • 噪音可能導(dǎo)致各種不同程度的聽力喪失
    • 長時(shí)間處于85分貝以上的噪音可以影響人的聽力
    • 響于120分貝的噪音可以使人耳聾

研究表明:

  • 讓人討厭的噪音和嬰兒啼哭及人類尖叫的聲音有著相同的頻率
  • 人耳對(duì)2000Hz ~ 4000Hz范圍內(nèi)的聲音是難以接受的
  • 而指甲刮黑板聲音的特殊之處,就在于它的頻率,正好處于2000Hz ~ 4000Hz頻段內(nèi)

大腦中的杏仁核(Amygdala)在聽到指甲刮黑板的聲音時(shí),會(huì)異常興奮,于是霸道地接管了大腦聽覺的任務(wù),向聽覺皮層(Auditory Cortex)發(fā)出痛苦的信息。聽覺皮層是屬于大腦皮層(大腦皮質(zhì),Cerebral Cortex)的一部分。

像素

一個(gè)圖的分辨率是60x50,用Photoshop放大圖片上百倍后,可以清晰地看到圖片由若干個(gè)方形的色塊組成,每一個(gè)方形的色塊被稱為:像素(Pixel)。這張圖片的每一行都有60個(gè)像素,共50行,總共60*50=3000個(gè)像素。

總結(jié)一下:

  • 每張圖片都是由N個(gè)像素組成的(N≥1)
  • 如果一張圖片的分辨率是WxH,那么:
    • 每一行都有W個(gè)像素,共H行,總共W*H個(gè)像素
    • 寬度是W像素,高度是H像素

每個(gè)像素都有自己獨(dú)立的顏色,若干個(gè)像素就組成了一張色彩繽紛的完整圖片。

RGB顏色模型

實(shí)驗(yàn)發(fā)現(xiàn):太陽光通過三棱鏡折射后,會(huì)被折射分散成紅、橙、黃、綠、藍(lán)、靛、紫7種單色光。其中的紅、綠、藍(lán)被稱為是色光三原色。

接下來,再看一個(gè)很重要的概念:RGB顏色模型(RGB color model),又稱為三原色光模式。

  • 將紅(Red)、綠(Green)、藍(lán)(Blue)三原色的色光以不同的含量相疊加,可以合成產(chǎn)生各種色彩光

每個(gè)像素的顏色,可以通過紅色、綠色、藍(lán)色以不同的含量混合而成。比如:

  • 紅色(Red)、綠色(Green)可以合成:黃色(Yellow)
  • 紅色(Red)、藍(lán)色(Blue)可以合成:洋紅色(Magenta)
  • 綠色(Green)、藍(lán)色(Blue)可以合成:青色(Cyan)
  • 紅色(Red)、綠色(Green)、藍(lán)色(Blue)可以合成:白色(White)

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-YPGOyZWN-1634558631089)(C:\Users\jym\Desktop\497279-20210301182807299-1567553861.png)]

位深度

每一個(gè)像素的顏色信息是如何存儲(chǔ)的呢?

  • 取決于圖片的位深度(Bit Depth),也稱為:色彩深度(Color Depth,簡稱:色深)
  • 如果一張圖片的位深度為n,那么它的每一個(gè)像素都會(huì)使用n個(gè)二進(jìn)制位來存儲(chǔ)顏色信息

位深度是24,它的具體含義是:

  • 每一個(gè)像素都會(huì)使用24個(gè)二進(jìn)制位來存儲(chǔ)顏色信息
  • 每一個(gè)像素的顏色都是由紅(Red)、綠(Green)、藍(lán)(Blue)3個(gè)顏色通道合成的
  • 每個(gè)顏色通道都用8bit來表示其“含量”(值),取值范圍是:
    • 二進(jìn)制:00000000~11111111
    • 十進(jìn)制:0~255
    • 十六進(jìn)制:00~FF
  • 舉例:01000000 11100000 11010000(共24bit)表示綠寶石色(Turquoise)
    • 紅色的值:二進(jìn)制01000000,十進(jìn)制64,十六進(jìn)制40
    • 綠色的值:二進(jìn)制11100000,十進(jìn)制224,十六進(jìn)制E0
    • 藍(lán)色的值:二進(jìn)制11010000,十進(jìn)制208,十六進(jìn)制D0
    • 64的紅色 + 224的綠色 + 208的藍(lán)色 = 綠寶石色

24bit顏色的表示形式

我們常用2種形式來表示24bit顏色,比如剛才提到的綠寶石色

  • 十進(jìn)制:rgb(64, 224, 208)
  • 十六進(jìn)制:#40E0D0

常見的24bit顏色:

  • 紅色:rgb(255, 0, 0),#FF0000
  • 綠色:rgb(0, 255, 0),#00FF00
  • 藍(lán)色:rgb(0, 0, 255),#0000FF
  • 黃色:rgb(255, 255, 0),#FFFF00
  • 洋紅色:rgb(255, 0, 255),#FF00FF
  • 青色:rgb(0, 255, 255),#00FFFF
  • 白色:rgb(255, 255, 255),#FFFFFF
  • 黑色:rgb(0, 0, 0),#000000
    • 當(dāng)紅綠藍(lán)全為0時(shí),就是黑色
    • 這個(gè)其實(shí)很容易理解:沒有任何光,自然是一片漆黑
    • 所以說:黑色是世界上最純潔的顏色,因?yàn)樗兑矝]有,(づ。????。)づ
    • 相反,白色是世界上最不純潔的顏色,因?yàn)樗抖加?#xff0c;而且都是滿色(全是255)
  • 更多顏色,可以參考顏色對(duì)照表,紅綠藍(lán)的比例不同,合成的顏色也就不同

顏色數(shù)量

如果位深度為n,那么每一個(gè)像素能顯示2n種顏色。

  • 所以,位深度為24時(shí),每一個(gè)像素能顯示224種顏色,也就是16777216種顏色(約1678萬)
  • 24bit顏色,也被稱為是:真彩色(True Color),也就是常說的24位真彩

其他位深度

除了24bit,常見的位深度還有:

  • 1bit:2種顏色,黑白兩色
  • 3bit:8種顏色,用于大部分早期的電腦顯示器,紅綠藍(lán)各占1位
  • 8bit:256種顏色,用于最早期的彩色Unix工作站,紅色占3位、綠色占3位、藍(lán)色占2位
  • 16bit:紅色占5位、藍(lán)色占5位、綠色占6位
  • 32bit:基于24位,增加8個(gè)位的透明通道
    • 可以表示帶有透明度的顏色
    • 比如CSS中的rgba(255, 0, 0, 0.5)表示50%透明度的紅色

不同位深度的對(duì)比

位深度越大,能表示的顏色數(shù)量就越多,圖片也就越鮮艷,顏色過渡就會(huì)越平滑。

格式

一說到圖片,馬上能想到拓展名為jpg、png、gif的圖片文件。

每張圖片都有自己的大小,一張圖片的大小是如何計(jì)算出來的?為什么dragon01.jpg的大小是288KB?

  • 要想知道一張圖片的大小是多少?首先得知道每個(gè)像素的大小是多少。
  • 如果位深度是n,那么每個(gè)像素的大小就是n個(gè)二進(jìn)制位

分辨率是60x50,位深度是24,所以:

  • 每個(gè)像素的大小是:24bit(3字節(jié),1字節(jié)=8bit)
  • 圖片的理論大小是:(6050)(24/8)=9000B≈8.79KB

但實(shí)際上會(huì)發(fā)現(xiàn):在相同分辨率、相同位深度的前提下,把這張圖片存成2種不同的格式(jpg、png),它們的大小是不同的,而且都小于理論上的8.79KB。

其實(shí)jpg、png都是經(jīng)過壓縮后的圖片(具體的壓縮算法和原理,就不在此討論了,大家可以到網(wǎng)上自行搜索),所以它們的大小會(huì)比理論值偏小。

圖片的壓縮類型可以分為2種:

  • 無損壓縮
    • 不損失圖片質(zhì)量
    • 壓縮比小,體積大
    • 解壓(顯示)后能夠還原出完整的原始圖片數(shù)據(jù),不會(huì)損失任何圖片信息
  • 有損壓縮
    • 會(huì)損失圖片質(zhì)量
    • 壓縮比大,體積小
    • 解壓(顯示)后無法還原出完整的原始圖片數(shù)據(jù),會(huì)損失掉一些圖片信息
  • 壓縮比 = 未壓縮大小 / 壓縮后大小
壓縮類型位深度
JPG(JPEG)有損壓縮24bit
PNG無損壓縮8bit、24bit、32bit
GIF無損壓縮8bit

眾所周知,gif是一種支持動(dòng)畫的圖片,所以一般也叫作gif動(dòng)態(tài)圖,微信的動(dòng)態(tài)表情包就是基于gif動(dòng)態(tài)圖。

gif動(dòng)畫的實(shí)現(xiàn)原理類似手翻書。gif的動(dòng)畫原理是:

  • gif內(nèi)部存儲(chǔ)了很多幀(張)靜態(tài)圖片
  • 在短時(shí)間內(nèi),連續(xù)按順序地呈現(xiàn)每一幀靜態(tài)圖片,就形成了動(dòng)畫的效果

動(dòng)畫

不管是gif動(dòng)態(tài)圖,還是手翻書,它們的動(dòng)畫原理其實(shí)都基于:視覺暫留(Persistence of vision)現(xiàn)象。

  • 當(dāng)人眼所看到的影像消失后,人眼仍能繼續(xù)保留其影像約0.1~0.4秒左右,這種現(xiàn)象被稱為視覺暫留現(xiàn)象
  • 人眼觀看物體時(shí),成像于視網(wǎng)膜上,并由視神經(jīng)輸入人腦,感覺到物體的像,但當(dāng)物體移去時(shí),視神經(jīng)對(duì)物體的印象不會(huì)立即消失,而要延續(xù)0.1~0.4秒的時(shí)間,人眼的這種性質(zhì)被稱為“眼睛的視覺暫留”
  • 我們?nèi)粘J褂玫娜展鉄裘棵氪蠹s熄滅100余次,但我們基本感覺不到日光燈的閃動(dòng),這都是因?yàn)橐曈X暫留的作用
  • 在一幀圖片消失在大腦中之前呈現(xiàn)下一幀圖片,反復(fù)如此,就可以形成連貫的動(dòng)畫效果
    • 電影的幀率是24fps
    • fps:每秒的幀數(shù),Frames Per Second

YUV

YUV,是一種顏色編碼方法,跟RGB是同一個(gè)級(jí)別的概念,廣泛應(yīng)用于多媒體領(lǐng)域中。

也就是說,圖像中每1個(gè)像素的顏色信息,除了可以用RGB的方式表示,也可以用YUV的方式表示。

對(duì)比RGB,YUV有哪些不同和優(yōu)勢呢?

體積更小

  • 如果使用RGB
    • 比如RGB888(R、G、B每個(gè)分量都是8bit)
    • 1個(gè)像素占用24bit(3字節(jié))
  • 如果使用YUV
    • 1個(gè)像素可以減小至平均只占用12bit(1.5字節(jié))
    • 體積為RGB888的一半

組成

RGB數(shù)據(jù)由R、G、B三個(gè)分量組成。

YUV數(shù)據(jù)由Y、U、V三個(gè)分量組成,現(xiàn)在通常說的YUV指的是YCbCr。

  • Y:表示亮度(Luminance、Luma),占8bit(1字節(jié))
  • Cb、Cr:表示色度(Chrominance、Chroma)
    • Cb(U):藍(lán)色色度分量,占8bit(1字節(jié))
    • Cr(V):紅色色度分量,占8bit(1字節(jié))

兼容性

  • Y分量對(duì)呈現(xiàn)出清晰的圖像有著很大的貢獻(xiàn)
  • Cb、Cr分量的內(nèi)容不太容易識(shí)別清楚

Y分量的內(nèi)容:其實(shí)以前黑白電視的畫面就是這樣子。

YUV的發(fā)明處在彩色電視與黑白電視的過渡時(shí)期。

  • YUV將亮度信息(Y)與色度信息(UV)分離,沒有UV信息一樣可以顯示完整的圖像,只不過是黑白的
  • 這樣的設(shè)計(jì)很好地解決了彩色電視與黑白電視的兼容性問題,使黑白電視也能夠接收彩色電視信號(hào),只不過它只顯示了Y分量
  • 彩色電視有Y、U、V分量,如果去掉UV分量,剩下的Y分量和黑白電視相同

RGB和YUV轉(zhuǎn)換

公式1

Y = 0.257R + 0.504G + 0.098B + 16 U = -0.148R - 0.291G + 0.439B + 128 V = 0.439R - 0.368G - 0.071B + 128R = 1.164(Y - 16) + 2.018(U - 128) G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) B = 1.164(Y - 16) + 1.596(V - 128)
  • RGB的取值范圍是[0,255]
  • Y的取值范圍是[16,235]
  • UV的取值范圍是[16,239]

公式2

Y = 0.299R + 0.587G + 0.114B U = 0.564(B - Y) = -0.169R - 0.331G + 0.500B V = 0.713(R - Y) = 0.500R - 0.419G - 0.081BR = Y + 1.403V G = Y - 0.344U - 0.714V B = Y + 1.770U
  • RGB的取值范圍是[0, 1]
  • Y的取值范圍是[0, 1]
  • UV的取值范圍是[-0.5, 0.5]

公式3

Y = 0.299R + 0.587G + 0.114B U = -0.169R - 0.331G + 0.500B + 128 V = 0.500R - 0.419G - 0.081B + 128R = Y + 1.403(V - 128) G = Y - 0.343(U - 128) - 0.714(V - 128) B = Y + 1.770(U - 128)
  • RGB的取值范圍是[0, 255]
  • YUV的取值范圍是[0, 255]

色度二次采樣

原理

人眼的視網(wǎng)膜上,分布著兩種感光細(xì)胞:視桿細(xì)胞和視錐細(xì)胞。

  • 視桿細(xì)胞
    • 感知光線的強(qiáng)弱
    • 沒有色彩識(shí)別功能
    • 負(fù)責(zé)夜間非彩色視覺
  • 視錐細(xì)胞
    • 感知顏色
    • 負(fù)責(zé)白天彩色視覺
    • 如果你的視錐細(xì)胞發(fā)育不正常,數(shù)量太少,那感知顏色就會(huì)受阻,可能會(huì)導(dǎo)致你色弱

人眼中有上億個(gè)感光細(xì)胞,其中視桿細(xì)胞占了95%,而視錐細(xì)胞僅占5%。

因此,人眼對(duì)亮度的敏感程度要高于對(duì)色度的敏感程度,人眼對(duì)于亮度的分辨要比對(duì)顏色的分辨精細(xì)一些。

如果把圖像的色度分量減少一些,人眼也絲毫感覺不到變化和差異。

概念

如果在色度分量上進(jìn)行(相對(duì)亮度分量)較低分辨率的采樣,也就是存儲(chǔ)較多的亮度細(xì)節(jié)、較少的色度細(xì)節(jié),這樣就可以在不明顯降低畫面質(zhì)量的同時(shí)減小圖像的體積。上述過程稱為:色度二次采樣(Chroma Subsampling)。

采樣格式

采樣格式通常用A:B:C的形式來表示,比如4:4:4、4:2:2、4:2:0等,其中我們最需要關(guān)注的是4:2:0。

  • A:一塊A*2個(gè)像素的概念區(qū)域,一般都是4
  • B:第1行的色度采樣數(shù)目
  • C:第2行的色度采樣數(shù)目
    • C的值一般要么等于B,要么等于0

下圖可以看出:最上面的圖像顏色是下面兩個(gè)圖像顏色疊加。

下圖可以看出 左右兩個(gè)圖像顏色疊加產(chǎn)生第三列的圖像顏色

上圖中,不管是哪種采樣格式,Y分量都是全水平、全垂直分辨率采樣的,每一個(gè)像素都有自己獨(dú)立的Y分量。

4:4:4

  • 第1行采集4組CbCr分量,第2行采集4組CbCr分量
  • 每1個(gè)像素都有自己獨(dú)立的1組CbCr分量
    • Y分量與CbCr分量的水平方向比例是1:1(每1列都有1組CbCr分量)
    • Y分量與CbCr分量的垂直方向比例是1:1(每1行都有1組CbCr分量)
    • Y分量與CbCr分量的總比例是1:1
  • 1個(gè)像素占用24bit(3字節(jié)),跟RGB888的體積一樣
    • 24bpp(bits per pixel)
  • 這種格式是沒有進(jìn)行色度二次采樣的

4:2:2

  • 第1行采集2組CbCr分量,第2行采集2組CbCr分量
  • 水平方向相鄰的2個(gè)像素(1行2列)共用1組CbCr分量
    • Y分量與CbCr分量的水平方向比例是2:1(每2列就有1組CbCr分量)
    • Y分量與CbCr分量的垂直方向比例是1:1(每1行都有1組CbCr分量)
    • Y分量與CbCr分量的總比例是2:1
  • 1個(gè)像素平均占用16bit(2字節(jié))
    • 16bpp
    • 因?yàn)?個(gè)像素共占用32bit(4字節(jié) = 2個(gè)Y分量 + 1個(gè)Cb分量 + 1個(gè)Cr分量)

4:2:0

  • 第1行采集2組CbCr分量,第2行共享第1行的CbCr分量
  • 相鄰的4個(gè)像素(2行2列)共用1組CbCr分量
    • Y分量與CbCr分量的水平方向比例是2:1(每2列就有1組CbCr分量)
    • Y分量與CbCr分量的垂直方向比例是2:1(每2行就有1組CbCr分量)
    • Y分量與CbCr分量的總比例是4:1
  • 1個(gè)像素平均占用12bit(1.5字節(jié))
    • 12bpp
    • 因?yàn)?個(gè)像素共占用48bit(6字節(jié) = 4個(gè)Y分量 + 1個(gè)Cb分量 + 1個(gè)Cr分量)

H.264編碼

計(jì)算一下:10秒鐘1080p(1920x1080)、30fps的YUV420P原始視頻,需要占用多大的存儲(chǔ)空間?

  • (10 * 30) * (1920 * 1080) * 1.5 = 933120000字節(jié) ≈ 889.89MB
  • 可以看得出來,原始視頻的體積是非常巨大的

由于網(wǎng)絡(luò)帶寬和硬盤存儲(chǔ)空間都是非常有限的,因此,需要先使用視頻編碼技術(shù)(比如H.264編碼)對(duì)原始視頻進(jìn)行壓縮,然后再進(jìn)行存儲(chǔ)和分發(fā)。H.264編碼的壓縮比可以達(dá)到至少是100:1。

H.264,又稱為MPEG-4 Part 10,Advanced Video Coding。

  • 譯為:MPEG-4第10部分,高級(jí)視頻編碼
  • 簡稱:MPEG-4 AVC

H.264是迄今為止視頻錄制、壓縮和分發(fā)的最常用格式。截至2019年9月,已有91%的視頻開發(fā)人員使用了該格式。H.264提供了明顯優(yōu)于以前任何標(biāo)準(zhǔn)的壓縮性能。H.264因其是藍(lán)光盤的其中一種編解碼標(biāo)準(zhǔn)而著名,所有藍(lán)光盤播放器都必須能解碼H.264。

編碼器

H.264標(biāo)準(zhǔn)允許制造廠商自由地開發(fā)具有競爭力的創(chuàng)新產(chǎn)品,它并沒有定義一個(gè)編碼器,而是定義了編碼器應(yīng)該產(chǎn)生的輸出碼流。

x264是一款免費(fèi)的高性能的H.264開源編碼器。x264編碼器在FFmpeg中的名稱是libx264。

解碼器

H.264標(biāo)準(zhǔn)中定義了一個(gè)解碼方法,但是制造廠商可以自由地開發(fā)可選的具有競爭力的、新的解碼器,前提是他們能夠獲得與標(biāo)準(zhǔn)中采用的方法同樣的結(jié)果。

FFmpeg默認(rèn)已經(jīng)內(nèi)置了一個(gè)H.264的解碼器,名稱是h264。

編碼過程與原理

大體可以歸納為以下幾個(gè)主要步驟:

  • 劃分幀類型
  • 幀內(nèi)/幀間編碼
  • 變換 + 量化
  • 濾波
  • 熵編碼

劃分幀類型

有統(tǒng)計(jì)結(jié)果表明:在連續(xù)的幾幀圖像中,一般只有10%以內(nèi)的像素有差別,亮度的差值變化不超過2%,而色度的差值變化只在1%以內(nèi)。

于是可以將一串連續(xù)的相似的幀歸到一個(gè)圖像群組(Group Of Pictures,GOP)。

GOP中的幀可以分為3種類型:

  • I幀(I Picture、I Frame、Intra Coded Picture),譯為:幀內(nèi)編碼圖像,也叫做關(guān)鍵幀(Keyframe)
    • 是視頻的第一幀,也是GOP的第一幀,一個(gè)GOP只有一個(gè)I幀
    • 編碼
      • 對(duì)整幀圖像數(shù)據(jù)進(jìn)行編碼
    • 解碼
      • 僅用當(dāng)前I幀的編碼數(shù)據(jù)就可以解碼出完整的圖像
    • 是一種自帶全部信息的獨(dú)立幀,無需參考其他圖像便可獨(dú)立進(jìn)行解碼,可以簡單理解為一張靜態(tài)圖像
  • P幀(P Picture、P Frame、Predictive Coded Picture),譯為:預(yù)測編碼圖像
    • 編碼
      • 并不會(huì)對(duì)整幀圖像數(shù)據(jù)進(jìn)行編碼
      • 以前面的I幀或P幀作為參考幀,只編碼當(dāng)前P幀與參考幀的差異數(shù)據(jù)
    • 解碼
      • 需要先解碼出前面的參考幀,再結(jié)合差異數(shù)據(jù)解碼出當(dāng)前P幀完整的圖像
  • B幀(B Picture、B Frame、Bipredictive Coded Picture),譯為:前后預(yù)測編碼圖像
    • 編碼
      • 并不會(huì)對(duì)整幀圖像數(shù)據(jù)進(jìn)行編碼
      • 同時(shí)以前面、后面的I幀或P幀作為參考幀,只編碼當(dāng)前B幀與前后參考幀的差異數(shù)據(jù)
      • 因?yàn)榭蓞⒖嫉膸兌嗔?#xff0c;所以只需要存儲(chǔ)更少的差異數(shù)據(jù)
    • 解碼
      • 需要先解碼出前后的參考幀,再結(jié)合差異數(shù)據(jù)解碼出當(dāng)前B幀完整的圖像

不難看出,編碼后的數(shù)據(jù)大小:I幀 > P幀 > B幀。

GOP的長度

GOP的長度表示GOP的幀數(shù)。GOP的長度需要控制在合理范圍,以平衡視頻質(zhì)量、視頻大小(網(wǎng)絡(luò)帶寬)和seek效果(拖動(dòng)、快進(jìn)的響應(yīng)速度)等。

  • 加大GOP長度有利于減小視頻文件大小,但也不宜設(shè)置過大,太大則會(huì)導(dǎo)致GOP后部幀的畫面失真,影響視頻質(zhì)量
  • 由于P、B幀的復(fù)雜度大于I幀,GOP值過大,過多的P、B幀會(huì)影響編碼效率,使編碼效率降低
  • 如果設(shè)置過小的GOP值,視頻文件會(huì)比較大,則需要提高視頻的輸出碼率,以確保畫面質(zhì)量不會(huì)降低,故會(huì)增加網(wǎng)絡(luò)帶寬
  • GOP長度也是影響視頻seek響應(yīng)速度的關(guān)鍵因素,seek時(shí)播放器需要定位到離指定位置最近的前一個(gè)I幀,如果GOP太大意味著距離指定位置可能越遠(yuǎn)(需要解碼的參考幀就越多)、seek響應(yīng)的時(shí)間(緩沖時(shí)間)也越長

GOP的類型

GOP又可以分為開放(Open)、封閉(Closed)兩種。

  • Open
    • 前一個(gè)GOP的B幀可以參考下一個(gè)GOP的I幀
  • Closed
    • 前一個(gè)GOP的B幀不能參考下一個(gè)GOP的I幀
    • GOP不能以B幀結(jié)尾

需要注意的是:

  • 由于P幀、B幀都對(duì)前面的參考幀(P幀、I幀)有依賴性,因此,一旦前面的參考幀出現(xiàn)數(shù)據(jù)錯(cuò)誤,就會(huì)導(dǎo)致后面的P幀、B幀也出現(xiàn)數(shù)據(jù)錯(cuò)誤,而且這種錯(cuò)誤還會(huì)繼續(xù)向后傳播
  • 對(duì)于普通的I幀,其后的P幀和B幀可以參考該普通I幀之前的其他I幀

在Closed GOP中,有一種特殊的I幀,叫做IDR幀(Instantaneous Decoder Refresh,譯為:即時(shí)解碼刷新)。

  • 當(dāng)遇到IDR幀時(shí),會(huì)清空參考幀隊(duì)列
  • 如果前一個(gè)序列出現(xiàn)重大錯(cuò)誤,在這里可以獲得重新同步的機(jī)會(huì),使錯(cuò)誤不會(huì)繼續(xù)往下傳播
  • 一個(gè)IDR幀之后的所有幀,永遠(yuǎn)都不會(huì)參考該IDR幀之前的幀
  • 視頻播放時(shí),播放器一般都支持隨機(jī)seek(拖動(dòng))到指定位置,而播放器直接選擇到指定位置附近的IDR幀進(jìn)行播放最為便捷,因?yàn)榭梢悦鞔_知道該IDR幀之后的所有幀都不會(huì)參考其之前的其他I幀,從而避免較為復(fù)雜的反向解析

幀內(nèi)/幀間編碼

I幀采用的是幀內(nèi)(Intra Frame)編碼,處理的是空間冗余。
P幀、B幀采用的是幀間(Inter Frame)編碼,處理的是時(shí)間冗余。

劃分宏塊

在進(jìn)行編碼之前,首先要將一張完整的幀切割成多個(gè)宏塊(Macroblock),H.264中的宏塊大小通常是16x16。

宏塊可以進(jìn)一步拆分為多個(gè)更小的變換塊(Transform blocks)、預(yù)測塊(Prediction blocks)。

  • 變換塊的尺寸有:16x16、8x8、4x4
  • 預(yù)測塊的尺寸有:16×16、16×8、8×16、8×8、8×4、4×8、4×4

幀內(nèi)編碼

幀內(nèi)編碼,也稱幀內(nèi)預(yù)測。以4x4的預(yù)測塊為例,共有9種可選的預(yù)測模式。

利用幀內(nèi)預(yù)測技術(shù),可以得到預(yù)測幀,最終只需要保留預(yù)測模式信息、以及預(yù)測幀與原始幀的殘差值。

編碼器會(huì)選取最佳預(yù)測模式,使預(yù)測幀更加接近原始幀,減少相互間的差異,提高編碼的壓縮效率。

幀間編碼

幀間編碼,也稱幀間預(yù)測,用到了運(yùn)動(dòng)補(bǔ)償(Motion compensation)技術(shù)。

編碼器利用塊匹配算法,嘗試在先前已編碼的幀(稱為參考幀)上搜索與正在編碼的塊相似的塊。如果編碼器搜索成功,則可以使用稱為運(yùn)動(dòng)矢量的向量對(duì)塊進(jìn)行編碼,該向量指向匹配塊在參考幀處的位置。

在大多數(shù)情況下,編碼器將成功執(zhí)行,但是找到的塊可能與它正在編碼的塊不完全匹配。這就是編碼器將計(jì)算它們之間差異的原因。這些殘差值稱為預(yù)測誤差,需要進(jìn)行變換并將其發(fā)送給解碼器。

綜上所述,如果編碼器在參考幀上成功找到匹配塊,它將獲得指向匹配塊的運(yùn)動(dòng)矢量和預(yù)測誤差。使用這兩個(gè)元素,解碼器將能夠恢復(fù)該塊的原始像素。

如果一切順利,該算法將能夠找到一個(gè)幾乎沒有預(yù)測誤差的匹配塊,因此,一旦進(jìn)行變換,運(yùn)動(dòng)矢量加上預(yù)測誤差的總大小將小于原始編碼的大小。

如果塊匹配算法未能找到合適的匹配,則預(yù)測誤差將是可觀的。因此,運(yùn)動(dòng)矢量的總大小加上預(yù)測誤差將大于原始編碼。在這種情況下,編碼器將產(chǎn)生異常,并為該特定塊發(fā)送原始編碼。

變換與量化

接下來對(duì)殘差值進(jìn)行DCT變換(Discrete Cosine Transform,譯為離散余弦變換)。

規(guī)格

H.264的主要規(guī)格有:

  • Baseline Profile(BP)
    • 支持I/P幀,只支持無交錯(cuò)(Progressive)和CAVLC
    • 一般用于低階或需要額外容錯(cuò)的應(yīng)用,比如視頻通話、手機(jī)視頻等即時(shí)通信領(lǐng)域
  • Extended Profile(XP)
    • 在Baseline的基礎(chǔ)上增加了額外的功能,支持流之間的切換,改進(jìn)誤碼性能
    • 支持I/P/B/SP/SI幀,只支持無交錯(cuò)(Progressive)和CAVLC
    • 適合于視頻流在網(wǎng)絡(luò)上的傳輸場合,比如視頻點(diǎn)播
  • Main Profile(MP)
    • 提供I/P/B幀,支持無交錯(cuò)(Progressive)和交錯(cuò)(Interlaced),支持CAVLC和CABAC
    • 用于主流消費(fèi)類電子產(chǎn)品規(guī)格如低解碼(相對(duì)而言)的MP4、便攜的視頻播放器、PSP和iPod等
  • High Profile(HiP)
    • 最常用的規(guī)格
    • 在Main的基礎(chǔ)上增加了8x8內(nèi)部預(yù)測、自定義量化、無損視頻編碼和更多的YUV格式(如4:4:4)
      • High 4:2:2 Profile(Hi422P)
      • High 4:4:4 Predictive Profile(Hi444PP)
      • High 4:2:2 Intra Profile
      • High 4:4:4 Intra Profile
    • 用于廣播及視頻碟片存儲(chǔ)(藍(lán)光影片),高清電視的應(yīng)用

部分內(nèi)容來自網(wǎng)絡(luò)以及參考https://www.cnblogs.com/mjios/p/14810630.html

總結(jié)

以上是生活随笔為你收集整理的音频和视频的基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。