1.2. 流程

Table of Contents

1.2.1. AVD SDK时序图

AVD SDK有许多接口是异步调用的,且调用时会引发本地模块或者远端加入房间的模块一些通知和事件。应用层调用时先初始化AVD引擎单例, 然后可以调用任何AVDEngine中的接口;创建房间(Room)对象后,可以通过各个房间功能模块的静态接口(如IMAudio* getAudio(IRoom* room) 获取房间语音接口)获取房间的功能操作接口,然后由这些功能接口实现各种房间内沟通操作。房间销毁后,各房间功能接口均无效。AVD引擎反初始化后, 由此引擎创建的各个房间对象无效。

下面对几个主要流程做时序图说明,整体图如下:

../_images/avdSdkApiSequence.png

以上时序图标识了引擎初始化和销毁、加入离开房间、打开音频、发布视频、订阅视频的应用层和SDK层的时序关系,下面分别做详细说明。

  • A.引擎初始化和销毁 应用层使用AVD SDK时,首先要做的事情就是初始化引擎,引擎初始化成功后才能创建房间,执行房间中的具体功能。引擎初始化后也可以调用任何其他引擎接口。 如上图A1, A2, A3流程所示,引擎初始化是一个异步操作,初始化的主要参数是叁体分配的appkey,secretkey和叁体服务器地址。
  • B.加入离开房间 对于一个房间来说,首先通过静态函数IRoom::obtain获取房间对象,调用房间对象的join接口加入房间。房间作为一个用户相互沟通的环境,可以实现各种沟通功能,通过各功能的getXX(如getAudio)接口获取具体功能操作的接口。 应用程序环境中房间对象的互动周期在Join成功后
  • C.打开音频 用户获取音频模块功能接口后,可以通过接口openMicrophone来打开本地音频,音频打开成功后,所有房间中的用户会接收到本用户音频打开的通知。
  • D.E.发布和订阅视频 用户获取视频模块功能接口后,可以通过接口publishLocalCamera来打开本地视频,视频打开成功后,所有房间中的用户会接收到本用户特定摄像头打开的通知。应用根据业务规则,通过接口Subscribe订阅特定摄像头的视频数据,订阅成功后可以用attachRender将视频显示在特定窗口内。 如果本地有多个摄像头,可以根据指定摄像头Id发布特定摄像头,或者指定摄像头设备信息对象中的参数来控制发布视频的分辨率、视频编码类型等。