整体方案架构

下图为音视频会议业务方案架构图:
alt

实现业务逻辑

你可以参照以下的步骤,了解实现业务逻辑对应的技术逻辑。

说明:不同平台的调用时序相同,但接口名称、参数名称可能略有差异。如无特别说明,时序图中接口名称以 Windows RTC SDK 为例。

步骤业务逻辑技术逻辑
1主持人发起会议客户端调用 JoinRoom 创建一个会议房间。
2开启会议录制会控系统调用 OpenAPI startRecord 发起云录制。
3开关屏幕共享1. 客户端调用 StartScreenVideoCapture 采集屏幕流。
2. 客户端调用 PublishScreen 发送屏幕流给远端。
客户端调用 StopScreenVideoCapture 和UnpublishScreen 停止屏幕共享。
4请求打开或者关闭参会人麦克风主持人通过会控系统发送信令消息给指定用户开、关本地音频流。
5移交主持人权限通过会控系统将主持人移交给指定用户。
6结束会议客户端调用 LeaveRoom,同时向会控系统发送信令消息来让所有参会人离开房间并销毁业务房间。
API调用时序
发起会议

alt

技术逻辑Windows APIAndroid APIiOS APIWeb API
创建 RTCEngine 实例createRTCVideocreateRTCVideocreateRTCVideo:delegate:parameters:createEngine()
音视频互动

alt

技术逻辑Android APIiOS APIWindows API
设置视频发布参数setVideoEncoderConfigsetVideoEncoderConfig:SetVideoEncoderConfig
设置本地视频显示属性setLocalVideoCanvassetLocalVideoCanvas:withCanvas:setLocalVideoCanvas
设置远端视频在本地的显示属性setRemoteVideoCanvassetRemoteVideoCanvas:withCanvas:setRemoteStreamVideoCanvas
开启本地音频采集startAudioCapturestartAudioCaptureStartAudioCapture
开启本地视频采集startVideoCapturestartVideoCaptureStartVideoCapture
创建/加入 RTC 房间,并开启自动发布和自动订阅joinRoomjoinRoomjoinRoomByToken:userInfo:roomConfig:
远端用户进房通知onUserJoinedrtcEngine:onUserJoined:elapsed:OnUserJoined
开麦/摄像头publishStreampublishStream:publishStream
远端用户闭麦/开麦通知onUserPublishStreamrtcRoom:onUserPublishStream:type: onUserPublishStream
暂停发送视频/音频流unpublishStreamunpublishStream:unpublishStream
远端用户开启视频通知onUserPublishStreamrtcRoom:onUserPublishStream:type: onUserPublishStream

Web 端需要调用以下 API 进行发布和订阅。
alt

技术逻辑Web API
创建/加入 RTC 房间joinRoom
远端用户进房通知onUserJoined
手动发布音视频流publishStream
停止发布音视频流unpublishStream
订阅指定用户音视频流subscribeStream
取消订阅指定用户音视频流unsubscribeStream
开麦StartVideoCapture
远端用户开麦通知onUserPublishStream
暂停发送视频流/恢复发送视频流unpublishStream
远端用户开启视频通知onUserPublishStream
共享屏幕

alt

技术逻辑Android APIiOS APIWindows API
开始屏幕采集startScreenCapturestartScreenCapture:bundleId: StartScreenVideoCapture
停止屏幕采集stopScreenCapturestopScreenCaptureStopScreenVideoCapture
开始共享屏幕publishScreenpublishScreen:PublishScreen
停止共享屏幕unpublishScreenunpublishScreenUnpublishScreen

Web 端共享屏幕的时序和其他端的略有差异,详见下图。
alt

技术逻辑Web API
开始屏幕采集startScreenCapture
开始共享屏幕publishScreen
停止共享屏幕unpublishScreen
其他操作
技术逻辑Android APIiOS APIWindows APIWeb API
获取设备----GetDeviceenumerateAudioCaptureDevices
开启发言者音量提示enableAudioPropertiesReportenableAudioPropertiesReport:EnableAudioPropertiesReportenableAudioPropertiesReport
会议录制

你可能还需要将会议内容录制下来,用于存档和后续回放。RTC 提供了云端录制功能。使用此功能,你可以将视频通话内容录制下来,并保存到云端。录制过程使用 RTC 提供的云端服务完成,不会占用你的业务服务器算力或客户端设备算力。

关于如何使用云端录制功能,参看关于云端录制。

退出会议

alt

技术逻辑Android APIiOS APIWindows APIWeb API
关闭本地音频采集stopAudioCapturestopAudioCapturestopAudioCapturestopAudioCapture
关闭本地视频采集stopVideoCapturestopVideoCaptureStopVideoCapturestopVideoCapture
离开房间leaveRoomleaveRoom:LeaveRoomleaveRoom
远端用户退房通知onUserLeavertcRoom:onUserLeave:reason:OnUserLeaveonUserLeave
销毁引擎实例destroydestroydestroydestroyEngine