《音視訊直播------總體概述》
阿新 • • 發佈:2019-02-05
概述
- 直播的現狀
- 2016年,是一個直播年。直播行業快速發展,同時也滋生了大大小小上千家相關的公司。
直播和是典型的“社會化視訊”2012-2015 年是中國網路直播行業高速發展的四年:娛樂直播使用者突破 1 億,娛樂直播收入突破 100 億,微博、陌陌也通過直播找到了新的生命力。
- 直播的技術
- 直播技術概況來說,可以分為 採集,前處理,編碼,傳輸,解碼,渲染 這幾個環節
技術整體概覽
- 圖例:
分步解析
音視訊採集
- 音視訊的採集是直播架構的第一個環節,也是直播的視訊來源
- 採集的來源包括:
- PC端:螢幕攝像頭(攝像頭驅動適配)
- iOS端:攝像頭採集(螢幕採集?)
- Android端:螢幕攝像頭採集(硬體過多,適配一堆坑)
前處理
- 使用美顏相機&美圖秀秀已經是網路發照片&發視訊必備技能了
- 80%的主播沒有美顏簡直不能看(當然還是有美女的)
- 不能看如何吸引使用者&觀眾
- 對視訊進行美顏,已成標配
- 處理主要包括,美顏、模糊效果、水印等
- 總之就是讓人變美、變帥
- 各個平臺處理方式
- PC端:美顏鏡頭、一些美顏軟體
- iOS端:影象處理庫是GPUImage,提供了豐富的預處理效果,也可利用該庫自定義設計
- Android端:Google開源的grafika,是一個非常強大的圖形處理庫
編碼
- 不經編碼的視訊非常龐大,儲存起來都麻煩,更何況網路傳輸
- 編碼通過壓縮音視訊資料來減少資料體積,方便音視訊資料的推流,拉流和儲存,能大大提高儲存傳輸效率
- 音視訊必須經過壓縮編碼才能進行儲存和傳輸
- 編碼方式:
- 硬編碼:使用非CPU進行編碼,如顯示卡GPU、專用的DSP晶片等
- 軟編碼:使用CPU進行編碼(手機容易發熱)
- 各個平臺處理:
- iOS端:硬體相容性較好,可以直接進行硬編碼
- Android端:硬編碼較難,難找到統一的庫相容各個平臺(推薦使用軟編)
- 編碼標準:
- 視訊編碼:H.265、H.264、VP8、VP9等
- 音訊編碼:AAC、Opus
傳輸
- 從推流端到服務端
- 資料經過推流端採集和預處理,編碼之後推流到服務端
- 流傳輸就涉及到相應的傳輸協議,最常用的協議是RTMP、RTSP、HLS
- 搭建nginx+rtmp伺服器進行推流演示
流分發
- 音訊流推到伺服器後,為了適配各個平臺端各種不同協議,需要在服務端做一些流處理工作,比如轉碼成不同格式支援不同協議如 RTMP、HLS 和 FLV,以適應各個平臺
- 比如:iOS、Android、PC、網頁
- 甚至,為了配合一些運營需求,比如一些監管部門的要求,我們在服務端也提供了內容識別如鑑黃的功能
播放
- 拉流獲取音視訊資料後,需要通過解碼器解碼,渲染才能在播放器上播放
- 總體步驟概覽:
- 解協議:取出網路傳輸過程中一些無用資訊
- 解封裝:獲取到的是音訊&視訊放在一起的封裝檔案
- 音視訊解碼:音視訊都是經過壓縮編碼的內容,解碼後才能進行播放
- 音視訊同步:視訊&音訊檔案需要通過播放
- 音視訊播放:音效卡&顯示卡等對音視訊進行播放