視頻直播技術(shù)詳解采集是整個視頻推流過程中的第一個環(huán)節(jié),它從系統(tǒng)的采集設(shè)備中獲取原始視頻數(shù)據(jù),將其輸出到下一個環(huán)節(jié)。視頻的采集涉及兩方面數(shù)據(jù)的采集:音頻采集和圖像采集,壁紙還能怎么創(chuàng)新它們分別對應(yīng)兩種完全不同的輸入源和數(shù)據(jù)格式。音頻數(shù)據(jù)既能與圖像結(jié)合組合成視頻數(shù)據(jù),也能以純音頻的方式采集播放,后者在很多成熟的應(yīng)用場景如在線電臺和語音電臺等起著非常重要的作用。音頻的采集過程主要通過設(shè)備將環(huán)境中的模擬信號采集成 PCM 編碼的原始數(shù)據(jù),然后編碼壓縮成 MP3 等格式的數(shù)據(jù)分發(fā)出去。常見的音頻壓縮格式有:MP3,AAC,HE AAC,Opus,F(xiàn)LAC,Vorbis (Ogg),Speex 和 AMR等音頻采集和編碼主要面臨的挑戰(zhàn)在于:延時敏感、卡頓敏感、噪聲消除(Denoise)、回聲消除(AEC)、靜音檢測(VAD)和各種混音算法等圖像傳輸格式:通用影像傳輸格式(Common Intermediate Format)是視訊會議(video conference)中常使用的影像傳輸格式圖像格式:通常采用 YUV 格式存儲原始數(shù)據(jù)信息,其中包含用 8 位表示的黑白圖像灰度值,以及可由 RGB 三種色彩組合成的彩色圖像傳輸通道:正常情況下視頻的拍攝只需 1 路通道,隨著 VR 和 AR 技術(shù)的日漸成熟,為了拍攝一個完整的 360 視頻,可能需要通過不同角度拍攝,形象宣傳片—“深圳地鐵三影視視頻制作-深圳地鐵三號線,然后經(jīng)過多通道傳輸后合成分辨率:隨著設(shè)備屏幕尺寸的日益增多,視頻采集過程中原始視頻分辨率起著越來越重要的作用,后續(xù)處理環(huán)節(jié)中使用的所有視頻分辨率的定義都以原始視頻分辨率為基礎(chǔ)。視頻采集卡能支持的最大點陣反映了其分辨率的性能采樣頻率:采樣頻率反映了采集卡處理圖像的速度和能力。在進行高度圖像采集時,需要注意采集卡的采樣頻率是否滿足要求。采樣率越高,影視視頻制作圖像質(zhì)量越高,同時保存這些圖像信息的數(shù)據(jù)量也越大以上,構(gòu)成了一個視頻采集的主要技術(shù)參數(shù),以及視頻中音頻和圖像編碼的常用格式。而對于直播 App 開發(fā)者來說,了解這些細(xì)節(jié)雖然更有幫助,但實際開發(fā)過程中可能很少能夠關(guān)注采集環(huán)節(jié)中技術(shù)參數(shù)的控制,而是直接在 SDK 中將采集后的數(shù)據(jù)傳遞給下一個處理和編碼環(huán)節(jié)。1.攝像頭采集對于視頻內(nèi)容的采集,目前攝像頭采集是社交直播中最常見的采集方式,比如主播使用手機的前置和后置攝像頭拍攝。在現(xiàn)場直播場景中,也有專業(yè)的攝影、攝像設(shè)備用來采集。影視視頻制作安防監(jiān)控場景中也有專業(yè)的攝像頭進行監(jiān)控采集目前七牛提供的 SDK 對以上兩類攝像頭的采集都支持,對于手機,iOS 和 Android 分別支持前置后置攝像頭的采集,只是 iOS 由于設(shè)備種類和系統(tǒng)版本不多,因此采集模塊兼容性較好;而 Android 需要適配的硬件設(shè)備和系統(tǒng)則非常多,目前支持 Android 4.0.3 及以上的攝像頭采集。對于專業(yè)攝像機或者攝像頭,七牛云提供了兼容適合嵌入式系統(tǒng)的 C 語言采集模塊的實現(xiàn),歡迎參考使用:GitHub pili engineering/ipcam_sdk 屏幕錄制采集的方式在游戲直播場景中非常常見,目前我們在 Android SDK 中實現(xiàn)了屏幕錄制的功能。而 iOS 則由于系統(tǒng)本身沒有開放屏幕錄制的權(quán)限而沒法直接操作,但對于 iOS 9 以上的版本,影視視頻制作是有個取巧的辦法,可以通過模擬一個 AirPlay 鏡像連接到(當(dāng)前 App)自身,這樣就可以在軟件上捕獲到屏幕上的任何操作,達到錄制屏幕的效果在教育直播或者會場演講場合,我們經(jīng)常看見需要錄制電腦桌面上 PPT 的場景,針對這種場景,目前市面上比較方便的方案是使用開源的桌面推流工具 OBS 來進行屏幕錄制和推流:Open Broadcaster Software 除了從硬件設(shè)備采集視頻進行推流之外,我們也可能需要將一個視頻或者音頻文件以直播流的形式實時傳輸給觀眾,比如在線電臺或者電視節(jié)目,它們的輸入可能直接來自于一些已經(jīng)錄制剪輯好的視頻內(nèi)容開放式設(shè)計以上從采集內(nèi)容和采集源兩個維度分別介紹了視頻采集相關(guān)的知識,但對于采集源來說,電影票價越來越低市場上可見的采集源遠(yuǎn)遠(yuǎn)不止這三種,即便是攝像頭也有很多分類。對于一個完整的覆蓋推流、傳輸和播放三個環(huán)節(jié)的直播云服務(wù)來說,支持盡可能多的采集源和播放終端是一項既無法規(guī)避也很難完成的工作為了支持市場上所有采集源的接入,我們在 SDK 中采用了開放式的設(shè)計,只要采集源實現(xiàn)方遵循相應(yīng)的接口,即可支持任意的采集源圖中我們把采集的內(nèi)容分為圖像和音頻,其中圖像的采集源包含攝像頭、屏幕錄制或者本地的視頻文件,甚至是其它需要重新定義和實現(xiàn)的采集源。而音頻的采集源包含麥克風(fēng)、系統(tǒng)聲音或者本地音頻文件,當(dāng)然也可以為它定義別的輸入源這樣設(shè)計最大的好處在于,可以以輕量的設(shè)計方式支持豐富的采集源,而采集源的具體實現(xiàn)也可以交給使用者在下一篇連載中,我們將詳細(xì)介紹下直播中的處理環(huán)節(jié),解答如何滿足市場上主播的各種需求如美顏、水印、連麥互動等。