技術(shù)整體概述:
- 采集:攝像頭采集黄伊,屏幕采集(視屏來(lái)源)
- 處理:美顏舱痘、水印、濾鏡效果(瘦臉衔蹲、美白)
- 編碼:視頻壓縮編碼肢娘、音頻壓縮編碼(h.265 / h.264 / VP9)
- 推流:將編碼流推送給服務(wù)器
- 流分發(fā):服務(wù)器進(jìn)一步視頻轉(zhuǎn)碼將流推送給播放端
- 解碼:將流解碼成mp4、mp3舆驶、MOV橱健、MPV等
- 播放:各平臺(tái)客戶端播放視頻
音視頻采集:
- PC端:屏幕攝像頭(攝像頭驅(qū)動(dòng)適配)
- iOS端:攝像頭采集(屏幕采集 ReplayKit)
- 安卓端:屏幕攝像頭采集(適配多、坑多)
前處理:
- 美顏沙廉,瘦臉畴博,水印,磨皮
- iOS:GPUImage
- 安卓:grafika
- PC : 美顏鏡頭
編碼:
-
不經(jīng)過編碼的視頻非常龐大蓝仲,儲(chǔ)存麻煩,網(wǎng)絡(luò)傳輸太大
編碼是通過壓縮音視頻數(shù)據(jù)來(lái)減少數(shù)據(jù)提及官疲,方便音視頻數(shù)據(jù)的推流袱结,拉流儲(chǔ)存,提高傳輸效率,音視頻必須經(jīng)過壓縮才能進(jìn)行儲(chǔ)存?zhèn)鬏?/p>
-
編碼方式:
- 硬編碼 :使用非CPU進(jìn)行編碼途凫,如顯卡GPU 垢夹,專用DSP芯片等
- 軟編碼 : 使用CPU進(jìn)行編碼(手機(jī)容易發(fā)熱)
-
各個(gè)平臺(tái)處理方式:
- iOS端:硬件兼容性較好,可以直接進(jìn)行硬編碼
2.安卓端:型號(hào)不一樣维费,硬編碼較難果元,難以找到統(tǒng)一庫(kù)兼容各個(gè)平臺(tái) (推薦使用軟編碼)
- iOS端:硬件兼容性較好,可以直接進(jìn)行硬編碼
編碼標(biāo)準(zhǔn) :
1.視屏編碼:H.264、H.265犀盟、VP8而晒、VP9
2.音頻編碼:AAC、Opus
流分發(fā):
音視頻流推到服務(wù)器后阅畴,為了適配各個(gè)平臺(tái)端各種不同的協(xié)議倡怎,需要在服務(wù)端做一些流處理工作,比如轉(zhuǎn)碼成不同格式支持不同協(xié)議如RTMP贱枣、HLS和FLV來(lái)適應(yīng)各個(gè)平臺(tái)
甚至為了配合一些運(yùn)營(yíng)需求监署,比如一些監(jiān)管部門的要求,我們?cè)诜?wù)端也提供了內(nèi)容識(shí)別纽哥,例如鑒黃功能
解碼 :
- 拉流獲取音視頻數(shù)據(jù)后钠乏,H.264數(shù)據(jù)能無(wú)法直接播放,需要通過解碼器解碼春塌,渲染才能在播放器上播放
- 解協(xié)議:取出網(wǎng)絡(luò)協(xié)議傳輸中一些無(wú)用信息
- 解封裝:獲取到音頻&視頻封裝文件(放在一起)
- 音視頻解碼:開始解碼壓縮內(nèi)容
- 音視頻同步: 解碼的視頻 &音頻文件需通過同步才能播放
播放:
- 使用適合的播放軟件 進(jìn)行播放
1.iOS:AVPlayer 等
2.安卓:MediaPlayer 等