在某些可以智能化处理的场景,比如针对某些业务场景打造的智能音视频客服(虚拟人),需要提供基于 Linux 平台的 WebRTC-SDK,它可以帮助您的服务端接入 WebRTC 服务与 Android、iOS、Web 端的真实用户进行实时的音视频通话。
目前 SDK 主要包括以下三个方面:
在音频方面,支持输入和输出都为 16k 采样率的单声道 PCM,同时也支持 48k 双声道的输入和输出。
在视频方面,支持输入和输出 I420P YUV 格式的数据。
在某些硬编平台,考虑到性能,支持 H264-NALU 输入和输出,此场景下,H264 编解码由您来完成。
接口设计
MRTCEngine 单例负责 MRTCSession 的创建。每个 MRTCSession 代表在某个房间里面的⼀次通话过程。
重要概念
参数 | 说明 |
---|---|
uid | 用户 ID,标识房间里面的用户,全局唯⼀性。 |
roomId | 房间 ID,通话双方必须加入同⼀个房间。 |
sessionId | 会话 ID,客户端创建或者加入房间以后,服务端会为客户端的这次通话分配唯⼀的 ID,整个通话过程中,此 ID 维持不变。 |
streamId | 流 ID,标识会话过程中用户的某次发布或者订阅操作,比如您发布⼀路音频流,发布⼀路视频流,服务器会为您分配两个流 ID,如果您还订阅了⼀路来自其他用户的流,针对此次订阅操作,系统也会分配⼀个流 ID。 |
recordId | 录制 ID,如果业务需要录制能力,那么创建房间成功后,除了返回相应的 roomId,还会返回⼀个 recordId,有了这个录制 ID,您可以从 OSS 上把这个录制文件下载下来。 |
音视频流的管理模式
上图简要描述了 MRTC 系统在客户端和服务器之间的音视频流管理模式。整体的框架是基于发布和订阅的模式进行设计的。客户端创建或者加入某个房间后通过发布操作,发布⼀路音频或者视频流到达服务器,接着服务器生成唯⼀的流 ID 对这路流进行标识,那么订阅方加入房间后,就可以通过订阅操作对这路流进行订阅。
调用流程
下图中紫色标识的步骤表示音视频服务端 接收 来自客户端的音视频数据。
下图中紫色标识的步骤表示音视频服务端 发送 音视频数据到客户端。