本篇主要探討利用第三方直播SDK開發(fā)直播平臺和自主研發(fā)直播平臺這兩種直播開發(fā)方案,暫分析iOS客戶端和服務(wù)器端的實現(xiàn),安卓端可參考iOS端實現(xiàn)方式。
熱門直播產(chǎn)品
映客,斗魚,熊貓,虎牙,花椒等等
1.常規(guī)直播app功能
1、聊天
私聊、聊天室、點亮、推送、黑名單等;
2、禮物
普通禮物、豪華禮物、紅包、排行榜、第三方充值、內(nèi)購、禮物動態(tài)更新、提現(xiàn)等;
3、直播列表
關(guān)注、熱門、最新、分類直播用戶列表等;
4、自己直播
錄制、推流、解碼、播放、美顏、心跳、后臺切換、主播對管理員操作、管理員對用戶等;
5、房間邏輯
創(chuàng)建房間、進入房間、退出房間、關(guān)閉房間、切換房間、房間管理員設(shè)置、房間用戶列表等;
6、用戶邏輯
普通登陸、第三方登陸、注冊、搜索、修改個人信息、關(guān)注列表、粉絲列表、忘記密碼、查看個人信息、收入榜、關(guān)注和取關(guān)、檢索等;
7、觀看直播
聊天信息、滾屏彈幕、禮物顯示、加載界面等
8、統(tǒng)計
APP業(yè)務(wù)統(tǒng)計、第三方統(tǒng)計等;
9、超管
禁播、隱藏、審核等;
2.直播app原理
直播原理:把主播錄制的視頻,推送到服務(wù)器,在由服務(wù)器分發(fā)給觀眾觀看。
直播環(huán)節(jié):推流端(采集、美顏處理、編碼、推流)、服務(wù)端處理(轉(zhuǎn)碼、錄制、截圖、鑒黃)、播放器(拉流、解碼、渲染)、互動系統(tǒng)(聊天室、禮物系統(tǒng)、贊)
3.直播app實現(xiàn)流程
1.采集、2.濾鏡處理、3.編碼、4.推流、5.CDN分發(fā)、6.拉流、7.解碼、8.播放、9.聊天互動

4.直播app架構(gòu)

5.自主研發(fā)--核心功能實現(xiàn)方案
1.采集視頻、音頻
使用AVFoundation實現(xiàn):AVFoundation是用來播放和創(chuàng)建實時的視聽媒體數(shù)據(jù)的框架,同時提供Objective-C接口來操作這些視聽數(shù)據(jù),比如編輯,旋轉(zhuǎn),重編碼
2.視頻處理(美顏,水?。?/h5>
使用GPUImage實現(xiàn): GPUImage是一個基于OpenGL ES的一個強大的圖像/視頻處理框架,封裝好了各種濾鏡同時也可以編寫自定義的濾鏡,其本身內(nèi)置了多達120多種常見的濾鏡效果。
3.視頻編碼解碼封裝
FFmpeg框架:是一個跨平臺的開源視頻框架,能實現(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,自動解碼播放.)
9.聊天互動
融云作為直播的聊天室的技術(shù)實現(xiàn)基礎(chǔ)
6.借助第三方SDK--核心功能實現(xiàn)方案
1、利用第三方直播SDK快速的開發(fā)
使用GPUImage實現(xiàn): GPUImage是一個基于OpenGL ES的一個強大的圖像/視頻處理框架,封裝好了各種濾鏡同時也可以編寫自定義的濾鏡,其本身內(nèi)置了多達120多種常見的濾鏡效果。
FFmpeg框架:是一個跨平臺的開源視頻框架,能實現(xiàn)如視頻編碼,解碼,轉(zhuǎn)碼,串流,播放等豐富的功能。其支持的視頻格式以及播放協(xié)議非常豐富,幾乎包含了所有音視頻編解碼、封裝格式以及播放協(xié)議。
數(shù)據(jù)傳輸框架-librtmp:用來傳輸RTMP協(xié)議格式的數(shù)據(jù)
利用nginx來配置流媒體服務(wù)器,其中cdn分發(fā)技術(shù)是將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)”邊緣”,使用戶可以就近取得所需的內(nèi)容,解決 Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度.
選擇rtmp直播協(xié)議.
使用b站開源的ijkplayer(API易于集成;編譯配置可裁剪,方便控制安裝包大??;支持硬件加速解碼,更加省電 簡單易用,指定拉流URL,自動解碼播放.)
融云作為直播的聊天室的技術(shù)實現(xiàn)基礎(chǔ)
七牛云:七牛直播云是專為直播平臺打造的全球化直播流服務(wù)和一站式實現(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é)議。在實際的業(yè)務(wù)模型中,又分為客戶端和服務(wù)端??蛻舳酥饕抢肦TMP協(xié)議進行數(shù)據(jù)包的發(fā)送,一般稱之為推流。服務(wù)端主要用來接收客戶端發(fā)送過來的RTMP協(xié)議數(shù)據(jù)包,并轉(zhuǎn)發(fā)出去供訂閱的客戶播放,訂閱直播播放的客戶從服務(wù)端給出的一個地址請求數(shù)據(jù),請求的過程也是基于RTMP的協(xié)議,這個過程稱之為拉流。通常的情況下,直播的業(yè)務(wù)模型是一路推流到服務(wù)器,然后可能會有多路觀看的拉流請求,即1:N的模型。
七牛云直播服務(wù)的業(yè)務(wù)模型。

7.兩種技術(shù)實現(xiàn)方案的評估
自研:
技術(shù)門檻較高,需要招聘這方面的人才,后期維護成本較大,服務(wù)端CDN分發(fā)要在國內(nèi)各地架設(shè)多臺服務(wù)器作為節(jié)點,單這一塊預(yù)估就好幾百萬。
借助sdk開發(fā):
對于一個初創(chuàng)團隊來講,自研直播不管在技術(shù)門檻、CDN、帶寬上都是有很大的門檻的,而且需要耗費大量的時間才能做出成品,不利于拉投資。但是借助sdk開發(fā)可以快速融入到市場,有較好的容錯性,在各大直播平臺瓜分市場的同時,將大部分資金用于運營 而不是開發(fā),有利于提高產(chǎn)品的競爭力。