AVFoundation 之數字媒體(音頻)

本文只是進階的科普篇,不瞭解也不影響你的開發。

歡迎關注我的博客git

由上一章咱們可清楚的瞭解到,攝像頭捕捉的核心類是 AVCaptureSession
對於攝像頭及麥克風對採集到的信息如何被數字化的呢?這就是本章要說的。數組

由於在這裏咱們談論的對象就是 數字媒體ui

咱們可能都知道對媒體進行數字化主要有兩種方式。

  • 時間採樣
  • 空間採樣
再細點說時間採樣的對象通常是對聲音的處理,空間採樣通常用在圖片數字化及其餘可視化媒體內容數字化的過程。咱們對視頻進行採樣的時候這兩樣就不可避免的須要使用,視頻信號既有空間屬性也有時間屬性。

既然進行採樣就必須知道 模擬信號數字信號 的轉換:
咱們知道 聲音,圖像確定都是模擬量,而對於處理器而言是沒法直接操做模擬量的,這就牽扯到須要將模擬量轉換爲 數字量 的一個過程。
模擬量 多是標準的正弦波,也多是不規則的任何波形 等等....什麼方波,三角波編碼

數字量: 就是用一系類0與1組成的二進制代碼表示某個信號大小的量。
好比咱們用一個 00000~11111的5位二進制量表示一個正弦波如圖:
3d

5位二進制最低只能表示32種組合形式,故要把這個正弦波最大值與最小值之間分爲32等份,每一等分用一組5位二進制來表示 。code

讀到這裏你就會發現一個問題:任意相鄰的之間的模擬量咱們是沒法表示出了的。
哈哈沒錯!這裏就牽扯到量化偏差。
這裏也要說明把 這個轉換爲二進制的過程稱爲 編碼cdn

麥克風對音頻的採集:
麥克風內部含有一個振動,當年對着麥克風講話的時候,膜片就會根據感覺到的聲波進行振動,推進裏邊的磁鐵造成變化的電流,這樣變化的電流送到後面的聲音處理電路進行放大處理。視頻

這裏就涉及模數的轉換 A/D(Analog to Digital)
在A/D轉換中,由於輸入的模擬信號在時間上是連續的,而輸出的數字信號代碼是離散的。故在轉換的過程當中必須在一系列選定的瞬間(座標上一些規定的點上)對輸入的模擬信號進行採樣,在把這些採樣的值轉換爲數字量。對象

由此:通常的 A/D 轉換過程是經過 採樣保持量化編碼 這三個過程來完成的。blog

首先對輸入的模擬電壓信號採樣,採樣結束後進入保持時間,在這段時間將採樣的電壓量轉換爲數字量,按照必定的編碼形式給出轉換結果,繼續下一次採樣

上面說過數字信號在時間上是離散的,在數值上的變化也不是連續的,這樣就說明了: 任何一個數字量的大小,都得以某個最小數量單位的整數倍來表示的。故在用數字表示採樣時,必須把它換成這個最小單位的整數倍,該過程即:量化

其最小單位就是 量化單位用 △ 表示,顯然數字信號最低有效位中的1表示的數量大小,就是量化單位 △。把量化的數值用二進制代碼表示,就是 編碼

既然信號是連續的,那麼它就不必定能被△整除,這裏就不可避免的會引入偏差,即量化偏差。上面的說到 數字量的時候,劃分了若干份數,就是劃分不一樣的量化等級。故不一樣的劃分能夠獲得不一樣的量化偏差。

音頻數字化的過程包含編碼過程。該過程也稱爲:線性脈衝編碼調製(linear pulse-code modulation)

採樣定理:

咱們定義 採樣信號爲 $v_s$,模擬信號爲$v_I$
爲了將模擬信號轉爲數字信號,音頻的 線性脈衝編碼調製 過程採樣或者測量一個固定的音頻信號,過程的週期率稱爲採樣率。
用 $f_s $爲採樣頻率, $f_imax$爲輸入信號的最高頻率份量的頻率
在知足採樣定理的條件下,用一個低通濾波器將信號$v_s$還原爲$v_I$,這個低通濾波器的電壓傳輸係數 |A($f$)| 在低於$f_imax$的範圍內應保存不變,而在 $f_s $-$f_imax$之前迅速降低爲零,故採樣定理規定了A/D轉換的頻率下限。

採樣頻率提升之後A/D轉換器每次進行轉換的時間也相應縮短了,這裏就要去轉換電路必須具有更快的工做速度。因此不能無限制的提升採樣頻率,一般取 $f_s$=(3~5)$f_imax$ 就知足了需求。

上面只是給出了一個範圍

那麼咱們如何知道一個最優的採樣頻率用於生成足夠好的數組呈現效果呢?
話說站在巨人的肩膀上的現代人仍是很是幸運的!

尼奎斯特頻率(Nyquist rate)

這位工程師已經幫咱們捕捉到了一個特定的頻率,該頻率爲須要採樣的對象的最高頻率的2倍。看吧上面說是3~5一般就知足了需求...。這裏咱們向 這位 工程師 致敬.

若是你還想了解A/D內部的轉換原理,請留言!
我會詳細說明 轉換器內部的 電壓比較器寄存器代碼轉換器的原理

必然的還有一篇講(視頻)

敬請期待 😁

相關文章
相關標籤/搜索