简单五步,轻松构建本土「Clubhouse」

最近 Clubhouse 一码难求,获得众多互联网圈和投资圈人士的关注,一时之间风靡全球。 但受限于各方面原因,Clubhouse目前还是存在很多限制,比如采用邀请机制、只能iOS用户下载以及国内Apple账号无法下载等。 就产品本身而言,作为一个初创的即时语聊产品,Clubhouse也不可避免地存在如房间被动退出、语音延迟性等问题,而这也是国外用户反映普遍存在的问题。 尽管如此,Clubhouse 的突然火爆,还是让我们看到了即时语聊市场的庞大需求,声音社交仍有广泛的空间。 为了更快地帮助国内一些即将或者已经开始着手搭建即时语音聊天的企业了解Clubhouse,抢占先机,本篇文章将从产品设计、技术实现以及在搭建中可能存在的技术难点几个维度,对Clubhouse进行全面的分析和解读。 只需五步,即可轻松构建本土「Clubhouse」! 架构设计 客户端组件: 封装实现客户端与应用服务 Clubhouse Server 的交互,封装实现与音视频的交互 网关代理: 应用服务的网关服务 Clubhouse Server: 仿 ClubHouse 应用服务 网易 G2 音视频 RTC 服务: 提供稳定流畅、搞品质、全平台的点对点和多人实时音视频通话服务,其中包括: 网易云信 IM SDK 网易云信 G2 SDK 架构图如下: 核心流程 分解一下需求,除去用户标签、房间标签和话题推荐,Clubhouse 的功能大概分为以下几个板块: 房间列表 创建/加入房间 管理员邀请用户 举手发言 离开房间 其中,整体的房间控制需要在网易云信 G2 音视频 SDK 的基础之上,借助服务端来控制;加入房间后的音视频能力,则直接由 SDK 提供;另外服务端通知则由网易云信 IM SDK 提供的长链接服务来负责传递。详细流程图如下: 第一步:获取房间列表 在这一步中,我们调用服务端接口获取到房间列表。 第二步:创建/加入房间 在这一步中,不论是创建房间还是加入房间,都会调用服务端提供的 /clubRoom/join 接口。在用户加入到 channelName 房间时,应用服务器会判断 channelName 是否存在。如果对应房间不存在,会创建一个房间并加入同时返回相应的房间信息;如果传入 channelName 存在,则用户直接加入该房间。当获取到服务端返回的房间信息时,再调用 G2 SDK 的加入房间 API joinChannelWithToken,真正加入音频房间。当加入房间成功后,G2 SDK 会抄送消息至应用服务器,更新用户在房间中的状态。 第三步:管理员邀请用户加入房间 当管理员点击邀请用户加入房间时,会先获取到好友列表,然后服务端生成一个短链返回到客户端。当被邀请者点击短链后,会自动加入房间。 第四步:举手发言 在这一步中,客户端会先调用/clubRoom/handsup接口,告诉服务端我想发言。然后,服务端通过云信 IM 提供的透传协议以及长链接将消息发送给房间管理员。管理员点击同意时,会调用管理员会控接口/clubRoom/control/host更新成员音频状态为「发言状态」,同时应用服务器通过 IM 透传协议通知举手者音频已打开,此时举手者调用 G2 的 API enableLocalAudio 来开启麦克风。 第五步:离开房间 最后,当用户点击离开房间按钮后,直接调用 G2 SDK 的 leaveChannel 方法离开房间,此时,G2 会抄送用户离开消息至应用服务器,服务器标记该用户离开。 G2 SDK 详细说明 其中,G2 SDK 用到的方法的详细说明如下: 1. 导入类 在项目中导入 NERtcSDK 类: 2. 初始化 打开 App 后,先执行 - setupEngineWithContext: 方法完成初始化。 3. 加入房间 加入房间前,请确保已完成初始化相关事项。 通过 – joinChannelWithToken:channelName:myUid:completion: 方法加入房间。 4. 退出通话房间 通过 leaveChannel 接口退出通话房间。 NERtcEngineDelegate 提供 – onNERtcEngineDidLeaveChannelWithResult: 来监听当前用户退出房间的结果。 本土Clubhouse技术难点分析 1.通用性技术难点与解决方案 问题描述 1. 弱网情况下的丢包问题 2. 设备适配问题 3. 音质问题 解决方案 1. 自研的网络引擎弱网算法,保证在80%丢包的传输场景下,音频也能进行正常通话,弱网优势更明显。 2. 针对超过数千款设备进行音质适配,保证回声抑制的效果在绝大多数机型上都有最优的表现。 3. 自研的音频AI降噪算法,可以针对嘈杂人声、键盘声等非稳态噪声进行定向降噪,提升对于环境稳态噪声的抑制能力,保留更纯粹人声。 2.适用于国内的技术难题与解决方案 问题描述 1. 对于 Clubhouse 这一类声音社交的语音聊天室场景,场景中可能出现如暴恐、涉政、色情、广告等不可控违规内容。随着有关部门的监管力度不断增强,平台对于内容进行管控的工作成为了必要。 2. 实时音频场景下的内容审核,由于其场景实时进行的特殊性,对反垃圾服务也提出了较为严苛的要求。例如,审核结果必须足够实时,嘈杂场景下的音频采集不能严重影响检出率,高并发场景下需要做到快速响应不拥塞等等。 解决方案 云信针对该场景打磨除了一套完备的实时音频反垃圾服务,为客户的业务合规性保驾护航。该服务通过业内领先的语音识别技术,结合反垃圾文本过滤规则体系,精准、高效分析识别违规音频。此外,依托网易云计算资源,动态扩容,弹性伸缩,满足客户的涉黄、涉政、广告等其他多维度场景的高并发、高精准的反垃圾检测。 总结 按照如上五步,我们就可以基于网易云信提供的强大的基础能力,轻松快速地打造一个属于自己的「Clubhouse」,赶上风口,下一个致富的就是你! 相关链接 网易云信官网-多人语聊解决方案 网易云信聊天室 NEChatroom源码 网易云信G2 SDK IOS端API文档

2021-02-08

云信核心开发者开启招募,诸多权益等你来

各位开发者伙伴,截至2020年已有超过100万开发者接入网易云信,实现其业务功能。云信的发展离不开各位开发者伙伴的长久以来的支持和不断提出的建议。 为了感谢各位开发者一直以来对云信的支持,也为了更好的支撑开发者们对IM及RTC技术的学习和应用,网易云信2021年推出了核心开发者计划(NE Core Developer), 并为核心开发者设计了丰富的权益体系,以期帮助开发者们更高效的学习成长、更好的沟通交流。 同时也希望开发者们能够参与云信产品共创、共同推动网易云信产品的持续优化。我们期待您的加入! 加入“网易云信核心开发者计划“有什么要求? 只要你喜欢、认可网易云信,有云信产品使用经验,并愿意通过经验分享、参与共创等方式帮助更多开发者快速成长,同时为云信产品的持续迭代优化提出意见和建议,我们随时欢迎你的加入。 网易云信核心开发者(NE Core Developer)有哪些权益? 我们为核心开发者准备了丰富的权益体系,包括但不限于以下权益,更多权益还在持续补充中: 各类课程免费获取,千门好课免费学 专属奖品/网易周边福利,惊喜多多 前沿技术周刊实时同步 云信专家面对面机会,谈笑有鸿儒 个人IP打造,成就个人影响力 受邀参与各类网易开发者活动 受邀参观网易园区 更多权益持续更新... ... 网易云信核心开发者(NE Core Developer)需要做些什么? 通过意见和建议的提出帮助云信持续迭代优化 通过经验分享帮助其他开发者使用云信产品 参与云信产品体验活动,成为云信“布道师” 如何申请加入”网易云信核心开发者计划“? 小伙伴们看到这里有没有心动?那就快快申请加入我们吧。扫描下方二维码,填写您的申请信息和理由,点击提交即可。收到申请信息后,我们的小助手会在5个工作日内完成审核,审核通过后会通过微信添加您为好友与您联系。 申请过程中有任何问题,欢迎添加云信运营小姐姐微信“nim_pscs_jing” 进行咨询。 第一期招募的欢迎福利是:30套网易技术+职场在线好课,申请通过即可获得哟~

2021-01-28

Windows SDK签名算法变更通知

 因SHA1算法时间戳服务器在2021年1月1日已停止服务,云信后续Windows新版SDK将仅包含SHA256算法签名。 由于 Windows XP 不支持 SHA256 算法签名,会影响新版SDK的验证签名有效性。(但不影响 SDK 的功能使用) 如您将从 8.2.0 及以下版本升级到最新版本,则有必要通知 XP 终端用户可能会出现无法校验签名的情况,也可建议其尽快升级到 Windows 10 以上系统。

2021-01-22

【重要通知】2021年2月起直播点播海外计费调整通知

2021年2月1日起,直播/点播开始区分大陆和海外计费,2月2日起,可在云信控制台的实时账单中查看相关明细。届时您也可以通过“控制台-数据统计-直播/点播”筛选区域(大陆地区/中国港澳台地区及海外地区)来查看用量明细。相关计费规则如下: 【按流量-日结】  中国港澳台地区及海外地区计费调整为(2元/GB);中国大陆计费标准保持不变(0.56元/GB) 【按带宽-日结】 中国港澳台地区及海外地区计费调整为(1.5元/Mbps);中国大陆计费标准保持不变(0.6元/Mbps) 直播/点播最新计费详情可参考以下表格: 【注】原定1月12日调整直播海外计费的时间统一延期至2月1日执行 (以上,如有任何疑问可联系您的客户经理咨询)

2021-01-12

【重要通知】2021年1月直播海外计费调整通知

2021年1月12日起,直播开始区分大陆和海外计费,1月13日起,可在云信控制台的实时账单中查看相关明细。 届时您也可以通过“控制台-数据统计-直播”筛选区域(大陆地区/中国港澳台地区及海外地区)来查看具体明细。相关的计费规则如下: 【按流量-日结】 中国港澳台地区及海外地区计费调整为(2元/GB);中国大陆计费标准保持不变(0.56元/GB) 【按带宽-日结】 中国港澳台地区及海外地区计费调整为(1.5元/Mbps);中国大陆计费标准保持不变(0.6元/Mbps)   此外,近期我们还将调整点播海外计费,具体上线时间另行通知。 直播最新计费明细可参考以下表格:      

2021-01-07

【重要通知】云信机房网络设备升级通知

尊敬的客户: 您好!12月24日(本周四)01:30-07:00,因机房网络设备替换升级,云信将进行运维操作。 在此期间,可能会有短时间服务响应时长增加等现象。 【网易云信】

2020-12-21

【重要通知】苹果APNs推送接口更新通知

尊敬的用户,您好 接苹果公司公告要求,如果您使用旧版本二进制协议发送APNs通知, 请尽快更新到基于HTTP/2的APNs API,旧版API将在11月后不再被苹果公司支持。 请登录云信后台,在应用->证书管理->APNs证书中绑定Bundle Identifier信息。 以确保推送优先调用新版接口。 苹果公司相关政策和新版API接口的相关介绍可参考: https://developer.apple.com/news/?id=11042019a   网易云信

2020-11-18

【版本更新】网易云信V7.7.0音视频版本发布上线!

尊敬的网易云信用户,您好 网易云信V7.7.0音视频版本已发布上线,点击下载 。本次上线的主要功能有: 【新增】客户端提供新接口可以查询音视频连接状态 在多人音视频房间中,我们新增了音视频通话状态查询的接口,允许您在业务适合的时机主动发起查询,确认当前用户与音视频服务器的连接状态。 目前支持的音视频状态如下: 不在通话中 正在连接  正在通话中 重新连接中 连接断开  支持在Android、iOS、Windows、Web上使用 推荐多人音视频的客户接入,在高互动性场景下能够管理所有用户的连接状态,通过针对状态变化设计不同的交互形式提高整体产品体验。 【新增】Web端增加同步音量的回调 在Web端音视频房间内,我们每间隔200ms都会把房间内远端用户的音量回调给本端用户,确保您可以在Web端能够精确展示每个用户说话的声音大小,能够知道谁正在说话,音量的范围在[0, 100]之间。 推荐泛娱乐、企业办公、教育客户,能够在音视频房间中让每个用户知道谁在说话,沟通上更有针对性。 【新增】小程序会议模式下支持携带自定义消息 在小程序多人通话房间中,我们允许房间创建者进行房间创建的时候携带扩展字段,当其他客户端(包括小程序)加入房间的时候可以解析该房间的扩展字段。详见[微信小程序携带自定义消息] 至此我们在各个客户端上扩展字段都已经打通,可以依赖该字段进行默认信息的同步传输。例如某些多人通话场景中,会议的发起方需要把一些会议的重要信息同步到与会方,此时就需要依赖该扩展字段。 推荐多人音视频通信微信小程序平台的客户接入使用。 【新增】服务端通过通话cid查询录制文件接口 当您在使用录制文件抄送功能出现异常时,我们为您提供了通过通话cid查询录制文件的接口 此接口仅作为抄送功能异常时的补充手段,受一定的频控限制,因此我们依然建议您通过配置录制文件抄送功能来获取录制文件 【新增】互动直播房间推流抄送新增推流状态抄送 在互动直播房间推流信息抄送中,在已有字段的基础上,我们新增了两个新的字段:推流开始、推流结束 推荐使用互动直播房间推流的客户,期望能够获得更详细的推流状态 【优化】精简Web的错误码 完善了更加精准的Web端错误码信息,详见Web端错误码说明 推荐Web端的客户升级到最新版本进行体验。 【修复】Web端加入房间失败却上报加入成功的问题 改善了云信音视频质量数据监控台Web端事件的准确性 建议所有Web端的客户升级到最新版本,能够确保在使用云信音视频质量数据监控台的时候看到正确的事件信息。 【修复】Android端屏幕共享存在黑边的问题 改善了云信Android屏幕共享时的产品体验。 【API变动】 【API新增】Android、iOS、Windows getConnectStatus 查询音视频连接状态 【API新增】Web、Electron getConnectStatus 查询音视频连接状态 netcall.on('speaker',xx) 回调监听房间内的音量 【API变更】小程序接口 netcall.createChannel新增custom自定义参数 netcall.joinChannel新增custom自定义参数。 ------------------------------------------------------------------------------------------- 感谢您对网易云信的信赖与支持,如有任何疑问,请联系客户经理,或拨打客服热线4009-000-123。

2020-05-28

【重要公告】线上申请发票需完成企业实名认证

尊敬的用户,您好! 根据《中华人民共和国网络安全法》及相关法律的规定。使用网易云信服务,需进行实名认证。为了确保您的服务不受影响,请您在2020年5月14日之前完成实名认证。 自2020年5月14日起,未完成企业认证的将无法线上申请发票。完成企业认证的,发票抬头需与认证的企业名称保持一致,如不一致可以提交修改流程。 您可直接登录云信控制台,通过左侧菜单栏或首页弹框提醒入口进入认证页面。 感谢您对网易云信的信赖与支持,如有任何疑问,请联系客户经理,或拨打客服热线4009-000-123。 网易云信

2020-04-23

【版本更新】网易云信V7.5.0音视频版本已发布上线

  尊敬的网易云信用户,您好   网易云信V7.5.0音视频版本已发布上线,点击下载 。本次上线的主要功能有:   【新增】CDN拉流可以获取主播的播放音量 在互动直播CDN推流服务中,我们提供了与声音同步的音量信息,拉流观众可以在听到主播声音的同时看到主播的当前的音量大小的数值。 由于数据协议存在兼容性差异,建议使用云信的播放器解析音量数据,支持在Android、iOS、Windows、Web上使用 如果想开始试用该功能,可以联系您的客户经理进行后台配置操作。 推荐多人语音聊天室、语音秀场直播的客户接入,可以获得更好地视听体验。 【优化】首帧渲染耗时平均减少了25% 首帧渲染耗时优化之后,用户进入房间渲染出图的时间更快。 【优化】互动直播房间推流API返回状态补齐 对于互动直播房间推流接口,提供了更细致的返回状态及错误描写信息,方便开发者进行开发参考 【修复】Web端共享屏幕进行CDN推流出现录制文件绿屏的问题 改善了Web端屏幕共享下的录制效果,重点提升了录制文件的可靠性。 建议在线教育、远程办公的客户可以升级到最新版本,保障Web端的录制的可靠性。 【修复】Web端某些情况下无法拉流的问题 极大地改善了Web端的使用稳定性问题,减少了用户在使用过程中的问题反馈。 建议在线教育、远程办公的客户可以升级到最新版本,保障Web端使用的稳定性。   -------------------------------------------------------------------------------------------   感谢您对网易云信的信赖与支持,如有任何疑问,请联系客户经理,或拨打客服热线4009-000-123。

2020-04-02