写点什么

快速接入 | 从 0 到 1 构建语音聊天室

用户头像
拍乐云Pano
关注
发布于: 2020 年 12 月 29 日
快速接入 | 从 0 到 1 构建语音聊天室

导读:近年来,在线语音聊天的用户量持续上升。语音可承载的信息密度比文字图片丰富,又比视频更简单,不失为一种抓住 Z 世代年轻用户和实现流量变现的有效途径。为了满足用户的情感需求娱乐需求价值观认同,越来越多的社交泛娱乐应用以及出海应用开始在自己的产品中增加语聊房功能。拍乐云 Pano 在服务多家语音聊天室客户后,深度结合行业场景,推出了语音聊天室解决方案,助力客户从 0 到 1 快速完成接入。


一、语音聊天室场景描述


一个典型的语音聊天室里,有一个房主,设有 5-12 个麦位,N 个观众。房间里所有观众都能听到房主的声音,也可以自由上麦、下麦。房主可以邀请观众上麦,或进行下麦、禁麦等操作。同时,所有用户都能看到麦位的实时变动。我们来简单列举几个场景:


1. 语音交友


频道内用户可申请上麦,自由发言,一般会定主题来聊,比如相亲、情感、陪练等,观众可文字互动或打赏。


2. 连麦开黑


用户可自由创建房间,组队开黑,适用于狼人杀、剧本杀、真心话大冒险、你画我猜等游戏,实现游戏社交,其乐无穷。


3. 在线 KTV


频道内用户可在线点歌,通过排麦、轮唱、抢唱或合唱等形式实现趣味互动,观众可实时收听到美妙歌声,真实还原线下 KTV 效果。


二、如何实现语音聊天室


语聊房场景中主要包含麦上用户和麦下观众两个角色,各角色说明如下。


麦上用户


A 连麦者创建房间,成为管理员。


A 连麦者邀请其它用户进入房间。


B 连麦者上麦开始发送语音并且接收 A 连麦者的语音,与 A 连麦者语音互动。


麦下观众


C 观众、D 观众、E 观众、F 观众等进入房间。


观众接收 A、B 连麦者的语音,收听麦上用户互动音频。


观众通过赠送礼物和房间消息和麦上用户互动。


实现语音连麦,采用自研的方法不仅开发成本高,而且需要解决各种音频编码、回声、噪声和服务器高并发问题。通过集成 Pano SDK 可以轻松解决上述问题。



App Server

负责房间列表的维护。创建房间:用户登录业务系统后,提供创建房间的能力,创建房间后房间列表要做新增操作。销毁房间:提供销毁房间的能力,销毁房间后房间列表要做删除操作。

客户端


登录/登出房间


用户进入客户端后,选择房间列表中的房间,加入登录房间或者自行创建房间,开始主播。主播退出房间,需要解散房间。


1. 初始化 RTCEngine


通过 PanoRtcEngineKit 的 + engineWithConfig:delegate:方法初始化实例。


PanoRtcEngineConfig * engineConfig = [[PanoRtcEngineConfig alloc] init];engineConfig.appId = @""; // 替换为你的应用IDengineConfig.rtcServer = @"api.pano.video"; // PANO服务器地址self.engineKit = [PanoRtcEngineKit engineWithConfig:engineConfig delegate:self]; 
复制代码


2. 加入频道


通过 PanoRtcEngineKit 实例的- joinChannelWithToken: channelId:userId: config:方法加入频道。


PanoRtcChannelConfig * channelConfig = [[PanoRtcChannelConfig alloc] init];channelConfig.mode = kPanoChannelMeeting; // 频道模式PanoResult result = [self.engineKit joinChannelWithToken:@""channelId:@""                                                  userId:userId                                                               config:channelConfig];
复制代码


3. RTCSDK 信令通道


麦位管理:通过信令消息控制麦位。用户进入房间后,只有空闲状态的麦位可以上麦。用户上麦后,需要修改麦位状态为非空闲状态。



发送消息


[self.engineKit.whiteboardEngine sendMessage:data toUser:userId];
复制代码


广播消息


[self.engineKit.whiteboardEngine broadcastMessage:data];
复制代码


4. 播放伴音或者特效音


创建混音任务


self.engineKit.createAudioMixingTask(Int64(taskId), filename: path)
复制代码


开启混音任务


self.rtcEngineKit()?.startAudioMixingTask(Int64(id), with: config) 
复制代码


三、拍乐云语音聊天室优化方案


  • 超高并发


支持百人连麦大频道,在线玩家可实时收听麦上用户的发言,也可以自由上麦参与互动。


  • 超高音质


48kHz 音频采样率,还原 Full Band 超高音质,业内一流的 3A 算法,优异的单讲和双讲表现。


  • 声音美化


支持全链路双声道,实现 360° 环绕效果,支持多种混响效果,也支持实时的美声、变声,提供丰富的音频互动玩法。


  • 伴音特效音


互动用户可播放伴奏音乐,也可播放预设好的特效音,同步发放给远端用户,活跃语音聊天室氛围。


  • 耳返监听


实时监听自己的声音效果,可调节耳返音量,耳返时延低至 20ms。


  • 码率自适应


业内领先的静音检测技术和自适应拥塞控制算法,动态调整编码码率,最低仅 8kbps。


  • 极速流畅体验


独创 Pano Backbone 实时传输加速网络,端到端时延低至 68ms,70% 丢包下仍能保持流畅语音通话体验。


四、语音聊天室 Demo 体验


可直接通过拍乐云官网下载 Demo 安装体验,App 源码即时开放。成功运行 Demo 后,在界面上创建房间,输入房间号。使用另一台设备输入相同的房间号后加入房间,即为观众观看。观众可以申请上麦从而实现和房主的实时互动。

官网下载链接:https://www.pano.video/download.html#demo


发布于: 2020 年 12 月 29 日阅读数: 23
用户头像

拍乐云Pano

关注

Be Sharp,be simple 2020.06.28 加入

我们是一家由顶级音视频团队构建的实时通信Paas云服务公司,在音视频领域拥有超过二十年的技术积累。 我们通过提供极简、稳定和安全的SDK服务,让你的应用轻松实现音视频通话、互动白板、互动直播等能力。

评论

发布
暂无评论
快速接入 | 从 0 到 1 构建语音聊天室