移動端圖文直播技術方案的分析

最近公司的項目要實現一個賽事的圖文直播,類似網易新聞的NBA直播。

具體的需求:
1. 主播端(php實現)可以推送消息到直播間
2. 客戶端(android/iOS實現)接收消息
3. 消息的種類比較多,支持文字,圖片(包括GIF圖),圖文混排(相對固定的幾種格式)
4. 客戶端用戶不能發言,發言需要去專門的討論區(im,類似羣)

最初的需求分析:
1. 用socket實現消息的傳遞
2. 服務器端的開發工作量比較大。除了完成基本的消息傳遞,還要處理直播間的邏輯,維護直播間的狀態,以及搭建一個主播用的主播端

後來發現,這個需求非常像IM裏的聊天室,它與聊天室的區別在於:
1. 不能限制聊天室的人數(可能幾萬人同時在看直播)
2. 聊天室的數量非常多(每場比賽都要創建一個聊天室)
3. 聊天室有即時性(比賽結束後,聊天室就要關閉)
4. 需要保存聊天室的歷史消息(用於用戶回看)
5. 自定義的消息格式比較多

所以,比對了一下現成的幾個IM方案:
1 . 公司已經有的視頻直播方案
優點:有現成的代碼,數據傳輸部分有源碼,也有直播間的概念。
缺點:視頻傳輸使用的是rtmp格式,這個需要修改,自己定義一個新的格式。以及,c++人手不夠。。。

2 . 公司已有的基於netty框架的項目
優點:有現成的代碼,開源的框架。
缺點:netty是一個java框架,沒有php版本。另外已有的項目裏,並沒有直播間的概念,需要重新設計。

3 . 基於socket的全新的開發方案
優點:重新開發,對代碼的掌控會比較好
缺點:開發週期長,可能遇到各種坑

4 . 友盟IM框架
優點:現成的框架,自帶UI,服務器端也有相應的api
缺點:友盟IM的聊天室人數有限制,最多支持2000人,滿足不了項目需求

5 . 網易雲信IM框架
優點:現成的框架,開源的ui,聊天室人數無限制,滿足項目需求
缺點:UI是開源的,需要你手動添加到自己的項目裏

總結,1,2,5都是我們可以接收的方案,具體的選擇還是要看人手以及公司的技術儲備。
從時間上來說,如果沒有技術儲備,方案5的時間是最短的。如果想在項目開發的同時積攢一定的技術儲備,建議選擇2或者3
視頻直播的方案,複雜度會比較高,在現有技術人員沒有相關經驗的情況下,不建議採用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章