关键概念
本文介绍使用声网 RTC SDK 需要了解的流程或概念。
RTC (Real-Time Communication) 指实时通信技术。这种技术可以让信息发送方与接收方的任何通信服务几乎同时发生。相比泛指的通信,RTC 更加聚焦实时性,可以在极短的时间内传输音频、视频、数据等信息,从而实现实时交流和互动。
声网的 RTC SDK 是提供音视频实时互动云服务的产品,支持多平台多设备运行,可实现一对一单聊、多人群聊,同时具备纯语音通话、高清视频通话和互动直播功能。
流程
使用控制台
使用声网音视频服务首先需要在控制台创建音视频项目,详见开通声网服务。
控制台:声网提供给开发者管理声网各项服务的工具。控制台提供直观的界面,方便开发者在使用声网各项服务时进行充值、查询、管理等操作。
App ID:声网为开发项目生成的字符串,是项目的唯一标识。
App 证书:又名 App Certificate,它是声网控制台为开发项目生成的随机字符串,用于开启 Token 鉴权,并作为生成 Token 的参数之一。
Token:也称为动态密钥,是在加入频道时用于校验用户权限的一组字符串。
在控制台获取 App ID、App 证书和 Token 后,就可以开始尝试实现音视频通信的基本流程了。
音视频基本流程
下图展示了利用声网 RTC SDK 实现音视频互动的工作流程。
流:一路流是一系列数字编码的连续信号,包含音频或视频数据。
频道:由开发者调用声网提供的 API 创建的、用于传输实时数据的通道。
发布:指频道中的用户将音视频数据发送到频道的操作。
订阅:指频道中的用户接收频道内已发布的音视频流的操作。
用户 ID:App ID 一致的前提下,用户 ID 是用户的唯一标识符。
用户角色:用于定义频道内用户是否有发流权限,分别有主播和观众两种用户角色。
- 主播:频道内有发流权限的用户。
- 观众:频道内没有发流权限的用户。观众只能订阅远端音视频流,不能发布音视频流。
连接 (RtcConnection):SDK 与 RTC 频道间的连接。当你需要在多个频道中发布或接收多路流时,一个连接用于指定一个目标频道。
SD-RTN™:是 Software-Defined Real-Time Network 的缩写,即软件定义实时网,这是声网自建的底层实时传输网络。
概念
轨道
轨道 (track) 包含了特定的音频或视频信息,由输入源 (source)、过滤器 (filter) 和输出端 (sink/renderer) 三个部分组成;根据在 RTC 流程中功能的不同,又可分为上行轨道(发送端)和下行轨道(接收端)。
输入源:位于轨道的起始端,表示本地待发布的音视频数据,可以是摄像头、屏幕采集、麦克风,也可以是从文件解析得到的音频/视频等。
过滤器:对音视频进行一系列处理,包括:前处理和后处理,以及将处理后的音视频信号传输到输出端。过滤器可以连接多个输入源或者多个输出端。
- 前处理:在 RTC 里发送端轨道内的音频/视频过滤器,如虚拟背景、美颜、回声消除、降噪等。
- 后处理:在 RTC 里接收端轨道内的音频/视频过滤器,如超分辨率、空间音频等。
输出端:位于轨道的末端,通常轨道会在此处结束,比如编码器、渲染器等。
音频模块
在音频互动中,音频模块的主要功能如下图所示:
调用 registerAudioFrameObserver
注册音频观测器后,你可以在音频流程的不同观测位置获取原始音频数据,详情如下:
- ①:通过
onEarMonitoringAudioFrame
回调获取耳返的原始音频数据。 - ②:通过
onRecordAudioFrame
回调获取采集的原始音频数据。 - ③:通过
onPlaybackAudioFrameBeforeMixing
回调获取每条拉流单独的原始音频播放数据。 - ④:通过
onPlaybackAudioFrame
回调获取所有拉流混合的原始音频播放数据。 - ⑤:通过
onMixedAudioFrame
回调获取采集和播放混音后的原始音频数据。
即:⑤onMixedAudioFrame
= ②onRecordAudioFrame
+ ④onPlaybackAudioFrame
音频路由:App 在播放音频时使用的音频输出设备。常见的音频路由有:有线耳机、听筒、扬声器、蓝牙耳机等。
音频模块各功能使用到的 API 如下:
- 开启本地音频采集:
enableLocalAudio
- 设置本地播放设备:
setPlaybackDevice
- 设置音频路由:
setDefaultAudioRouteToSpeakerphone
视频模块
在视频互动中,视频模块的主要功能如下图所示:
- ①:观测位置为
POSITION_POST_CAPTURER_ORIGIN
。 - ②:观测位置为
POSITION_POST_CAPTURER
,对应onCaptureVideoFrame
回调。 - ③:观测位置为
POSITION_PRE_ENCODER
,对应onPreEncodeVideoFrame
回调。 - ④:观测位置为
POSITION_PRE_RENDERER
,对应onRenderVideoFrame
回调。
视频模块各功能使用到的 API 如下:
- 开启本地视频采集:
enableLocalVideo
- 本地预览:
setupLocalVideo
→startPreview
- 视频渲染显示:
setupRemoteVideo