下图为音视频会议业务方案架构图:
你可以参照以下的步骤,了解实现业务逻辑对应的技术逻辑。
说明:不同平台的调用时序相同,但接口名称、参数名称可能略有差异。如无特别说明,时序图中接口名称以 Windows RTC SDK 为例。
| 步骤 | 业务逻辑 | 技术逻辑 |
|---|---|---|
| 1 | 主持人发起会议 | 客户端调用 JoinRoom 创建一个会议房间。 |
| 2 | 开启会议录制 | 会控系统调用 OpenAPI startRecord 发起云录制。 |
| 3 | 开关屏幕共享 | 1. 客户端调用 StartScreenVideoCapture 采集屏幕流。2. 客户端调用 PublishScreen 发送屏幕流给远端。 客户端调用 StopScreenVideoCapture 和UnpublishScreen 停止屏幕共享。 |
| 4 | 请求打开或者关闭参会人麦克风 | 主持人通过会控系统发送信令消息给指定用户开、关本地音频流。 |
| 5 | 移交主持人权限 | 通过会控系统将主持人移交给指定用户。 |
| 6 | 结束会议 | 客户端调用 LeaveRoom,同时向会控系统发送信令消息来让所有参会人离开房间并销毁业务房间。 |

| 技术逻辑 | Windows API | Android API | iOS API | Web API |
|---|---|---|---|---|
| 创建 RTCEngine 实例 | createRTCVideo | createRTCVideo | createRTCVideo:delegate:parameters: | createEngine() |

Web 端需要调用以下 API 进行发布和订阅。
| 技术逻辑 | Web API |
|---|---|
| 创建/加入 RTC 房间 | joinRoom |
| 远端用户进房通知 | onUserJoined |
| 手动发布音视频流 | publishStream |
| 停止发布音视频流 | unpublishStream |
| 订阅指定用户音视频流 | subscribeStream |
| 取消订阅指定用户音视频流 | unsubscribeStream |
| 开麦 | StartVideoCapture |
| 远端用户开麦通知 | onUserPublishStream |
| 暂停发送视频流/恢复发送视频流 | unpublishStream |
| 远端用户开启视频通知 | onUserPublishStream |

| 技术逻辑 | Android API | iOS API | Windows API |
|---|---|---|---|
| 开始屏幕采集 | startScreenCapture | startScreenCapture:bundleId: | StartScreenVideoCapture |
| 停止屏幕采集 | stopScreenCapture | stopScreenCapture | StopScreenVideoCapture |
| 开始共享屏幕 | publishScreen | publishScreen: | PublishScreen |
| 停止共享屏幕 | unpublishScreen | unpublishScreen | UnpublishScreen |
Web 端共享屏幕的时序和其他端的略有差异,详见下图。
| 技术逻辑 | Web API |
|---|---|
| 开始屏幕采集 | startScreenCapture |
| 开始共享屏幕 | publishScreen |
| 停止共享屏幕 | unpublishScreen |
| 技术逻辑 | Android API | iOS API | Windows API | Web API |
|---|---|---|---|---|
| 获取设备 | -- | -- | GetDevice | getDevices |
| 开启发言者音量提示 | enableAudioPropertiesReport | enableAudioPropertiesReport: | EnableAudioPropertiesReport | enableAudioPropertiesReport |
你可能还需要将会议内容录制下来,用于存档和后续回放。RTC 提供了云端录制功能。使用此功能,你可以将视频通话内容录制下来,并保存到云端。录制过程使用 RTC 提供的云端服务完成,不会占用你的业务服务器算力或客户端设备算力。
关于如何使用云端录制功能,参看关于云端录制。

| 技术逻辑 | Android API | iOS API | Windows API | Web API |
|---|---|---|---|---|
| 关闭本地音频采集 | stopAudioCapture | stopAudioCapture | stopAudioCapture | stopAudioCapture |
| 关闭本地视频采集 | stopVideoCapture | stopVideoCapture | StopVideoCapture | stopVideoCapture |
| 离开房间 | leaveRoom | leaveRoom: | LeaveRoom | leaveRoom |
| 远端用户退房通知 | onUserLeave | rtcRoom:onUserLeave:reason: | OnUserLeave | onUserLeave |
| 销毁引擎实例 | destroy | destroy | destroy | destroyEngine |