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