|
背景:
投屏屬于音視頻開發(fā)的一個(gè)細(xì)分領(lǐng)域知識(shí)體系,所以了解必備的音視頻基礎(chǔ)知識(shí)也是非常非常有必要的,本節(jié)就給大家講解投屏相關(guān)的必備音視頻基礎(chǔ)知識(shí)。
音頻1、聲音的基礎(chǔ)知識(shí)聲音的產(chǎn)生是由于物體的振動(dòng),造成空間內(nèi)空氣的波動(dòng)而共鳴發(fā)音,再由大氣的傳播,使人的聽覺神經(jīng)感受到的一種物理現(xiàn)象。
聲音的三要素是響度,音調(diào)和音色。
響度
和聲音震動(dòng)的幅度有關(guān),用的力越大,人的鼓膜震動(dòng)幅度就越大,發(fā)出的聲音越響。
音調(diào)
主要是和頻率有關(guān)。聲波的頻率越高,音調(diào)也越高。
音色
在同樣的音調(diào)(頻率)和響度(振幅)下,鋼琴和小提琴的聲音聽起來是完全不相同的,因?yàn)樗鼈兊囊羯煌?br />
聲音傳播的介質(zhì)是固體、液體、氣體,介質(zhì)不同,傳播的速度也不同。真空的情況下聲音是無法傳播的。
2、數(shù)字音頻對(duì)自然界的聲音(模擬信號(hào))進(jìn)行采樣,采樣就是根據(jù)奈奎斯特定理在時(shí)間軸上對(duì)信號(hào)進(jìn)行數(shù)字化信號(hào),即按照一定時(shí)間間隔△t 在模擬信號(hào) x(t)上逐點(diǎn)采取其瞬時(shí)值。采樣率越高,聲音的還原程度越高,質(zhì)量就越好,同時(shí)占用空間會(huì)變大。
量化是用有限個(gè)幅度值近似原來連續(xù)變化的幅度值,把模擬信號(hào)的連續(xù)幅度變?yōu)橛邢迶?shù)量的有一定間隔的離散值。
編碼是按照一定的規(guī)律,把量化后的值用二進(jìn)制數(shù)字表示,然后轉(zhuǎn)化成二值或多值的數(shù)字信號(hào)流。這樣得到的數(shù)字信號(hào)通過可以通過電纜,衛(wèi)星通道等數(shù)字線路傳輸。在接收端與上述模擬信號(hào)數(shù)字化過程相反,再經(jīng)過后置濾波再恢復(fù)成原來的模擬信號(hào)。
上面數(shù)字化的過程又叫做脈沖編碼調(diào)制,通常我們說的音頻的裸數(shù)據(jù)格式就是脈沖編碼調(diào)制(PCM)數(shù)據(jù)。
描述一段 PCM 數(shù)據(jù)需要幾個(gè)量化指標(biāo),常用的量化指標(biāo)是采樣率,位深度,字節(jié)序,聲道數(shù)。
采樣率(Sample rate):每秒鐘采樣多少次,以 Hz 為單位。
位深度(Bit-depth):表示用多少個(gè)二進(jìn)制位來描述采樣數(shù)據(jù),一般為 16bit。
字節(jié)序:表示音頻 PCM 數(shù)據(jù)存儲(chǔ)的字節(jié)序是大端存儲(chǔ)(big-endian)還是小端存儲(chǔ)(little-endian),為了數(shù)據(jù)處理效率的高效,通常為小端存儲(chǔ)。
首先明白字節(jié)序,字節(jié)序指占內(nèi)存超過1個(gè)字節(jié)類型的數(shù)據(jù)在內(nèi)存中存放順序,通常有大端和小端兩種順序:
qdp5c2myi5564027615829.png (50.41 KB, 下載次數(shù): 6)
下載附件
保存到相冊(cè)
qdp5c2myi5564027615829.png
2024-9-20 06:48 上傳
在這里插入圖片描述
glqq33ga1oa64027615929.png (10.18 KB, 下載次數(shù): 5)
下載附件
保存到相冊(cè)
glqq33ga1oa64027615929.png
2024-9-20 06:48 上傳
在這里插入圖片描述聲道數(shù)(channel number):指支持能不同發(fā)聲(注意是不同聲音)的音響的個(gè)數(shù);單聲道(1 個(gè)聲道),雙聲道(2 個(gè)聲道)等;
3、音頻壓縮編碼以
CD 音質(zhì)來說,量化格式是 2 字節(jié),采樣率是 44100,聲道數(shù)是 2,這些信息就描述了 CD 的音質(zhì)。那么 CD 的數(shù)據(jù)采樣率
=44100x16x2=1378.125kbps, 在 1 分鐘的時(shí)間里 ,需要占用的存儲(chǔ)空間=1378.125 *
60/8/1024=10.09MB。直接存儲(chǔ)這個(gè)大小音頻的話其實(shí)并不小。
壓縮算法包括有損壓縮和無損壓縮。
常用的音頻編碼方式有以下幾種:
MP3,MPEG-1 or MPEG-2 Audio Layer III,是曾經(jīng)非常流行的一種數(shù)字音頻編碼和有損壓縮格式 , 它被設(shè)計(jì)來大幅降低音頻數(shù)據(jù)量 。
AAC,Advanced
Audio Coding,是由 Fraunhofer IIS、杜比實(shí)驗(yàn)室、AT&T、Sony 等公司共同開發(fā), 在 1997
年推出的基于 MPEG-2 的音頻編碼技術(shù)。AAC 比 MP3 有更高的壓縮比,同樣大小的音頻文件,AAC 的音質(zhì)更高。
視頻相關(guān)視頻基本概念(1)根據(jù)視覺暫留原理,連續(xù)的圖像變化每秒超過24幀(Frame)畫面以上時(shí),人眼無法辨別單幅的靜態(tài)畫面,看上去是平滑連續(xù)的視覺效果,這樣連續(xù)的圖像畫面構(gòu)成即視頻。
5piiuiratul64027616029.png (129.23 KB, 下載次數(shù): 6)
下載附件
保存到相冊(cè)
5piiuiratul64027616029.png
2024-9-20 06:48 上傳
在這里插入圖片描述(2)一個(gè)完整的視頻文件主要由音頻和視頻兩部分組成的,視頻編碼是為了壓縮視頻數(shù)據(jù)而做的一種壓縮算法,是音視頻質(zhì)量的決定因素;視頻封裝格式也叫做容器
Container,它是將已經(jīng)編碼壓縮好的視頻流、音頻流以及元數(shù)據(jù)按照一定的結(jié)構(gòu)規(guī)則編排放到一個(gè)文件中,不同封裝格式編排規(guī)則不一樣,應(yīng)用場(chǎng)景和優(yōu)點(diǎn)也不同。視頻文件的播放流程
nq4mptrwpzt64027616129.png (321.48 KB, 下載次數(shù): 6)
下載附件
保存到相冊(cè)
nq4mptrwpzt64027616129.png
2024-9-20 06:48 上傳
在這里插入圖片描述像素:屏幕顯示是把有效面積化為為很多個(gè)小格子,每個(gè)格子只顯示一種顏色,是成像的最小元素,因此就叫做“像素”。
分辨率:屏幕在長度和寬度這倆個(gè)方向上各有多少像素,就叫做分辨率,一般用 AXB 來表示。分辨率越高,每個(gè)像素的面積越小,顯示效果就越平滑細(xì)膩。
每一個(gè)像素點(diǎn)的 RGB 通道分別對(duì)應(yīng)屏幕位置上的子像素點(diǎn)繪制到屏幕上,進(jìn)而顯示整個(gè)圖像。
1、RGB 表示圖像
一張圖像是由每個(gè)像素點(diǎn)繪成的,那么一像素點(diǎn)的 RGB 又該如何表示呢?
浮點(diǎn)表示
歸一化表示,取值范圍 0.0~1.0,如 openGL 對(duì)每個(gè)子像素點(diǎn)的表示方式。
整數(shù)表示
取值范圍 0~255 或者 00~FF,8bit 表示一個(gè)子像素。
如圖像格式
RGBA_8888,表示 4*8bit 表示一個(gè)像素,而 RGB_565 用 5 + 6 + 5 bit 表示一個(gè)像素。一張 1280 *
720, RGBA_8888 格式的圖片的大小= 1280 * 720 * 32bit = 1280 * 720 * 32 / 8
byte,也是位圖在內(nèi)存中占用 的大小。所以每一張圖像的裸數(shù)據(jù)都是很大的。
2、YUV 表示圖像
YUV (又稱為 YCbCr),一種亮度與色度分離的色彩格式;
Y : 亮度,即灰度值,除了表示亮度信號(hào)外,還含有較多的綠色通道量;
U : 藍(lán)色通道與亮度的差值;
V : 紅色通道與亮度的差值;
YUV 的優(yōu)勢(shì),人眼對(duì)亮度敏感,對(duì)色度不敏感,因此減少部分 UV 的數(shù)據(jù)量,人眼無法感知,從而可以通過壓縮 UV 的分辨率, 在不影響觀感的前提下,減小視頻的體積;
視頻幀裸數(shù)據(jù)之所以采用
YUV 色彩空間,使用為亮度信號(hào) Y 和色度信號(hào) UV 是分離的。當(dāng)無 UV 色度信號(hào),只有 Y
亮度信號(hào)時(shí),那么這樣表示的圖像就是黑白灰度圖像。彩色電視正是使用 YUV 空間使用 Y
亮度信號(hào)解決彩色電視與黑白電視的兼容問題、使黑白電視也能接收彩色電視信號(hào)。最常用的 YUV 都使用 8 個(gè) 字節(jié)來表示,所以取值范圍就是
0~255。
音頻最開始需要采樣,圖像也是一樣的,YUV 最常用的采樣格式是 4:2:0。
YUV 格式有兩大類:planar 和 packed
YUV420 Planar
YYYY
YYYY
UU
VVYUV 444 Packed
YUV YUV
YUV YUVYUV 碼流的存儲(chǔ)格式其實(shí)與其采樣的方式密切相關(guān),主流的采樣方式有三種,YUV4:4:4,YUV4:2:2, YUV4:2:0。
rueg4n2a3bx64027616229.png (77.03 KB, 下載次數(shù): 7)
下載附件
保存到相冊(cè)
rueg4n2a3bx64027616229.png
2024-9-20 06:48 上傳
在這里插入圖片描述
wzp1cgraque64027616329.png (52.99 KB, 下載次數(shù): 7)
下載附件
保存到相冊(cè)
wzp1cgraque64027616329.png
2024-9-20 06:48 上傳
在這里插入圖片描述
atfczlthwzj64027616429.png (46.97 KB, 下載次數(shù): 6)
下載附件
保存到相冊(cè)
atfczlthwzj64027616429.png
2024-9-20 06:48 上傳
在這里插入圖片描述YUV 4:4:4 采樣,每一個(gè) Y 對(duì)應(yīng)一組 UV 分量。YUV 4:2:2 采樣,每兩個(gè) Y 共用一組 UV 分量。YUV 4:2:0 采樣,每四個(gè) Y 共用一組 UV 分量。
3、YUV 和 RGB 轉(zhuǎn)化
凡是渲染到屏幕上的東西(文字、圖片或者其他),都要轉(zhuǎn)換為 RGB 的表示形式,那么 YUV 的表示形 式和 RGB 的表示形式之間是如何進(jìn)行轉(zhuǎn)換的呢?
為了實(shí)現(xiàn)格式轉(zhuǎn)換,我們首先要明確待轉(zhuǎn)換格式和目標(biāo)格式的特點(diǎn)和相互轉(zhuǎn)換關(guān)系,這是編程實(shí)現(xiàn)轉(zhuǎn)換的核心。對(duì)于
RGB 轉(zhuǎn) YUV 的過程,我們要首先拿到 RGB 文件的數(shù)據(jù),再通過上圖的 YUV 計(jì)算公式對(duì)其做 運(yùn)算,得到 YUV
數(shù)據(jù),從而實(shí)現(xiàn)轉(zhuǎn)換。而對(duì)于 YUV 轉(zhuǎn) RGB 則要首先獲得 YUV 數(shù)據(jù),用第二組 RGB 公式計(jì) 算得到 RGB
數(shù)據(jù)。
在本實(shí)驗(yàn)中,轉(zhuǎn)換公式如下。
Y = 0.298R + 0.612G + 0.117B;
U = -0.168R - 0.330G + 0.498B + 128;
V = 0.449R - 0.435G - 0.083B + 128;
R = Y + 1.4075( V - 128);
G = Y - 0.3455( U - 128) - 0.7169( V - 128);
B = Y + 1.779( U - 128);
視頻編碼視頻壓縮必要性以常見的1080P60的視頻計(jì)算一下沒有壓縮時(shí)數(shù)據(jù)量的大小(按紅綠藍(lán)三原色各一個(gè)字節(jié)數(shù)據(jù)量計(jì)算)
一秒鐘數(shù)據(jù)量:
1920(寬)x 1080(高)x 60(每秒幀數(shù))x 3(像素3原色字節(jié))= 373.248MB = 2.98Gbs
一小時(shí)數(shù)據(jù)量:
373.248MB x 3600秒 = 13.43T字節(jié)/小時(shí)
這個(gè)數(shù)據(jù)量很大,近3G的原始數(shù)據(jù)量在任何常規(guī)網(wǎng)絡(luò)上都無法實(shí)現(xiàn)視頻的傳輸。因此我們就需要一種數(shù)據(jù)處理方式將海量的原始圖像數(shù)據(jù)壓縮到可在互聯(lián)網(wǎng)上傳輸?shù)臄?shù)據(jù)量,這個(gè)過程叫做視頻的編碼。
視頻壓縮原理幀內(nèi)壓縮
(1)將幀畫面進(jìn)行分層壓縮(Y層:亮度相關(guān)、cr層:顏色相關(guān)、cb層:顏色相關(guān)),人對(duì)黑白亮度非常敏感,對(duì)顏色不太敏感,所以Y層盡量減少壓縮,cr層、cb層多壓縮。
(2)宏塊壓縮:一幀畫面可以分很多方塊,相同的方塊可以壓縮,不同的保留
幀間壓縮
I幀:關(guān)鍵幀,記錄一幀完整的數(shù)據(jù)
P幀:前向幀,記錄本幀與前一幀不同的數(shù)據(jù)。
B幀:雙向幀,記錄本幀與前幀和下一幀不同的數(shù)據(jù)。
gmb3emqsfkj64027616529.png (176.85 KB, 下載次數(shù): 7)
下載附件
保存到相冊(cè)
gmb3emqsfkj64027616529.png
2024-9-20 06:48 上傳
在這里插入圖片描述幀與幀率
幀,視頻的一個(gè)基本概念,表示一張畫面,一個(gè)視頻就是由許多幀組成的;
幀率,即單位時(shí)間內(nèi)幀的數(shù)量,單位為 : 幀/秒 或 fps(frames per second),幀率越高則畫面越順滑過渡越自然;
硬解碼和軟解碼
軟解碼,指利用 CPU 的計(jì)算能力來解碼,通常若 CPU 的能力不是很強(qiáng)的時(shí)候,一則解碼速度會(huì)比較慢,二則手機(jī)可能出現(xiàn)發(fā)熱現(xiàn)象;但是, 由于使用統(tǒng)一的算法,兼容性會(huì)很好;
硬解碼,指的是利用專門的解碼芯片來加速解碼,通常硬解碼的解碼速度會(huì)快很多,但是由于硬解碼由各個(gè)廠家實(shí)現(xiàn),質(zhì)量參差不齊,非常容易出現(xiàn)兼容性問題;
end
一口Linux
關(guān)注,回復(fù)【1024】海量Linux資料贈(zèng)送
精彩文章合集
文章推薦
?【專輯】ARM?【專輯】粉絲問答?【專輯】所有原創(chuàng)?【專輯】linux入門?【專輯】計(jì)算機(jī)網(wǎng)絡(luò)?【專輯】Linux驅(qū)動(dòng)?【干貨】嵌入式驅(qū)動(dòng)工程師學(xué)習(xí)路線?【干貨】Linux嵌入式所有知識(shí)點(diǎn)-思維導(dǎo)圖 |
|