本篇主要探討利用第三方直播SDK開發(fā)直播平臺和自主研發(fā)直播平臺這兩種直播開發(fā)方案,暫分析iOS客戶端和服務(wù)器端的實(shí)現(xiàn),安卓端可參考iOS端實(shí)現(xiàn)方式。
熱門直播產(chǎn)品
映客输涕,斗魚,熊貓慨畸,虎牙莱坎,花椒等等
1.常規(guī)直播app功能
1、聊天
私聊寸士、聊天室檐什、點(diǎn)亮、推送弱卡、黑名單等;
2乃正、禮物
普通禮物、豪華禮物婶博、紅包烫葬、排行榜、第三方充值凡蜻、內(nèi)購、禮物動(dòng)態(tài)更新垢箕、提現(xiàn)等划栓;
3、直播列表
關(guān)注条获、熱門忠荞、最新、分類直播用戶列表等帅掘;
4委煤、自己直播
錄制、推流修档、解碼碧绞、播放、美顏吱窝、心跳讥邻、后臺切換迫靖、主播對管理員操作、管理員對用戶等兴使;
5系宜、房間邏輯
創(chuàng)建房間、進(jìn)入房間发魄、退出房間盹牧、關(guān)閉房間、切換房間励幼、房間管理員設(shè)置汰寓、房間用戶列表等;
6赏淌、用戶邏輯
普通登陸踩寇、第三方登陸、注冊六水、搜索俺孙、修改個(gè)人信息、關(guān)注列表掷贾、粉絲列表睛榄、忘記密碼、查看個(gè)人信息想帅、收入榜场靴、關(guān)注和取關(guān)、檢索等港准;
7旨剥、觀看直播
聊天信息、滾屏彈幕浅缸、禮物顯示轨帜、加載界面等
8、統(tǒng)計(jì)
APP業(yè)務(wù)統(tǒng)計(jì)衩椒、第三方統(tǒng)計(jì)等蚌父;
9、超管
禁播毛萌、隱藏苟弛、審核等;
2.直播app原理
直播原理:把主播錄制的視頻阁将,推送到服務(wù)器膏秫,在由服務(wù)器分發(fā)給觀眾觀看。
直播環(huán)節(jié):推流端(采集做盅、美顏處理荔睹、編碼狸演、推流)、服務(wù)端處理(轉(zhuǎn)碼僻他、錄制宵距、截圖、鑒黃)吨拗、播放器(拉流满哪、解碼、渲染)劝篷、互動(dòng)系統(tǒng)(聊天室哨鸭、禮物系統(tǒng)、贊)
3.直播app實(shí)現(xiàn)流程
1.采集娇妓、2.濾鏡處理像鸡、3.編碼、4.推流哈恰、5.CDN分發(fā)只估、6.拉流、7.解碼着绷、8.播放蛔钙、9.聊天互動(dòng)
4.直播app架構(gòu)
5.自主研發(fā)--核心功能實(shí)現(xiàn)方案
1.采集視頻、音頻
使用AVFoundation實(shí)現(xiàn):AVFoundation是用來播放和創(chuàng)建實(shí)時(shí)的視聽媒體數(shù)據(jù)的框架荠医,同時(shí)提供Objective-C接口來操作這些視聽數(shù)據(jù)吁脱,比如編輯,旋轉(zhuǎn)彬向,重編碼
2.視頻處理(美顏兼贡,水印)
使用GPUImage實(shí)現(xiàn): GPUImage是一個(gè)基于OpenGL ES的一個(gè)強(qiáng)大的圖像/視頻處理框架,封裝好了各種濾鏡同時(shí)也可以編寫自定義的濾鏡,其本身內(nèi)置了多達(dá)120多種常見的濾鏡效果娃胆。
3.視頻編碼解碼封裝
FFmpeg框架:是一個(gè)跨平臺的開源視頻框架,能實(shí)現(xiàn)如視頻編碼,解碼,轉(zhuǎn)碼,串流,播放等豐富的功能紧显。其支持的視頻格式以及播放協(xié)議非常豐富,幾乎包含了所有音視頻編解碼、封裝格式以及播放協(xié)議缕棵。
4.推流
數(shù)據(jù)傳輸框架-librtmp:用來傳輸RTMP協(xié)議格式的數(shù)據(jù)
5.流媒體服務(wù)器
利用nginx來配置流媒體服務(wù)器,其中cdn分發(fā)技術(shù)是將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)”邊緣”涉兽,使用戶可以就近取得所需的內(nèi)容招驴,解決 Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度.
6.拉流
選擇rtmp直播協(xié)議.
8.播放
使用b站開源的ijkplayer(API易于集成枷畏;編譯配置可裁剪别厘,方便控制安裝包大小拥诡;支持硬件加速解碼触趴,更加省電 簡單易用氮发,指定拉流URL,自動(dòng)解碼播放.)
9.聊天互動(dòng)
融云作為直播的聊天室的技術(shù)實(shí)現(xiàn)基礎(chǔ)
6.借助第三方SDK--核心功能實(shí)現(xiàn)方案
1冗懦、利用第三方直播SDK快速的開發(fā)
七牛云:七牛直播云是專為直播平臺打造的全球化直播流服務(wù)和一站式實(shí)現(xiàn)SDK端到端直播場景的企業(yè)級直播云服務(wù)平臺,主要將自研流程中的視頻編碼解碼封裝爽冕,推流,流媒體服務(wù)器披蕉,拉流等環(huán)節(jié)幫我們封裝到sdk中颈畸,極大提高開發(fā)效率。
- 熊貓TV,龍珠TV等直播平臺都是用的七牛云
互聯(lián)網(wǎng)直播是一種基于RTMP協(xié)議的業(yè)務(wù)没讲。RTMP協(xié)議是一種基于TCP的協(xié)議眯娱。在實(shí)際的業(yè)務(wù)模型中,又分為客戶端和服務(wù)端爬凑♂憬桑客戶端主要是利用RTMP協(xié)議進(jìn)行數(shù)據(jù)包的發(fā)送,一般稱之為推流嘁信。服務(wù)端主要用來接收客戶端發(fā)送過來的RTMP協(xié)議數(shù)據(jù)包于样,并轉(zhuǎn)發(fā)出去供訂閱的客戶播放,訂閱直播播放的客戶從服務(wù)端給出的一個(gè)地址請求數(shù)據(jù)吱抚,請求的過程也是基于RTMP的協(xié)議百宇,這個(gè)過程稱之為拉流。通常的情況下秘豹,直播的業(yè)務(wù)模型是一路推流到服務(wù)器携御,然后可能會(huì)有多路觀看的拉流請求,即1:N的模型既绕。
七牛云直播服務(wù)的業(yè)務(wù)模型啄刹。
7.兩種技術(shù)實(shí)現(xiàn)方案的評估
自研:
技術(shù)門檻較高,需要招聘這方面的人才凄贩,后期維護(hù)成本較大誓军,服務(wù)端CDN分發(fā)要在國內(nèi)各地架設(shè)多臺服務(wù)器作為節(jié)點(diǎn),單這一塊預(yù)估就好幾百萬疲扎。
借助sdk開發(fā):
對于一個(gè)初創(chuàng)團(tuán)隊(duì)來講昵时,自研直播不管在技術(shù)門檻、CDN椒丧、帶寬上都是有很大的門檻的壹甥,而且需要耗費(fèi)大量的時(shí)間才能做出成品,不利于拉投資壶熏。但是借助sdk開發(fā)可以快速融入到市場句柠,有較好的容錯(cuò)性,在各大直播平臺瓜分市場的同時(shí),將大部分資金用于運(yùn)營 而不是開發(fā)溯职,有利于提高產(chǎn)品的競爭力精盅。