前言:本文将简要分享几个语音聊天室的应用场景,并讲述基于声网SDK,实现语音聊天室的步骤。

语音聊天在泛娱乐社交行业中有着重要的地位,行业中很多佼佼者也都为用户提供了语音聊天室,甚至有些平台最初就是依托语音聊天起家的,比如大家熟悉的YY。
从最初的一对一语音通话,到以 YY 为引爆点的多人语音群聊,再到现在聚集了一批“音控”的纯语音社交平台,很多类型的应用中都有语音聊天室。

例如语音电台,这是语音聊天室中比较典型的场景。主播可以在直播间中与给听众讲故事、唱歌,内容形式不一而足,观众也可以申请上麦,与主播聊天互动。主要实现的功能就是语音连麦,以及通过消息系统来实现的文字消息功能。看似简单,但是有些优质的语音社交平台能达到每月1亿的流水。

再譬如语音开黑,它也是语音聊天室的常见应用场景。由于目前还有一些游戏不支持实时语音通话的功能。同时,也有一些王者玩家想收费带青铜小白上分,而游戏中不支持付费带玩,那么语音聊天室成为了满足需求的出口。在一些应用中,玩家可以通过可付费预约的语音聊天室,允许其他玩家预约陪玩的,同时还可以语音开黑。功能上与语音直播相似,只是在这个频道中,不需要增加观众上下麦的逻辑。

如何实现语音聊天室

以上只是包含了语音聊天的部分场景而已,综上来看,语音聊天室需要满足的主要功能包括:

  • 支持多人参与的语音聊天;
  • 支持播放背景音乐;
  • 支持设置背景图片;

要实现一个具备以上功能的语音聊天室,大致可以分为两步:实现语音连麦、支持背景音乐播放。

首先是实现语音连麦。如果要通过自研的方法实现,会相对复杂一些,不仅需要自己部署服务器并做好高并发应对,对编解码器进行优化以解决回声和噪声问题,还要合理部署边缘节点来解决网络延时问题。解决以上几个主要问题后,还需要优化对中小运营商网络的支持。总体来讲,就是需要解决设备端、网络中的语连麦稳定低延时问题与可用性问题。我们在《详解音视频中的低延时》这篇文章中详细分析了优化的思路。

而以上这些问题,我们早已为开发者解决,并将接口集成于声网 SDK 中。开发者无需重复造车轮,再自己搭建媒体服务、信令服务、优化音视频编解码、做网络传输策略优化等问题。

接下来,我们来看一下基于声网视频通话SDK,实现语音聊天室的步骤吧。

首先,要说明下为什么是基于视频通话 SDK 来开发,而不是语音 SDK 呢?

  1. 视频通话 SDK 支持语音与视频功能。若开发者做好语音聊天室后,还可以根据自己需要在该基础上实现视频连麦。
  2. 更便于已经开发视频连麦直播的开发者,进一步实现语音聊天室。

下图为语音聊天室场景化方案的架构图与实现思路:

我们会基于以下开发环境来做开发:

  • Android SDK API Level ≥ 16
  • Android Studio 2.0 或以上版本
  • 支持语音和视频功能的真机
  • App 要求 Android 4.1 或以上设备

SDK 的集成步骤比较简单,对于有开发基础的同学,应该无需手把手教了。

第一步:实现语音连麦

房主一端创建 RtcEngine 对象,并填入 App ID。通过 setChannelProfile 接口将频道设置为直播模式。然后用 setClientRole 来设定主播(Broadcaster)和观众(Audience)的角色。
通常,观众上麦请求、主播通过上麦申请等一系列操作都是通过消息服务来完成的。当观众发出上麦请求,并得到了房主的上麦许可后,只需要通过 setClientRole 将该观众设定为 Broadcaster ,即可上麦。这时,我们就完成了连麦的功能。当观众下麦的时候,同样地,将其身份修改会 Audience 即可。

在主播或观众离开房间时,通过调用 LeaveChannel 来完成。我们可以通过一张图,来了解语音聊天室中接口的调用逻辑:

第二:增加背景音乐

在一些应用场景下,比如秀场、娱乐直播中,通常都会有背景音乐。所以,在实现了基本的连麦功能后,我们还需要增加背景音乐的混音、播放控制。

在这里,主播可以在自己的客户端上选择要播放的音乐,然后通过 SDK 的 AudioMixing 接口在本地与主播语音混音后播放给连麦听众和普通听众。

最后,考虑到在娱乐直播、游戏开黑、社交,甚至是教育场景下的语音聊天室,对于声音的码率、采样率、声道数的需求都有细微差别。我们在 SDK 中,还提供了“设置音质”的接口,即 setAudioProfile,供开发者根据实际听到的效果来自由调整。

public abstract int setAudioProfile(int AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5, int AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT = 1);

举个例子,如果做的是娱乐方向的应用,会遇到听众频繁上下麦的情况,并且需要48 KHz采样率、音乐编码、双声道、编码码率 192 kbps,那么可按照上述代码来设置 profile、scenario(上述代码段可左右拖动,查看完整代码)。

而在教育应用中也有师生之间的语音聊天室。而教育对于语音连麦的要求是,更注重流畅性与稳定性。那么可以将 scenario 的参数设定为AUDIO_SCENARIO_EDUCATION = 2
我们在 SDK 中对这个接口的 profile 与 scenario 各有5个不同的参数设置,具体大家可查看 setAudioProfile 的详细文档。

有些开发者希望以语音社交切入泛娱乐市场,也有一些市场上的视频社交玩家,希望加入语音聊天室,来进一步拓展市场版图。由于该场景方案是基于声网视频通话 SDK 实现,可以同时满足以上两种需求。

我们在 Github 已经提供了一套完整的 Demo,面向 iOS 与 Android 开发者,大家可以在「语音聊天室」的开发者文档页面上获取。在 Demo 的基础上,开发者只需要不到1周的时间,对 UI 和功能做简单修改即可准备测试上线。

一套代码快速实现一个语音聊天室相关推荐

  1. 一套代码,快速实现一个语音聊天室

    前言:本文将简要分享几个语音聊天室的应用场景,并讲述基于声网SDK,实现语音聊天室的步骤. 语音聊天在泛娱乐社交行业中有着重要的地位,行业中很多佼佼者也都为用户提供了语音聊天室,甚至有些平台最初就是依 ...

  2. 自己搭建一个语音聊天室

    简述 Clubhouse 在 2020 年 4 月上线,作为一款多人实时在线语音群聊 APP,上线至今也接近快一年了,但在本月初,来自特斯拉 CEO 马斯克在推特上的一条消息,带火了整个 Clubho ...

  3. 如何打造一个语音聊天室

    语音聊天室这个名词可能有点陌生,实际上相关的产品还是很多的,例如游戏里的开黑语音.在线课堂等.语音聊天室可以认为视频直播的前身,很多音视频平台的架构是从语音聊天室演进为视频直播室的.本文主要介绍语音聊 ...

  4. Flash/Flex学习笔记(53):利用FMS快速创建一个文本聊天室

    先来看客户端fla的构成: 第一帧:登录界面 第一帧的代码: show sourceview source print? 01 import flash.events.MouseEvent; 02 i ...

  5. golang websocket 一个语音聊天室

    原版是这位仁兄的https://github.com/99MyCql/chatRoom.我添加了图片和语音功能.因为H5的录音功能是需要https的,所以又在源码中添加了https的支持并修改ngin ...

  6. 开发最佳实践|集成声网 iOS SDK,实现语音聊天室

    大家好,我是声网 RTE 开发者社区作者 @小曾同学.本次主要分享集成声网SDK实现语音聊天室. 01 前言 在日常生活中经常会看到一些聊天场景,比如在线KTV.连麦开黑.多人相亲.娱乐聊天室等应用场 ...

  7. 腾讯云实时音视频带你玩转语音聊天室

    声音交友,在线K歌,自由上麦,声波传达-- 从最初单一的一对一语音通话,到后来火爆的多人语音群聊,再到现在聚集了一批"音控"的纯语音聊天室,当代年轻人的社交APP里最不可少的功能就 ...

  8. 抓住语音社交风口,1天快速搭建语音聊天室

    语音聊天室孵化 一起KTV.众人大合唱.语音开黑.狼人杀.剧本杀.多人配音.观影.语音电台.相亲联谊社交等,一般都是在语音聊天室中进行,那么语音聊天室产品如此火热的原因有哪些呢? 一对一社交适用于朋友 ...

  9. 实现一个简单的语音聊天室(源码)

    语音聊天室,或多人语音聊天,是即时通信应用中常见的功能之一,比如,QQ的语音讨论组就是我们用得比较多的. 这篇文章将实现一个简单的语音聊天室,让多个人可以进入同一个房间进行语音沟通.先看运行效果截图: ...

  10. 实现一个简单的语音聊天室(多人语音聊天系统)

    多人语音聊天,或语音聊天室,是即时通信应用中常见的功能之一,比如,QQ的语音讨论组就是我们用得比较多的. 本文将基于最新版本的OMCS(V3.5)实现一个简单的语音聊天室,让多个人可以进入同一个房间进 ...

最新文章

  1. 最近的生活[发点牢骚]
  2. 深入浅出理解Javascript原型概念以及继承机制(转)
  3. 产品优化成果过关?监控数据说了算
  4. python安装失败0x80070570_固态硬盘装win7出现错误代码0x80070570怎么办
  5. python3缺少pip_Ubuntu中找不到pip3命令的解决方法
  6. python3.5 3.6_centos7安装较高版本python3.5/3.6
  7. 【语音处理】基于matlab GUI汉宁窗FIR陷波滤波器语音信号加噪去噪【含Matlab源码 1711期】
  8. 黑苹果使用Hackintool注入声卡驱动
  9. 09 Anykey右分页重新设计
  10. 电子邮件营销与MailChimp。它是适合你
  11. pandas的is in和not in
  12. win10下的edge如何打开ie的兼容性视图?
  13. 爱,不留——陈光标裸捐之后
  14. 大连市金州区石河计算机学校,2021大连市金州区安全教育平台登录入口网址【最新】...
  15. 多元线性回归推导过程
  16. 关于筹码理论的一些知识
  17. 定时清理数据--定时操作
  18. dml测试软件,MODUS测量软件系列
  19. 这6个超实用的图片素材网站,高清、免费,赶紧马住
  20. 【玩转rom助手】专属刷机的小帮手

热门文章

  1. 【hud3966】树剖模板05
  2. 《Python数据分析与应用》第7章 机器学习模型的应用 实训部分
  3. 每日一練06:javascript原生拖拽写的日食
  4. 2021阿里淘系工程师推荐书单
  5. P61-指针-指针和数组
  6. python系列13:python中Path常用功能
  7. Autumn Web Handler
  8. MySQL启动常见错误:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
  9. SharePoint 网站的导入导出
  10. rstp 小米网络摄像头_各主流摄像头的rtsp地址格式