在以前的文章裏,咱們說了很多關於音視頻相關的內容,可是一直沒有系統的來介紹視頻通訊,接下來咱們將出一個系列關於視頻通訊的文章。幫助你們對視頻通訊有一個更全面的認識。系列文大綱以下:數據庫
視頻通訊採集
視頻通訊處理
視頻通訊編碼與封裝
視頻通訊的傳輸與推流架構
今天給你們帶來是咱們系列文章的第一篇《視頻通訊採集》框架
視頻通訊採集是視頻通訊的第一步,採集主要包括兩個方面:視頻採集和音頻採集。編碼
視頻主要是經過攝像頭進行採集,這裏面涉及到攝像頭的相關操做以及攝像頭的參數設置,因爲各個廠商的攝像頭存在差別,所以這方面也會有一些差別。音頻則經過麥克風進行採集,不一樣產品的麥克風對音頻採樣率的支持不一樣。spa
攝像頭、圖像比例、兼容性等問題視頻
麥克風、音頻採樣率、回聲消除處理、緩衝區大小等問題接口
在iOS開發中,對音視頻的採集均可以用<AVFoundation>框架。而Android開發主要是基於其C/S層架構,客戶端提供調用接口,而實現工做則是在服務端完成。進程
視頻中咱們看到的內容是由圖片一張張組合連續播放而成。圖像的採集過程主要由攝像頭等設備拍攝成 YUV 的原始數據,而後通過編碼器壓縮成數據分發出去。圖片
圖像是一個視頻內容的主要部分。圖像採集時主要涉及到下面的參數:資源
圖像格式:一般採用 YUV 格式存儲原始數據信息,其中包含用 8 位黑白表示的灰度圖,以及由 RGB 組合成的彩色圖。
傳輸通道:正常狀況下視頻的拍攝只需 1 路通道,隨着 3D、VR等技術的日漸成熟,爲了拍攝一個360° 的視頻,須要進行不一樣角度的拍攝,而後通過多通道傳輸後合成。
分辨率:如今的設備屏幕尺寸的日益增多增大,視頻採集過程當中原始視頻分辨率就起着愈來愈重要的做用,由於後續處理環節中使用的全部視頻分辨率的定義都以原始視頻分辨率爲基礎。
採樣頻率:採樣頻率反映了採集卡處理圖像的速度和能力。在進行高度圖像採集時,須要注意採集卡的採樣頻率是否知足要求。採樣率越高,圖像質量越高,同時保存這些圖像信息的數據量也越大。
以上,構成了一個視頻採集的主要技術參數,而對於視頻通訊開發者來講,在瞭解這些細節後,有利於在實際開發中對採集環節中技術參數的控制,減小後續編碼環節的壓力。
圖像的採集源有攝像頭、屏幕錄製等,視頻通訊的採集源主要是攝像頭,經過攝像頭獲取圖像信息。這裏簡單說一下Android和iOS。
Android中不少基本的架構都是C/S層架構。Android Camera的架構也是C/S架構,service端爲Client進程提供豐富的接口,使它能輕鬆得到Camera數據的地址,而後處理這些數據。可是在Android中調用攝像頭須要相應的權限,並且權限申請在Android 6.0後變成了動態申請。
而iOS端視頻採集,相比安卓更加便利,使用AVFoundation框架提供的一系列的API便可實現。
在說音頻採集內容以前,先了解一些音頻基礎知識:
PCM:脈衝編碼調製,一種將聲音數字化的方法。
採樣精度(bit pre sample):每一個聲音樣本的採樣位數。
聲道(channel):相互獨立的音頻信號數,單聲道(mono)立體聲(Stereo)
語音幀(frame):在音頻數據中,幀(frame)是全部通道的一個樣本。
採樣頻率(sample rate):每秒鐘採集多少個聲音樣本
聲音在通過麥克風後,會轉換成一連串電壓變化的信號。要將這樣的電壓變化的信號轉化成爲PCM信號則須要進行三個過程:抽樣、量化、編碼。要實現這三個過程,則須要使用三個參數,它們是:採樣頻率、採樣位數和聲道數。
採樣頻率即每秒鐘取得聲音樣本的次數。採樣頻率越高,聲音的質量也就越好,聲音的還原度越高,但同時它佔的資源比越多。因爲人耳的對聲音的頻率分辨有限,過高或過低的頻率並不能分辨出來。在16位聲卡中有22KHz、44KHz等幾級,目前的經常使用採樣頻率不超過48KHz。
採樣位數(採樣值)即將採樣樣本幅度量化。它是用來衡量聲音波動變化的一個參數。它的數值越大,分辨率也就越高,所發出聲音的強度越強。
在計算機中採樣位數通常有8位和16位之分,8位不是說把縱座標分紅8份,而是分紅2的8次方即256份; 同理16位是把縱座標分紅2的16次方65536份。採樣位數的值越大,其記錄的波形就越接近原始信號。
聲道主要有單聲道和立體聲之分,單聲道的聲音只能使用一個喇叭發聲(有的也處理成兩個喇叭輸出同一個聲道的聲音),立體聲的pcm可使兩個喇叭都發聲(通常左右聲道有分工) ,更能感覺到空間效果。
說完採樣頻率、採樣位數和聲道數,接下來咱們看一下PCM文件所佔容量公式:
PCM文件存儲量 = (採樣頻率·採樣位數·聲道數·時間)/8 (單位:字節數)
音頻源:音頻源相比視頻源來講,其採集源有限主要就是麥克風。安卓端音頻採集大都使用AudioRecord,iOS端則會使用蘋果自身的Audio Unit進行採樣。
緩衝區:說完音頻源接下來就說一下緩衝區。緩衝區是麥克風採集到的數據後放置的一個地方。數據庫在這裏進行存放,再被讀取得到錄製的音頻數據。這裏會牽扯到緩衝區大小。緩衝區設置得大一些,能夠增長系統的穩定性;而把緩衝區設置得小一寫,則會提高系統的響應時間,減小音頻延遲。
以上就是咱們視頻通訊採集的全部內容,下一篇咱們將介紹視頻處理。