基本概念
一、融云直播聊天室介绍
融云直播聊天室,是专门为视频直播业务提供的一个产品。主要特点是:
1.可以支持无人数上限的直播聊天室;
2.支持海量消息的并发,消息速度极快;
3.并可以方便的为直播聊天室实现弹幕、点赞、礼物、成员进入等消息通讯功能。
以上可以极大的节约视频直播产品的开发和运营成本。目前融云承担的日消息分发量峰值已经超过 1000 亿。
二、解决方案主要构成
融云的视频直播聊天室方案,由两部分构成,视频直播 SDK 和融云聊天室 SDK。后者由融云提供,前者你使用自己的推流和拉流来实现,或者使用第三方成熟的 SDK 来实现。融云的开源视频直播室 App 里整体方案为您打包了金山云视频 SDK,同时我们也支持七牛,乐视,阿里,UCldou等视频云 SDK。
1.视频直播 SDK
主播端
主播端使用的推流 SDK,主播需要把摄像头采集的视频源做编码,然后推到视频直播云上。
观众端
观众端使用的是拉流 SDK,观众需要的是把视频从服务端拉倒本地,做解码,并展示到手机终端上。观众端还必须包括一个视频播放器。
您也可以把以上的主播端和观众端打包到同一个 App 里,同时提供主播推流功能,又提供观众端拉流观看的功能。融云直播聊天室对于以上几种模式的支持都是完全相同的。
2.融云聊天室 SDK
IMLib
IMLib 是融云的 SDK
的一个产品组件,提供的是基础的通信能力,当使用融云聊天室的时候,您只需要简单调用初始化,连接,加入聊天室,发送消息等功能。
直播聊天室 App 开源代码
基于融云的 IMlib SDK,融云把常见的视频直播聊天室的常用功能封装成了一个 App,Seal Live。在这个 App
内,融云实现了登录,连接,直播界面的显示,输入框,发送接收消息的处理流程,我们建议您直接使用这部分代码,可以大大的减轻整个聊天室 UI
的开发工作。
三、常见问题 Q&A
1.是否有系统瓶颈和任何数量限制?
融云直播聊天室不存在任何系统瓶颈,系统可以实现平滑的横向扩展,支持任意规模的同时在线用户消息分发。
2.消息并发量过大是否会导致服务崩溃?
当遇到直播高峰,用户数与消息量超出系统承载能力时,系统会自动根据预先设定的规则对消息进行抛弃,优先抛弃掉低优先级消息,确保系统能够稳定运行,不会影响用户体验。
3.什么是消息分级与消息抛弃模型
当聊天室内人数众多,消息量会变得非常大,这时可能会出现服务端超过预设承载能力或者分发的消息量超过客户端消息接收能力的情况,这时,就需要引入消息分级机制。
融云并没有对任何消息进行抛弃,但是在消息量极大的情况下,比如1万人到百万左右的聊天室内,消息并发量极大的情况下,每个用户端能收发到的消息和体验已经很悠闲,因此消息抛弃指的是确保用户端总是能收到最重要的消息,因此不重要的消息看起来就像是被抛弃了。
在开发过程中,除官方的普通文本消息之外,开发者需要针对不同的消息类别定义不同的消息类型,以便通过消息的 ObjectName 设置消息分级。目前融云支持两级消息分类,分别是高优先级消息和低优先级消息。当发生消息抛弃行为时,优先抛弃低优先级消息。
针对主播的消息,可以通过聊天室内用户白名单机制,将主播添加到白名单以确保主播消息不会被抛弃掉。
自定义消息文档请参见:
http://www.rongcloud.cn/docs/android_architecture.html 和