实时音视频

概述

RTM支持实时音视频,当需要进行语音聊天的用户进入同一个RTC房间后,即可开始多人实时语音聊天。RTM会通过设备的麦克风采集用户的实时语音数据转发给房间内所有其他人,其他人收到用户的音频数据后可以播放出来,以此实现同一房间内用户的实时语音交流。

基本流程

使用实时音视频的流程如下图所示:

实时音视频流程图

视频子流程如下图所示:

视频流程图

音频子流程如下图所示:

音频流程图

注意事项

1.实时音视频仅支持单点登录项目,暂不支持开启多点登录的项目

2.实时音视频的RTC房间与RTM的房间相互独立,没有内在联系,对于RTC房间的操作不会影响RTM房间,同样的,对RTM房间进行操作也不会影响RTC房间

3.音频支持多房间登录,但只能设置一个活跃房间,即只能指定一个房间进行收听和通话

4.视频房间只能同时进入一个,刚进入房间时,用户不会收到任何视频流数据,当用户订阅别的用户的视频流时,才会收到被订阅用户的视频流,若被订阅用户未开启摄像头,同样无法收到来自对方的数据。

基本功能

RTM客户端SDK支持的实时音视频功能如下表所示:

功能 描述
采集、收发、播放实时音视频数据 采集、收发、播放实时音视频数据
采集、收发、编解码实时视频数据 采集、收发、编解码实时视频数据
回声消除、噪声抑制 实时音视频通话过程中的AEC和ANS
麦克风增益 放大从麦克风采集到的音频数据
创建RTC房间 创建一个RTC房间
进入RTC房间 加入一个RTC房间
退出RTC房间 退出一个RTC房间
屏蔽用户音频 屏蔽某个用户的音频
解除屏蔽用户 解除对某个用户的屏蔽
管理员操作 提升管理员权限(房主)、允许/禁止用户发送视频流、打开/关闭用户麦克风/摄像头
获取RTC房间成员 获取RTC房间内的成员
查询RTC房间成员数量 获取RTC房间内的成员数量
打开/关闭音频 打开/关闭自己音频的播放和录制
打开/关闭摄像头 打开/关闭自己视频的录制
打开/关闭麦克风 打开/关闭自己音频的录制
订阅/取消订阅视频流 订阅/取消订阅用户的视频流
邀请用户进入房间 邀请其他用户进入房间
设置活跃房间 将某一房间设置为活跃房间,仅音频模式

RTM服务端SDK支持的实时音视频功能如下表所示:

功能 描述
邀请用户加入RTC房间 邀请指定用户进入房间
关闭RTC房间 关闭一个RTC房间
从RTC房间中踢出用户 从一个RTC房间中踢出指定用户
获取项目RTC房间列表 获取指定项目的RTC房间列表
获取RTC房间成员 获取RTC房间内的成员
查询RTC房间成员数量 获取RTC房间内的成员数量
管理员操作 提升管理员权限(房主)、允许/禁止用户发送视频流、打开/关闭用户麦克风/摄像头
设置默认麦克风状态 设置进入房间后默认的用户麦克风状态
拉用户进入房间 把指定用户拉入房间

客户端SDK功能简介

客户端SDK是实时音视频业务的主要承接者,主要的语音相关功能均在客户端SDK上完成

采集、收发、播放实时音频数据

实时音视频的核心业务,即麦克风的采集,对端音频的混音、处理等操作,由客户端SDK内部完成,用户无需操作

采集、收发、编解码实时视频数据

实时音视频的核心业务,即摄像头图像的采集、编码、发送、解码、渲染等操作,大部分功能由客户端SDK内部完成,用户需指定渲染的位置,Android需要用户传入Surface,iOS需传入UIView。

回声消除、噪声抑制

当使用手机麦克风和扬声器进行实时语音通话时,会产生回声,严重的甚至有啸叫声,这些消除工作已经集成在SDK内部,用户无需操作

对于采集过程中得到的环境噪声和电路噪声SDK也进行了消除处理,用户无需进行额外操作

麦克风增益

对于不同的麦克风设备,采集得到的音频数据的音量或大或小,当音量较小时,可以调用设置麦克风增益接口提高发送的音频的音量

创建RTC房间

创建一个未被占用的RTC房间,当房间已存在时返回失败

进入RTC房间

加入一个已存在的RTC房间,当房间不存在时返回失败

退出RTC房间

退出一个加入过的RTC房间

屏蔽用户音频

在某个房间中屏蔽某个用户,屏蔽过后服务器将不再推送来自该房间该用户的音频数据

解除屏蔽用户

解除对于某个用户的屏蔽,解除后服务器将继续推送相关音频

管理员操作

管理员或房主可进行的操作,管理员可禁止/允许用户发送视频、关闭用户麦克风、关闭用户摄像头,房主除可进行上述操作外,可以将普通用户提升为管理员,或将管理员降为普通用户。服务器将会拒收来自被禁止发送视频的用户的视频数据。

获取RTC房间成员

查询某个已经加入的房间内的成员,包括房间内成员的身份:房主、管理员、普通用户。

查询RTC房间成员数量

查询某个已经加入的房间内的成员数量

打开/关闭音频

打开音频,打开后可以播放来自服务器推送的音频数据,打开后可以正常对麦克风进行采集

关闭音频,关闭后将不会播放来自服务器推送的音频数据,并且也不会对麦克风数据进行采集

打开/关闭麦克风

打开麦克风,打开后会采集麦克风数据发送给服务器,已经关闭音频则无法打开麦克风

关闭麦克风,关闭后将不会再采集麦克风数据

打开/关闭摄像头

打开摄像头,打开后会采集摄像头数据发送给服务器

关闭摄像头,关闭后将不会再采集摄像头数据

订阅/取消订阅视频流

订阅某用户视频流后,服务器会将被订阅用户的视频流转发给订阅的用户。

取消订阅后,服务器将不再转发视频流。

邀请用户进入房间

邀请特定用户加入当前用户已经加入的房间,对方将收到一个加入房间的邀请,由用户判断是否加入

设置活跃房间

将某个已经进入后的房间设置为活跃房间,设置后将播放来自该房间的语音,并且从麦克风采集的音频也将发送到该房间

服务端SDK功能简介

服务端SDK仅提供对于RTC房间一系列管理相关功能,不进行实际的实时音视频业务

邀请用户加入RTC房间

同客户端SDK,特定用户邀请制定用户加入某个房间,该用户需要已经加入该房间。

关闭RTC房间

关闭某个RTC房间,关闭后该房间的用户将自动退出

从RTC房间中踢出用户

从RTC房间中踢出某个用户,用户被踢出后,将不再能够接收来自该房间的音频数据,需要重新加入房间后才能正常的接收音频数据

获取项目RTC房间列表

返回特定项目的RTC房间列表

获取RTC房间成员

返回某个RTC房间内的房间成员

查询RTC房间成员数量

返回某个RTC房间内的房间成员数量

管理员操作

可禁止/允许用户发送视频、关闭用户麦克风、关闭用户摄像头,可以将普通用户提升为管理员,或将管理员降为普通用户。

设置默认麦克风状态

设置某个房间的默认麦克风状态,影响用户加入房间后默认的麦克风状态,如:

当某房间默认麦克风状态为开时,加入该房间后,不进行任何操作时,客户端中的麦克风状态为打开

当某房间默认麦克风状态为关时,加入该房间后,不进行任何操作时,客户端中的麦克风状态为关闭

拉用户进入房间

强制指定用户加入某个房间,房间可以不存在,也可以存在。客户端收到消息推送后,将自动加入某个房间

客户端 服务端