直播技術(shù)概況來(lái)說(shuō),可以分為 采集联四,前處理撑碴,編碼,傳輸朝墩,解碼醉拓,渲染 這幾個(gè)環(huán)節(jié)
音視頻采集
- 音視頻的采集是直播架構(gòu)的第一個(gè)環(huán)節(jié),也是直播的視頻來(lái)源
- 2.采集的來(lái)源包括:
- PC端:屏幕攝像頭(攝像頭驅(qū)動(dòng)適配)
- iOS端:攝像頭采集(屏幕采集?)
- Android端:屏幕攝像頭采集(硬件過(guò)多亿卤,適配一堆坑)
前處理
- 1.使用美顏相機(jī)&美圖秀秀已經(jīng)是網(wǎng)絡(luò)發(fā)照片&發(fā)視頻必備技能了
- 80%的主播沒(méi)有美顏簡(jiǎn)直不能看(當(dāng)然還是有美女的)
- 不能看如何吸引用戶&觀眾
- 對(duì)視頻進(jìn)行美顏愤兵,已成標(biāo)配
- 2.處理主要包括,美顏排吴、模糊效果秆乳、水印等
+總之就是讓人變美、變帥- 各個(gè)平臺(tái)處理方式
- PC端:美顏鏡頭钻哩、一些美顏軟件
- iOS端:圖像處理庫(kù)是GPUImage屹堰,提供了豐富的預(yù)處理效果,也可利用該庫(kù)自定義設(shè)計(jì)
- Android端:Google開(kāi)源的grafika街氢,是一個(gè)非常強(qiáng)大的圖形處理庫(kù)
編碼
+1.不經(jīng)編碼的視頻非常龐大双藕,存儲(chǔ)起來(lái)都麻煩,更何況網(wǎng)絡(luò)傳輸
編碼通過(guò)壓縮音視頻數(shù)據(jù)來(lái)減少數(shù)據(jù)體積阳仔,方便音視頻數(shù)據(jù)的推流,拉流和存儲(chǔ)扣泊,能大大提高存儲(chǔ)傳輸效率
音視頻必須經(jīng)過(guò)壓縮編碼才能進(jìn)行存儲(chǔ)和傳輸
- 2.編碼方式:
硬編碼:使用非CPU進(jìn)行編碼近范,如顯卡GPU、專用的DSP芯片等
軟編碼:使用CPU進(jìn)行編碼(手機(jī)容易發(fā)熱) - 3.各個(gè)平臺(tái)處理:
iOS端:硬件兼容性較好延蟹,可以直接進(jìn)行硬編碼
Android端:硬編碼較難评矩,難找到統(tǒng)一的庫(kù)兼容各個(gè)平臺(tái)(推薦使用軟編) - 4.編碼標(biāo)準(zhǔn):
視頻編碼:H.265、H.264阱飘、VP8斥杜、VP9等
音頻編碼:AAC、Opus
傳輸
- 1.從推流端到服務(wù)端
數(shù)據(jù)經(jīng)過(guò)推流端采集和預(yù)處理沥匈,編碼之后推流到服務(wù)端
流傳輸就涉及到相應(yīng)的傳輸協(xié)議蔗喂,最常用的協(xié)議是RTMP、RTSP高帖、HLS - 2.搭建nginx+rtmp服務(wù)器進(jìn)行推流演示
流分發(fā)
- 音頻流推到服務(wù)器后缰儿,為了適配各個(gè)平臺(tái)端各種不同協(xié)議,需要在服務(wù)端做一些流處理工作散址,比如轉(zhuǎn)碼成不同格式支持不同協(xié)議如 RTMP乖阵、HLS 和 FLV,以適應(yīng)各個(gè)平臺(tái)
比如:iOS预麸、Android瞪浸、PC、網(wǎng)頁(yè) - 甚至吏祸,為了配合一些運(yùn)營(yíng)需求对蒲,比如一些監(jiān)管部門的要求,我們?cè)诜?wù)端也提供了內(nèi)容識(shí)別如鑒黃的功能
播放
- 1.拉流獲取音視頻數(shù)據(jù)后,需要通過(guò)解碼器解碼齐蔽,渲染才能在播放器上播放
- 2.總體步驟概覽:
- 解協(xié)議:取出網(wǎng)絡(luò)傳輸過(guò)程中一些無(wú)用信息
- 解封裝:獲取到的是音頻&視頻放在一起的封裝文件
- 音視頻解碼:音視頻都是經(jīng)過(guò)壓縮編碼的內(nèi)容两疚,解碼后才能進(jìn)行播放
- 音視頻同步:視頻&音頻文件需要通過(guò)播放
- 音視頻播放:聲卡&顯卡等對(duì)音視頻進(jìn)行播放