例如语音电台,这是语音聊天室中比较典型的场景。主播可以在直播间中与给听众讲故事、唱歌,内容形式不一而足,观众也可以申请上麦,与主播聊天互动。主要实现的功能就是语音连麦,以及通过消息系统来实现的文字消息功能。看似简单,但是有些优质的语音社交平台能达到每月1亿的流水。
再譬如语音开黑,它也是语音聊天室的常见应用场景。由于目前还有一些游戏不支持实时语音通话的功能。同时,也有一些王者玩家想收费带青铜小白上分,而游戏中不支持付费带玩,那么语音聊天室成为了满足需求的出口。在一些应用中,玩家可以通过可付费预约的语音聊天室,允许其他玩家预约陪玩的,同时还可以语音开黑。功能上与语音直播相似,只是在这个频道中,不需要增加观众上下麦的逻辑。
以上只是包含了语音聊天的部分场景而已,综上来看,语音聊天室需要满足的主要功能包括:
要实现一个具备以上功能的语音聊天室,大致可以分为两步:实现语音连麦、支持背景音乐播放。
而以上这些问题,我们早已为开发者解决,并将接口集成于声网SDK中。开发者无需重复造车轮,再自己搭建媒体服务、信令服务、优化音视频编解码、做网络传输策略优化等问题。
接下来,我们来看一下基于声网视频通话SDK,实现语音聊天室的步骤吧。
首先,要说明下为什么是基于视频通话SDK来开发,而不是语音SDK呢?
下图为语音聊天室场景化方案的架构图与实现思路:
我们会基于以下开发环境来做开发:
SDK的集成步骤比较简单,对于有开发基础的同学,应该无需手把手教了。
房主一端创建RtcEngine对象,并填入AppID。通过setChannelProfile接口将频道设置为直播模式。然后用setClientRole来设定主播(Broadcaster)和观众(Audience)的角色。通常,观众上麦请求、主播通过上麦申请等一系列操作都是通过消息服务来完成的。当观众发出上麦请求,并得到了房主的上麦许可后,只需要通过setClientRole将该观众设定为Broadcaster,即可上麦。这时,我们就完成了连麦的功能。当观众下麦的时候,同样地,将其身份修改会Audience即可。
在主播或观众离开房间时,通过调用LeaveChannel来完成。我们可以通过一张图,来了解语音聊天室中接口的调用逻辑:
在一些应用场景下,比如秀场、娱乐直播中,通常都会有背景音乐。所以,在实现了基本的连麦功能后,我们还需要增加背景音乐的混音、播放控制。
在这里,主播可以在自己的客户端上选择要播放的音乐,然后通过SDK的AudioMixing接口在本地与主播语音混音后播放给连麦听众和普通听众。
最后,考虑到在娱乐直播、游戏开黑、社交,甚至是教育场景下的语音聊天室,对于声音的码率、采样率、声道数的需求都有细微差别。我们在SDK中,还提供了“设置音质”的接口,即setAudioProfile,供开发者根据实际听到的效果来自由调整。
publicabstractintsetAudioProfile(intAUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO=5,intAUDIO_SCENARIO_CHATROOM_ENTERTAINMENT=1);举个例子,如果做的是娱乐方向的应用,会遇到听众频繁上下麦的情况,并且需要48KHz采样率、音乐编码、双声道、编码码率192kbps,那么可按照上述代码来设置profile、scenario(上述代码段可左右拖动,查看完整代码)。
有些开发者希望以语音社交切入泛娱乐市场,也有一些市场上的视频社交玩家,希望加入语音聊天室,来进一步拓展市场版图。由于该场景方案是基于声网视频通话SDK实现,可以同时满足以上两种需求。
RTE开发者社区是聚焦实时互动领域的中立开发者社区。不止于纯粹的技术交流,我们相信开发者具备更加丰盈的个体价值。行业发展变革、开发者职涯发展、技术创业创新资源,我们将陪跑开发者,共享、共建、共成长。