音视频通讯SDK API参考手册  Windows 1.6.0
tencent::av::AVRoom类 参考abstract

音视频房间封装类的基类。 更多...

#include <av_room.h>

类 tencent::av::AVRoom 继承关系图:
tencent::av::AVRoomMulti tencent::av::AVRoomPair

struct  Delegate
 房间委托的抽象基类,App需要实现其成员函数来得到房间异步操作的执行结果。 更多...
 
struct  EnterRoomParam
 进入房间所需参数的基类,SDK内部会根据room_type的取值来判断对象的实际类型。 更多...
 
struct  Info
 房间配置信息。 更多...
 

Public 类型

enum  RoomType { ROOM_TYPE_NONE = 0, ROOM_TYPE_PAIR = 1, ROOM_TYPE_MULTI = 2 }
 音视频房间类型。 更多...
 
enum  Mode { MODE_AUDIO = 0, MODE_VIDEO = 1 }
 音视频通话模式。 更多...
 
enum  AudioCategory { AUDIO_CATEGORY_VOICECHAT = 0, AUDIO_CATEGORY_MEDIA_PLAY_AND_RECORD = 1, AUDIO_CATEGORY_MEDIA_PLAYBACK = 2 }
 音视场景策略。 更多...
 
enum  EndpointEventId {
  EVENT_ID_NONE = 0, EVENT_ID_ENDPOINT_ENTER = 1, EVENT_ID_ENDPOINT_EXIT = 2, EVENT_ID_ENDPOINT_HAS_CAMERA_VIDEO = 3,
  EVENT_ID_ENDPOINT_NO_CAMERA_VIDEO = 4, EVENT_ID_ENDPOINT_HAS_AUDIO = 5, EVENT_ID_ENDPOINT_NO_AUDIO = 6, EVENT_ID_ENDPOINT_HAS_SCREEN_VIDEO = 7,
  EVENT_ID_ENDPOINT_NO_SCREEN_VIDEO = 8
}
 成员事件id 更多...
 

Public 成员函数

virtual const InfoGetRoomInfo ()=0
 获得房间的配置信息。 更多...
 
virtual uint64 GetRoomId ()=0
 获得房间的id。 更多...
 
virtual RoomType GetRoomType ()=0
 获得房间的类型。 更多...
 
virtual std::string GetQualityTips ()=0
 获取通话中实时房间质量相关信息,业务侧可以不用关心,主要用来查看通话情况、排查问题等。 更多...
 
virtual void SetNetType (NetStateType type)=0
 设置当前网络类型。 更多...
 
virtual int32 RequestViewList (const std::vector< std::string > identifier_list, const std::vector< View > view_list, AVEndpoint::RequestViewListCompleteCallback complete_callback, void *custom_data)=0
 同时请求多个成员的视频画面。 更多...
 
virtual int32 CancelAllView (AVEndpoint::CancelAllViewCompleteCallback complete_callback, void *custom_data)=0
 取消所有请求的视频画面。 更多...
 

Protected 成员函数

virtual ~AVRoom ()
 

详细描述

SDK设计了双人和多人两种音视频房间:

  • 两种房间目前都是通过服务器中转的方式来进行音视频通信的;
  • 双人房间会针对两人场景通过优化调度策略,选择最佳中转服务器进行接入,连接质量更有优势;
  • 双人房间未来会支持通过直连方式来进行音视频通信,节省中转服务器的带宽成本。

成员枚举类型说明

枚举值
AUDIO_CATEGORY_VOICECHAT 

VoIP模式。适合于实时音频通信场景,如实时语音通话。

AUDIO_CATEGORY_MEDIA_PLAY_AND_RECORD 

媒体采集与播放模式。适合于那些对音质要求比较高的直播场景,如主播场景中的主播人员。

AUDIO_CATEGORY_MEDIA_PLAYBACK 

媒体播放模式。适合于那些对音质要求比较高的直播场景,如主播场景中的听众。

枚举值
EVENT_ID_NONE 

无。

EVENT_ID_ENDPOINT_ENTER 

进入房间事件。

EVENT_ID_ENDPOINT_EXIT 

退出房间事件。

EVENT_ID_ENDPOINT_HAS_CAMERA_VIDEO 

有发摄像头视频事件。

EVENT_ID_ENDPOINT_NO_CAMERA_VIDEO 

无发摄像头视频事件。

EVENT_ID_ENDPOINT_HAS_AUDIO 

有发语音事件。

EVENT_ID_ENDPOINT_NO_AUDIO 

无发语音事件。

EVENT_ID_ENDPOINT_HAS_SCREEN_VIDEO 

有发屏幕视频事件。

EVENT_ID_ENDPOINT_NO_SCREEN_VIDEO 

无发屏幕视频事件。

枚举值
MODE_AUDIO 

纯语音通话,双方都不能进行视频上下行。

MODE_VIDEO 

音视频通话,对视频上下行没有约束。

枚举值
ROOM_TYPE_NONE 

默认值,没有意义。

ROOM_TYPE_PAIR 

双人音视频房间。

ROOM_TYPE_MULTI 

多人音视频房间。

构造及析构函数说明

virtual tencent::av::AVRoom::~AVRoom ( )
protectedvirtual

成员函数说明

virtual int32 tencent::av::AVRoom::CancelAllView ( AVEndpoint::CancelAllViewCompleteCallback  complete_callback,
void *  custom_data 
)
pure virtual

异步返回结果。

参数
[in]complete_callback函数指针,指向App定义的回调函数。
[in]custom_dataApp自定义的数据对象,会在触发回调时通过参数回传给App。
返回
AV_OK表示调用成功,其他值表示失败:
返回值
AV_ERR_BUSY上一次请求还没有完成,包括RequestViewList和CancelAllView。
AV_ERR_FAILED一般错误。
备注
. RequestViewList和CancelAllView不能并发执行,即同一时间点只能进行一种操作。
virtual std::string tencent::av::AVRoom::GetQualityTips ( )
pure virtual
返回
以字符串形式返回音视频房间的质量参数。
virtual uint64 tencent::av::AVRoom::GetRoomId ( )
pure virtual
返回
返回值等于GetRoomInfo().room_id。
virtual const Info* tencent::av::AVRoom::GetRoomInfo ( )
pure virtual
virtual RoomType tencent::av::AVRoom::GetRoomType ( )
pure virtual
返回
返回值等于GetRoomInfo().room_type。
virtual int32 tencent::av::AVRoom::RequestViewList ( const std::vector< std::string >  identifier_list,
const std::vector< View view_list,
AVEndpoint::RequestViewListCompleteCallback  complete_callback,
void *  custom_data 
)
pure virtual

异步返回结果。同时请求多个成员的画面。同一个时间点只能请求一次成员的画面,并且必须等待异步结果返回后,才能进行新的请求画面操作。在请求画面前最好检查该成员是否有对应的视频源。

参数
[in]identifier_list成员id列表。
[in]view_list视频画面参数列表。
[in]complete_callback函数指针,指向App定义的回调函数。
[in]custom_dataApp自定义的数据对象,会在触发回调时通过参数回传给App。
返回
AV_OK表示调用成功,其他值表示失败:
返回值
AV_ERR_BUSY上一次请求还没有完成,包括RequestViewList和CancelAllView。
AV_ERR_FAILED房间已经不存在、内部获取对方信息失败、不支持传入的视频源类型。
备注
. 画面大小可以根据业务层实际需要及硬件能力决定。 . 如果是手机,建议只有其中一路是大画面,其他都是小画面,这样硬件更容易扛得住,同时减少流量。 . 这边把320×240及以上大小的画面认为是大画面;反之,认为是小画面。 . 实际上请求到的画面大小,由发送方决定。如A传的画面是小画面,即使这边即使想请求它的大画面,也只能请求到的小画面。 . 发送方传的画面大小,是否同时有大画面和小画面,由其所设置的编解码参数、场景、硬件、网络等因素决定。 . RequestViewList和CancelAllView不能并发执行,即同一时间点只能进行一种操作。 . identifier_list和view_list的成员个数必须等于count,同时每个成员是一一对应的。
virtual void tencent::av::AVRoom::SetNetType ( NetStateType  type)
pure virtual
备注
建议网络有变更时,就设置网络类型,以让音视频SDK能够根据网络类型更佳地智能调优音视频通话质量。