在进行调研之前, 我们APP现状
1] 我们是一款社交类型APP;
2] 已经接入了云信SDK 8.4.6, 用到了其 [IM - 即时通讯] [音频通话1.0] 等功能.
调研目标供应商
1] 云信 [互动直播]
文档链接:https://doc.yunxin.163.com/interactive-streaming/docs/home-page
产品简介 :
互动直播是网易云信基于音视频通话产品推出的实时音视频开发平台。网易云信基于网易多年的即时通讯和实时音视频通话能力的技术积累,为您提供稳定流畅、高品质、全平台的点对点和多人实时音视频通话服务。互动直播产品在此基础上为您提供旁路推流能力,实现音视频直播场景。
网易云信互动直播产品适用于各种实时音视频和直播场景,例如社交行业的视频聊天、视频相亲、视频交友、在线KTV、连麦直播、主播 PK、带货直播等,教育行业的小班教学、一对一视频教学、大班课、视频会议、远程医疗、游戏语音等等。
网易云信互动直播产品基于音视频通话产品,共用同一套 SDK,即 NERTC SDK。互动直播在音视频通话基础上提供旁路推流能力,支持通过 CDN 直播的方式,将音视频通话房间中的数据流以推流的形式,推送至直播服务,从而实现旁路推流以及云端录制等功能。
调研重点 :
1.需要基于云信音视频2.0版本进行研发, 我们APP目前接入的是1.0SDK, 1.0和2.0跨度很大, 并且不兼容,
需要我们先预埋一段时间后, 再进行强更;
2.目前只有Android与iOS端的SDK, 而没有WEB端的SDK.
调研结论 :
因为我们APP已经集成了云信SDK, 所以本来应该是使用云信提供的[互动直播]功能实现语音房是最好的,
但是, 因为[互动直播]功能是基于 [音视频通话2.0] 实现的, 而我们接入的是 1.0, 并且二者不兼容, 需要预埋做强更; 另外就是, 因为没有WEB端的SDK, 无法做到PC端的巡检, 所以最终被淘汰.
2] 融云 [语聊房]
文档链接 : https://doc.rongcloud.cn/voiceroom/Android/2.X/overview
产品简介 :
语聊房 SDK 是基于融云即时通讯(IM)和实时音视频(RTC)优势能力封装的场景化 SDK,参考主流语聊房应用功能进行设计,贴近场景,提供精简、高度封装的核心 API 与回调,帮助您降低学习成本,提升开发效率。
语聊房 SDK 支持包括麦位管理、房间管理、多人连麦、跨房间 PK 与混音在内的功能。
调研重点 :
1.融云的SDK API设计, 是3家中, 唯一按照 “应用层 - 功能点” 进行设计的, 所以SDK提供的能力是像这样的,
房间管理 : 创建房间 · 加入房间 · 离开房间 · 踢出房间 · 销毁房间
麦位相关操作主要包括:
上麦
自由上麦 · 申请上麦 · 邀请上麦
下麦
主动离开麦位 · 强制下麦
跨房间PK : 发起 PK 邀请 · 取消 PK 邀请 · 响应 PK 邀请 · 静音 PK 对象 · 恢复 PK
包括麦位的数据结构 和 麦位更新, 语音房共享数据区(就是说, 语音房可以设置一个共享数据, 一旦改变, 所有在此房间的用户都会收到最新的数据, 比如 "房间当前人数” 这样的数据, 就可以放在这个共享数据区中), 这些融云都提供了.
2.实现 [语音房] 功能中的 [IM功能], 必须使用 融云提供的IM能力, 因为它的API设计偏向于上层业务, 已经把 RTC和IM整合在一起了.
3.支持 Android / iOS / WEB 端的SDK.
调研结论 :
融云SDK的特点是 : "语聊房 SDK 是基于融云即时通讯(IM)和实时音视频(RTC)优势能力封装的场景化 SDK”, 这种 “场景化 SDK” 的API设计, 对于想要快速实现一个 [标配] 版本语音房来说, 很友好, 对于技术不强的团队, 很友好. 但是对于会深耕和不断创新玩法的团队来说, 这种API设计, 就局限性很大了, 不利于后续做 [玩法扩展] [局部优化] .
另外, 因为我们已经接入了云信SDK, 而融云的SDK是 [IM] 和 [RTC] 绑定存在的,如果接入融云, 就需要再接一个[融云 - IM], 这种方式也并不是我们想要, 我们想要的是, 融云提供 [RTC] 能力, 而云信提供[IM]能力, 因为 账号系统 和 IM消息, 都有业务级别的复用需求.
另外, 也是最重要的, 融云还是太年轻了, 我们最终选择了 [声网] 来为我们提供 [RTC] 能力.
3] 声网 [语音通话]
文档链接 :https://docs.agora.io/cn/voice-call-4.x/product_voice_ng?platform=Android
产品简介 (我们调研时, 还是SDK3.X…..):
声网 SDK v4.0.0 是一个新的 SDK 版本,可帮助用户将实时音频功能集成到 app 中。在大规模的实时互动场景下,你可以用它实现更好的实时互动效果。
在新 SDK 版本的基础上,声网搭建了声网云市场并引入了一批音频领域的顶级服务商,旨在帮助用户无缝集成扩展服务、更方便地实现多种扩展特性。
集成新版本 SDK 后,你可以将多个外部音频流(包括多路麦克风、多路自采集)发布到任意频道。 除此之外,你还可以使用内置播放器并将播放器的多路音频流推送到网络。
调研重点 :
1.声网提供了 [RTC] 和 [RTM] 能力, 二者可独立切割;
2.支持 Android / iOS / WEB / macOS / Windows 端的SDK.
调研结论 :
最终我们选择了 [声网] 作为 [语音房] 功能的提供商, 主体方案是 : 云信提供IM能力, 而声网提供RTC能力, 云信提供信令能力, 云信提供语音房共享数据区能力(使用其 "聊天室队列" 功能实现), 云信提供点对点的信令能力(通过其 “自定义通知” 实现), 后续我们自研了长链接模块, 逐渐替换了云信的信令和共享数据区能力.