「ApsaraVideo for Live技術詳解」系列之一:採集,

來源:互聯網
上載者:User

「ApsaraVideo for Live技術詳解」系列之一:採集,

關於直播的技術文章不少,成體系的不多。我們將用七篇文章,更系統化地介紹當下大熱的ApsaraVideo for Live各環節的關鍵技術,協助ApsaraVideo for Live創業者們更全面、深入地瞭解ApsaraVideo for Live技術,更好地技術選型。

本系列文章大綱如下:

(一)採集

(二)處理

(三)編碼和封裝

(四)推流和傳輸

(五)延遲最佳化

(六)現代播放器原理

(七)SDK 效能測試模型

本篇將重點聊聊:採集。

採集是整個視頻推流過程中的第一個環節,它從系統的採集裝置中擷取原始視頻資料,將其輸出到下一個環節。視頻的採集涉及兩方面資料的採集:音頻採集和映像採集,它們分別對應兩種完全不同的輸入源和資料格式。

採集內容

1.音頻採集

音頻資料既能與映像結合組合成視頻資料,也能以純音訊方式採集播放,後者在很多成熟的應用情境如線上電台和語音電台等起著非常重要的作用。音訊採集過程主要通過裝置將環境中的類比訊號採集成 PCM 編碼的未經處理資料,然後編碼壓縮成 MP3 等格式的資料分發出去。常見的音頻壓縮格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等。

音頻採集和編碼主要面臨的挑戰在於:延時敏感、卡頓敏感、雜訊消除(Denoise)、回聲消除(AEC)、靜音檢測(VAD)和各種混音演算法等。

在音頻採集階段,參考的主要技術參數有 :

  • 採樣率(samplerate):採樣就是把類比訊號數字化的過程,採樣頻率越高,記錄這一段音頻訊號所用的資料量就越大,同時音頻品質也就越高。

  • 位寬:每一個採樣點都需要用一個數值來表示大小,這個數值的資料類型大小可以是:4bit、8bit、16bit、32bit 等等,位元越多,表示得就越精細,聲音品質自然就越好,而資料量也會成倍增大。我們在音頻採樣過程中常用的位寬是 8bit 或者 16bit。

  • 聲道數(channels):由於音訊採集和播放是可以疊加的,因此,可以同時從多個音頻源採集聲音,並分別輸出到不同的擴音器,故聲道數一般表示聲音錄製時的音源數量或回放時相應的擴音器數量。聲道數為 1 和 2 分別稱為單聲道和雙聲道,是比較常見的聲道參數。

  • 音訊框架(frame):音頻跟視頻很不一樣,視頻每一幀就是一張映像,而從上面的正玄波可以看出,音頻資料是流式的,本身沒有明確的一幀幀的概念,在實際的應用中,為了音頻演算法處理/傳輸的方便,一般約定俗成取 2.5ms~60ms 為單位的資料量為一幀音頻。這個時間被稱之為“採樣時間”,其長度沒有特別的標準,它是根據轉碼器和具體應用的需求來決定的。

根據以上定義,我們可以計算一下一幀音訊框架的大小。假設某音頻訊號是採樣率為 8kHz、雙通道、位寬為 16bit,20ms 一幀,則一幀音頻資料的大小為:

size = 8000 x 2 x 16bit x 0.02s = 5120 bit = 640 byte

2.映像採集映像採集的圖片結果組合成一組連續播放的動畫,即構成視頻中可肉眼觀看的內容。映像的採集過程主要由網路攝影機等裝置拍攝成 YUV 編碼的未經處理資料,然後經過編碼壓縮成 H.264 等格式的資料分發出去。常見的視頻封裝格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等。

映像由於其直觀感受最強並且體積也比較大,構成了一個視頻內容的主要部分。映像採集和編碼面臨的主要挑戰在於:裝置相容性差、延時敏感、卡頓敏感以及各種對映像的處理操作如美顏和浮水印等。

在映像採集階段,參考的主要技術參數有:

  • 映像傳輸格式:通用影像傳輸格式(Common Intermediate Format)是視訊會議(video conference)中常使用的影像傳輸格式。

  • 映像格式:通常採用 YUV 格式儲存未經處理資料資訊,其中包含用 8 位表示的黑白映像灰階值,以及可由 RGB 三種色彩組合成的彩色映像。

  • 傳輸通道:正常情況下視頻的拍攝只需 1 路通道,隨著 VR 和 AR 技術的日漸成熟,為了拍攝一個完整的 360° 影片,可能需要通過不同角度拍攝,然後經過多通道傳輸後合成。

  • 解析度:隨著裝置螢幕尺寸的日益增多,視頻採集過程中原始視頻解析度起著越來越重要的作用,後續處理環節中使用的所有視頻解析度的定義都以原始視頻解析度為基礎。視頻採集卡能支援的最大點陣反映了其解析度的效能。

  • 採樣頻率:採樣頻率反映了採集卡處理映像的速度和能力。在進行高度映像採集時,需要注意採集卡的採樣頻率是否滿足要求。採樣率越高,映像品質越高,同時儲存這些映像資訊的資料量也越大。

以上,構成了一個視頻採集的主要技術參數,以及視頻中音頻和映像編碼的常用格式。而對於直播 App 開發人員來說,瞭解這些細節雖然更有協助,但實際開發過程中可能很少能夠關注採集環節中技術參數的控制,而是直接在 SDK 中將採集後的資料傳遞給下一個「處理」和「編碼」環節。

 

採集源

1.網路攝影機採集

對於視頻內容的採集,目前網路攝影機採集是社交直播中最常見的採集方式,比如主播使用手機的前置和後置網路攝影機拍攝。在現場直播情境中,也有專業的攝影、攝像裝置用來採集。安防監控情境中也有專業的網路攝影機進行監控採集。

目前七牛提供的 SDK 對以上兩類網路攝影機的採集都支援,對於手機,iOS 和 Android 分別支援前置後置網路攝影機的採集,只是 iOS 由於裝置種類和系統版本不多,因此採集模組相容性較好;而 Android 需要適配的硬體裝置和系統則非常多,目前支援 Android 4.0.3 及以上的網路攝影機採集。對於專業攝像機或者網路攝影機,七牛雲提供了相容適合嵌入式系統的 C 語言採集模組的實現,歡迎參考使用:GitHub - pili-engineering/ipcam_sdk

2.螢幕錄製

螢幕錄製採集的方式在遊戲直播情境中非常常見,目前我們在 Android SDK 中實現了螢幕錄製的功能。而 iOS 則由於系統本身沒有開放螢幕錄製的許可權而沒法直接操作,但對於 iOS 9 以上的版本,是有個取巧的辦法,可以通過類比一個 AirPlay 鏡像串連到(當前 App)自身,這樣就可以在軟體上捕獲到螢幕上的任何操作,達到錄製螢幕的效果。

在教育直播或者會場演講場合,我們經常看見需要錄製電腦案頭上 PPT 的情境,針對這種情境,目前市面上比較方便的方案是使用開源的案頭推流工具 OBS 來進行螢幕錄製和推流:Open Broadcaster Software

3.從視頻檔案推流

除了從硬體裝置採集視頻進行推流之外,我們也可能需要將一個視頻或者音頻檔案以直播流的形式即時傳輸給觀眾,比如線上電台或者電視節目,它們的輸入可能直接來自於一些已經錄製剪輯好的視頻內容。

 

開放式設計

以上從採集內容和採集源兩個維度分別介紹了視頻採集相關的知識,但對於採集源來說,市場上可見的採集源遠遠不止這三種,即便是網路攝影機也有很多分類。對於一個完整的覆蓋推流、傳輸和播放三個環節的直播雲端服務來說,支援儘可能多的採集源和播放終端是一項既無法規避也很難完成的工作。

為了支援市場上所有採集源的接入,我們在 SDK 中採用了開放式的設計,只要採集源實現方遵循相應的介面,即可支援任意的採集源。

圖中我們把採集的內容分為映像和音頻,其中映像的採集源包含網路攝影機、螢幕錄製或者本地的視頻檔案,甚至是其它需要重新定義和實現的採集源。而音訊採集源包含麥克風、系統聲音或者本地音頻檔案,當然也可以為它定義別的輸入源。

這樣設計最大的好處在於,可以以輕量的設計方式支援豐富的採集源,而採集源的具體實現也可以交給使用者。

在下一篇連載中,我們將詳細介紹下直播中的處理環節,解答如何滿足市場上主播的各種需求如美顏、浮水印、連麥互動等。

敬請期待!

 

本文作者: 陶澤宇@七牛直播雲工程師,更多雲行業技術洞見請訪問七牛雲部落格。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.