1,采集瓤狐。2瞬铸,濾鏡處理。3础锐,編碼赴捞。4,推流郁稍。5赦政,CDN分發(fā)。6耀怜,拉流恢着。7,解碼财破。8掰派,播放。9左痢,聊天互動靡羡。
其中1-4由LFLiveKit完成(2由GPUImage完成),5俊性,就是搭建的服務(wù)器(或者買的服務(wù)器)略步。6-8由ijkplayer完成。
直播原理:把主播錄制的視頻定页,推送到服務(wù)器趟薄,在由服務(wù)器分發(fā)給觀眾觀看。
直播環(huán)節(jié):推流端(采集典徊、美顏處理杭煎、編碼恩够、推流)、服務(wù)端處理(轉(zhuǎn)碼羡铲、錄制蜂桶、截圖、鑒黃)也切、播放器(拉流屎飘、解碼、渲染)贾费、互動系統(tǒng)(聊天室钦购、禮物系統(tǒng)、贊)
1褂萧,采集
AVFoundation:AVFoundation是用來播放和創(chuàng)建實(shí)時(shí)的視聽媒體數(shù)據(jù)的框架押桃,同時(shí)提供Objective-C接口來操作這些視聽數(shù)據(jù),比如編輯导犹,旋轉(zhuǎn)唱凯,重編碼
2,濾鏡處理
GPUImage: GPUImage是一個(gè)基于OpenGL ES的一個(gè)強(qiáng)大的圖像/視頻處理框架,封裝好了各種濾鏡同時(shí)也可以編寫自定義的濾鏡,其本身內(nèi)置了多達(dá)120多種常見的濾鏡效果谎痢。
3磕昼,編碼
對視頻進(jìn)行壓縮(視頻編碼)或者解壓縮(視頻解碼)的編碼技術(shù),比如MPEG,H.264,這些視頻編碼技術(shù)是壓縮編碼視頻的
4节猿,推流
librtmp:用來傳輸RTMP協(xié)議格式的數(shù)據(jù)票从,RTMP協(xié)議用于對象、視頻滨嘱、音頻的傳輸峰鄙。這個(gè)協(xié)議建立在TCP協(xié)議或者輪詢HTTP協(xié)議之上。
5太雨,CDN分發(fā)
流媒體開發(fā):網(wǎng)絡(luò)層(socket或st)負(fù)責(zé)傳輸吟榴,協(xié)議層(rtmp或hls)負(fù)責(zé)網(wǎng)絡(luò)打包,封裝層(flv囊扳、ts)負(fù)責(zé)編解碼數(shù)據(jù)的封裝吩翻,編碼層(h.264和aac)負(fù)責(zé)圖像,音頻壓縮锥咸。
常用服務(wù)器
SRS:一款國人開發(fā)的優(yōu)秀開源流媒體服務(wù)器系統(tǒng)
BMS:也是一款流媒體服務(wù)器系統(tǒng)狭瞎,但不開源,是SRS的商業(yè)版她君,比SRS功能更多
nginx:免費(fèi)開源web服務(wù)器脚作,常用來配置流媒體服務(wù)器。
數(shù)據(jù)分發(fā)
CDN:(Content Delivery Network)缔刹,即內(nèi)容分發(fā)網(wǎng)絡(luò),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)”邊緣”球涛,使用戶可以就近取得所需的內(nèi)容,解決 Internet網(wǎng)絡(luò)擁擠的狀況校镐,提高用戶訪問網(wǎng)站的響應(yīng)速度.
CDN:代理服務(wù)器亿扁,相當(dāng)于一個(gè)中介。
CDN工作原理:比如請求流媒體數(shù)據(jù)
1.上傳流媒體數(shù)據(jù)到服務(wù)器(源站)
2.源站存儲流媒體數(shù)據(jù)
3.客戶端播放流媒體鸟廓,向CDN請求編碼后的流媒體數(shù)據(jù)
4.CDN的服務(wù)器響應(yīng)請求从祝,若節(jié)點(diǎn)上沒有該流媒體數(shù)據(jù)存在,則向源站繼續(xù)請求流媒體數(shù)據(jù)引谜;若節(jié)點(diǎn)上已經(jīng)緩存了該視頻文件牍陌,則跳到第6步。
5.源站響應(yīng)CDN的請求员咽,將流媒體分發(fā)到相應(yīng)的CDN節(jié)點(diǎn)上
6.CDN將流媒體數(shù)據(jù)發(fā)送到客戶端
6.拉流
直播協(xié)議選擇:
7.解碼
硬解碼:用GPU來解碼毒涧,減少CPU運(yùn)算
優(yōu)點(diǎn):播放流暢、低功耗贝室,解碼速度快契讲,
缺點(diǎn):兼容不好
軟解碼:用CPU來解碼
優(yōu)點(diǎn):兼容好
缺點(diǎn):加大CPU負(fù)擔(dān),耗電增加滑频、沒有硬解碼流暢捡偏,解碼速度相對慢
8.播放
ijkplayer:一個(gè)基于FFmpeg的開源Android/iOS視頻播放器
API易于集成;
編譯配置可裁剪峡迷,方便控制安裝包大幸啊;
支持硬件加速解碼绘搞,更加省電
簡單易用枣申,指定拉流URL,自動解碼播放.
9.聊天互動
IM:(InstantMessaging)即時(shí)通訊:是一個(gè)實(shí)時(shí)通信系統(tǒng)看杭,允許兩人或多人使用網(wǎng)絡(luò)實(shí)時(shí)的傳遞文字消息忠藤、文件、語音與視頻交流.
IM在直播系統(tǒng)中的主要作用是實(shí)現(xiàn)觀眾與主播楼雹、觀眾與觀眾之間的文字互動.