移动端图文直播技术方案的分析

最近公司的项目要实现一个赛事的图文直播,类似网易新闻的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
视频直播的方案,复杂度会比较高,在现有技术人员没有相关经验的情况下,不建议采用。

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