直播專案技術實現方案
1.常規直播app功能
1、聊天
私聊、聊天室、點亮、推送、黑名單等;
2、禮物
普通禮物、豪華禮物、紅包、排行榜、第三方充值、內購、禮物動態更新、提現等;
3、直播列表
關注、熱門、最新、分類直播使用者列表等;
4、自己直播
錄製、推流、解碼、播放、美顏、心跳、後臺切換、主播對管理員操作、管理員對使用者等;
5、房間邏輯
建立房間、進入房間、退出房間、關閉房間、切換房間、房間管理員設定、房間使用者列表等;
6、使用者邏輯
普通登陸、第三方登陸、註冊、搜尋、修改個人資訊、關注列表、粉絲列表、忘記密碼、檢視個人資訊、收入榜、關注和取關、檢索等;
7、觀看直播
聊天資訊、滾屏彈幕、禮物顯示、載入介面等
8、統計
APP業務統計、第三方統計等;
9、超管
禁播、隱藏、稽核等;
2.直播app原理
直播原理:把主播錄製的視訊,推送到伺服器,在由伺服器分發給觀眾觀看。
直播環節:推流端(採集、美顏處理、編碼、推流)、服務端處理(轉碼、錄製、截圖、鑑黃)、播放器(拉流、解碼、渲染)、互動系統(聊天室、禮物系統、贊)
3.直播app實現流程
1.採集、2.濾鏡處理、3.編碼、4.推流、5.CDN分發、6.拉流、7.解碼、8.播放、9.聊天互動
4.直播app架構
5.自主研發--核心功能實現方案
1.採集視訊、音訊
使用AVFoundation實現:AVFoundation是用來播放和建立實時的視聽媒體資料的框架,同時提供Objective-C介面來操作這些視聽資料,比如編輯,旋轉,重編碼
2.視訊處理(美顏,水印)
使用GPUImage實現: GPUImage是一個基於OpenGL ES的一個強大的影象/視訊處理框架,封裝好了各種濾鏡同時也可以編寫自定義的濾鏡,其本身內建了多達120多種常見的濾鏡效果。
3.視訊編碼解碼封裝
FFmpeg框架:是一個跨平臺的開源視訊框架,能實現如視訊編碼,解碼,轉碼,串流,播放等豐富的功能。其支援的視訊格式以及播放協議非常豐富,幾乎包含了所有音視訊編解碼、封裝格式以及播放協議。
4.推流
資料傳輸框架-librtmp:用來傳輸RTMP協議格式的資料
5.流媒體伺服器
利用nginx來配置流媒體伺服器,其中cdn分發技術是將網站的內容釋出到最接近使用者的網路”邊緣”,使使用者可以就近取得所需的內容,解決 Internet網路擁擠的狀況,提高使用者訪問網站的響應速度.
6.拉流
選擇rtmp直播協議.
8.播放
使用b站開源的ijkplayer(API易於整合;編譯配置可裁剪,方便控制安裝包大小;支援硬體加速解碼,更加省電 簡單易用,指定拉流URL,自動解碼播放.)