• 正文
    • 1、視頻
    • 2、色彩空間
    • 3、音頻
    • 4、FFmpeg
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

干貨 | 音視頻相關(guān)技術(shù)基礎(chǔ)知識總結(jié)

2021/10/26
338
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

前陣子寫了很多筆記,由于忙于研究生課程學(xué)習(xí),故很少有時間整理筆記分享到公眾號上,今天整理的筆記是我之前學(xué)習(xí)音視頻技術(shù)相關(guān)的筆記整理。

1、視頻

 

1.1、視頻幀

幀,是視頻的一個基本概念,表示一張畫面,一個視頻就是由許許多多的幀組成的。

1.2、幀率

即單位內(nèi)幀的數(shù)量,單位為:幀/秒 或 fps(frames per second),一秒內(nèi)包含多少張圖片,圖片越多,畫面越順滑,過渡越自然。

常見的幀率典型值:

(1)24/25 fps:1秒24/25幀,一般的電影頻率。

(2)30/60 fps:1秒30/60幀,游戲的頻率,30幀可以接受,60幀會感覺更加流暢逼真

(3)85fps:這個幀率及以上人眼基本無法察覺出來,更高的幀率在視頻里沒有太大意義。

2、色彩空間

 

2.1、RGB

通過R、G、B三種基礎(chǔ)色,可以混合出所有的顏色

2.2、YUV

也叫,YCbCr,是一種亮度與色度分離的色彩格式

(1)Y:亮度,就是灰度值,出了表示亮度信號外,還含有較多的綠色通道量

(2)U:藍(lán)色通道與亮度的差值

(3)V:紅色通道與亮度的差值

優(yōu)勢:

人眼對亮度敏感,對色度不敏感,因此減少部分UV的數(shù)據(jù)量,人眼卻無法感知出來,這樣可以通過壓縮UV分辨率,在不影響感觀的前提下,減少視頻的體積。

2.3、RGBYUV的換算

(1)RGB轉(zhuǎn)YUV算法

Y = 0.299R + 0.587G + 0.114B

U = -0.147R - 0.289G + 0.436B

V = 0.635R - 0.515G - 0.100B

(2)YUV轉(zhuǎn)RGB算法

R = Y + 1.14V

G = Y - 0.39U - 0.58V

B = Y + 2.03U

3、音頻

 

3.1、基本知識

人類能夠聽到的所有聲音都稱之為音頻,在計算機中,音頻只是存儲在計算機里的聲音。

PCM:音頻數(shù)據(jù)的承載方式最常用的是脈沖編碼調(diào)制。

在自然界中,聲音是連續(xù)不斷的,是一種模擬信號,那怎樣才能把聲音保存下來呢?就是將這些模擬信號數(shù)字化,即模數(shù)轉(zhuǎn)換,將模擬信號轉(zhuǎn)換為數(shù)字信號。

聲音是一種波,由自己的振幅和頻率,那么要保存聲音,就要保存聲音在各個時間點上的振幅。而數(shù)字信號并不能連續(xù)保存所有時間點的振幅。

奈奎斯特采樣定理:為了不失真地恢復(fù)模擬信號,采樣頻率應(yīng)該不小于模擬信號頻率中最高頻率的2倍。

3.2、采樣率和采樣位數(shù)

(1)采樣率

根據(jù)奈奎斯特采樣定理,人耳能聽到的最高頻率為20KHz,所以為了滿足人耳的聽覺要求,采樣率至少為40KHz,通常為44.1KHz,更高的通常為48KHz。

注意:人耳聽覺頻率范圍[20Hz,20KHz]。

(2)采樣位數(shù)

波形振幅在模擬信號上也是連續(xù)的樣本值,而在數(shù)字信號中,信號一般是不連續(xù)的,所以模擬信號量化后,只能取一個近似的整數(shù)值,為了記錄這些振幅值,采樣器會采用一個固定的位數(shù)來記錄這些振幅值,通常有8位、16位、32位。

注意:位數(shù)越多,記錄的值越準(zhǔn)確,還原度越高,但是占用的硬盤空間越大。

位數(shù) 最小值 最大值
8 0 255
16 -32768 32767
32 -2147483648 2147483647
 

3.3、音頻編碼

由于數(shù)字信號是由0、1組成的,因此,需要將幅度值轉(zhuǎn)化為一系列0和1進(jìn)行存儲,也就是編碼。

3.4、PCM的采集步驟

模擬信號->采樣(奈奎斯特采樣定理)->量化->編碼->數(shù)字信號

3.5、聲道數(shù)

聲道數(shù)是指支持能不同發(fā)聲(注意是不同聲音)的音響的個數(shù)。

  • 單聲道:1個聲道雙聲道:2個聲道立體聲道:默認(rèn)為2個聲道立體聲道(4聲道):4個聲道

3.6、碼率

碼率是指一個數(shù)據(jù)量中每秒鐘能通過的信息量,單位bps(bit per second)

碼率 = 采樣率 * 采樣位數(shù) * 聲道數(shù)

3.7、常見的音頻格式

CD格式、WAVE(*.WAV)、AIFFMP3、MIDIAAC、WMA、OggVorbis

4、FFmpeg

 

4.1、FFmpeg是什么?

是一套可以用來記錄、轉(zhuǎn)化數(shù)字音頻、視頻、并能將其轉(zhuǎn)化為流的開源計算機程序。它有著非常強大的功能,主要包括:視頻采集功能、視頻格式轉(zhuǎn)換、視頻抓圖、給視頻加水印等。

4.2、FFmpeg的組成

FFmpeg由三個部分組成:

(1)工具

分別是ffmpeg、ffplayffserverffprobe。

ffmpeg:音視頻轉(zhuǎn)碼、轉(zhuǎn)換器

ffplay:簡單的音視頻播放器

ffserver流媒體服務(wù)器

ffprobe:簡單的多媒體碼流分析器

(2)SDK

提供開發(fā)者使用的SDK,我們可以根據(jù)自己的需求使用這些庫開發(fā)自己的應(yīng)用程序,這些庫主要有:

libavcodec:包含音視頻編碼器解碼器

libavutil:包含多媒體應(yīng)用常用的簡化編程的工具,如隨機數(shù)生成器、數(shù)據(jù)結(jié)構(gòu)、數(shù)學(xué)函數(shù)等功能

libavformat:包含多種多媒體容器格式的封裝、解封裝工具

libavfilter:包含多媒體處理常用的濾鏡功能

libavdevice:用于音視頻數(shù)據(jù)采集和渲染等功能的設(shè)備相關(guān)

libswscale:用于圖像縮放和色彩空間和像素格式轉(zhuǎn)換功能

libswresample:用于音頻量采樣和格式轉(zhuǎn)換等功能

libpostproc:用于后期處理,當(dāng)我們使用filter的時候,需要打開這個模塊,filter會用到這個模塊里的一些基礎(chǔ)函數(shù)

(3)源代碼

整個工程的源代碼,無論是編譯出來的可執(zhí)行程序還是SDK

它的源代碼由C語言實現(xiàn),主要在Linux平臺上進(jìn)行開發(fā)。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

本科畢業(yè)于華南理工大學(xué),現(xiàn)美國卡羅爾工商管理碩士研究生在讀,曾就職于世界名企偉易達(dá)、聯(lián)發(fā)科技等,多年嵌入式產(chǎn)品開發(fā)經(jīng)驗,在智能玩具、安防產(chǎn)品、平板電腦、手機開發(fā)有豐富的實戰(zhàn)開發(fā)經(jīng)驗,現(xiàn)任深圳市云之手科技有限公司副總經(jīng)理、研發(fā)總工程師。