概述
- 直播的現(xiàn)狀
- 2016年瞄崇,是一個直播年。直播行業(yè)快速發(fā)展喷屋,同時也滋生了大大小小上千家相關(guān)的公司。
- 中國互聯(lián)網(wǎng)絡(luò)信息中心發(fā)布的報告顯示瞭恰,截至今年6月屯曹,我國網(wǎng)絡(luò)直播用戶規(guī)模達(dá)到3.25億,占網(wǎng)民總體的45.8%惊畏。
- 直播的技術(shù)
- 直播技術(shù)概況來說恶耽,可以分為 采集,前處理颜启,編碼偷俭,傳輸,解碼缰盏,渲染 這幾個環(huán)節(jié)
技術(shù)整體概覽
-
圖例:
分步解析
音視頻采集
- 音視頻的采集是直播架構(gòu)的第一個環(huán)節(jié)涌萤,也是直播的視頻來源
- 采集的來源包括:
- PC端:屏幕攝像頭(攝像頭驅(qū)動適配)
- iOS端:攝像頭采集(屏幕采集?)
- Android端:屏幕攝像頭采集(硬件過多口猜,適配一堆坑)
前處理
- 使用美顏相機(jī)&美圖秀秀已經(jīng)是網(wǎng)絡(luò)發(fā)照片&發(fā)視頻必備技能了
- 80%的主播沒有美顏簡直不能看(當(dāng)然還是有美女的)
- 不能看如何吸引用戶&觀眾
- 對視頻進(jìn)行美顏负溪,已成標(biāo)配
- 處理主要包括,美顏济炎、模糊效果川抡、水印等
- 總之就是讓人變美、變帥
- 各個平臺處理方式
- PC端:美顏鏡頭须尚、一些美顏軟件
- iOS端:圖像處理庫是GPUImage崖堤,提供了豐富的預(yù)處理效果侍咱,也可利用該庫自定義設(shè)計(jì)
- Android端:Google開源的grafika,是一個非常強(qiáng)大的圖形處理庫
編碼
- 不經(jīng)編碼的視頻非常龐大密幔,存儲起來都麻煩放坏,更何況網(wǎng)絡(luò)傳輸
- 編碼通過壓縮音視頻數(shù)據(jù)來減少數(shù)據(jù)體積,方便音視頻數(shù)據(jù)的推流老玛,拉流和存儲,能大大提高存儲傳輸效率
- 音視頻必須經(jīng)過壓縮編碼才能進(jìn)行存儲和傳輸
- 編碼方式:
- 硬編碼:使用非CPU進(jìn)行編碼钧敞,如顯卡GPU蜡豹、專用的DSP芯片等
- 軟編碼:使用CPU進(jìn)行編碼(手機(jī)容易發(fā)熱)
- 各個平臺處理:
- iOS端:硬件兼容性較好,可以直接進(jìn)行硬編碼
- Android端:硬編碼較難溉苛,難找到統(tǒng)一的庫兼容各個平臺(推薦使用軟編)
- 編碼標(biāo)準(zhǔn):
- 視頻編碼:H.265镜廉、H.264、VP8愚战、VP9等
- 音頻編碼:AAC娇唯、Opus
傳輸
- 從推流端到服務(wù)端
- 數(shù)據(jù)經(jīng)過推流端采集和預(yù)處理,編碼之后推流到服務(wù)端
- 流傳輸就涉及到相應(yīng)的傳輸協(xié)議寂玲,最常用的協(xié)議是RTMP塔插、RTSP、HLS
- 搭建nginx+rtmp服務(wù)器進(jìn)行推流演示
流分發(fā)
- 音頻流推到服務(wù)器后拓哟,為了適配各個平臺端各種不同協(xié)議想许,需要在服務(wù)端做一些流處理工作,比如轉(zhuǎn)碼成不同格式支持不同協(xié)議如 RTMP断序、HLS 和 FLV流纹,以適應(yīng)各個平臺
- 比如:iOS、Android违诗、PC漱凝、網(wǎng)頁
- 甚至,為了配合一些運(yùn)營需求诸迟,比如一些監(jiān)管部門的要求茸炒,我們在服務(wù)端也提供了內(nèi)容識別如鑒黃的功能
播放
- 拉流獲取音視頻數(shù)據(jù)后,需要通過解碼器解碼亮蒋,渲染才能在播放器上播放
- 總體步驟概覽:
- 解協(xié)議:取出網(wǎng)絡(luò)傳輸過程中一些無用信息
- 解封裝:獲取到的是音頻&視頻放在一起的封裝文件
- 音視頻解碼:音視頻都是經(jīng)過壓縮編碼的內(nèi)容扣典,解碼后才能進(jìn)行播放
- 音視頻同步:視頻&音頻文件需要通過播放
- 音視頻播放:聲卡&顯卡等對音視頻進(jìn)行播放