Public 类型 | |
typedef unsigned int | WindowIDType |
typedef HWND | WindowIDType |
Public 成员函数 | |
virtual int | initialize (const RtcEngineContext &context)=0 |
virtual void | release (bool sync=false)=0 |
virtual int | setChannelProfile (CHANNEL_PROFILE_TYPE profile)=0 |
virtual int | setClientRole (CLIENT_ROLE_TYPE role)=0 |
virtual int | joinChannel (const char *token, const char *channelId, const char *info, uid_t uid)=0 |
virtual int | leaveChannel ()=0 |
virtual int | renewToken (const char *token)=0 |
virtual int | queryInterface (INTERFACE_ID_TYPE iid, void **inter)=0 |
virtual int | startEchoTest ()=0 |
virtual int | stopEchoTest ()=0 |
virtual int | enableVideo ()=0 |
virtual int | disableVideo ()=0 |
virtual int | setVideoProfile (VIDEO_PROFILE_TYPE profile, bool swapWidthAndHeight)=0 |
virtual int | setVideoEncoderConfiguration (const VideoEncoderConfiguration &config)=0 |
virtual int | setupLocalVideo (const VideoCanvas &canvas)=0 |
virtual int | setupRemoteVideo (const VideoCanvas &canvas)=0 |
virtual int | startPreview ()=0 |
virtual int | stopPreview ()=0 |
virtual int | enableAudio ()=0 |
virtual int | enableLocalAudio (bool enabled)=0 |
virtual int | disableAudio ()=0 |
virtual int | setAudioProfile (AUDIO_PROFILE_TYPE profile, AUDIO_SCENARIO_TYPE scenario)=0 |
virtual int | startScreenCapture (WindowIDType windowId, int captureFreq, const Rect *rect, int bitrate)=0 |
virtual int | stopScreenCapture ()=0 |
virtual int | updateScreenCaptureRegion (const Rect *rect)=0 |
virtual int | getCallId (agora::util::AString &callId)=0 |
virtual int | rate (const char *callId, int rating, const char *description)=0 |
virtual int | complain (const char *callId, const char *description)=0 |
virtual const char * | getVersion (int *build)=0 |
virtual int | enableLastmileTest ()=0 |
virtual int | disableLastmileTest ()=0 |
virtual const char * | getErrorDescription (int code)=0 |
virtual int | setEncryptionSecret (const char *secret)=0 |
virtual int | setEncryptionMode (const char *encryptionMode)=0 |
virtual int | registerPacketObserver (IPacketObserver *observer)=0 |
virtual int | createDataStream (int *streamId, bool reliable, bool ordered)=0 |
virtual int | sendStreamMessage (int streamId, const char *data, size_t length)=0 |
virtual int | addPublishStreamUrl (const char *url, bool transcodingEnabled)=0 |
virtual int | removePublishStreamUrl (const char *url)=0 |
virtual int | setLiveTranscoding (const LiveTranscoding &transcoding)=0 |
virtual int | configPublisher (const PublisherConfiguration &config)=0 |
virtual int | setVideoCompositingLayout (const VideoCompositingLayout &sei)=0 |
virtual int | clearVideoCompositingLayout ()=0 |
virtual int | addVideoWatermark (const RtcImage &watermark)=0 |
virtual int | clearVideoWatermarks ()=0 |
virtual int | addInjectStreamUrl (const char *url, const InjectStreamConfig &config)=0 |
virtual int | removeInjectStreamUrl (const char *url)=0 |
virtual bool | registerEventHandler (IRtcEngineEventHandler *eventHandler)=0 |
virtual bool | unregisterEventHandler (IRtcEngineEventHandler *eventHandler)=0 |
virtual CONNECTION_STATE_TYPE | getConnectionState ()=0 |
RtcEngine 类提供了供 App 调用的主要接口方法。
IRtcEngine 是 Agora Native SDK 的基础接口类。创建一个 IRtcEngine 对象并调用这个对象的方法可以激活 Agora Native SDK 的通信功能。
typedef unsigned int agora::rtc::IRtcEngine::WindowIDType |
typedef HWND agora::rtc::IRtcEngine::WindowIDType |
|
pure virtual |
初始化 Agora SDK 服务。
该方法用来进行初始化 Agora Media 服务。传入 Agora 为开发者签发的厂商秘钥进行初始化。 在调用 createAgoraRtcEngine 方法创建 IRtcEngine 对象后,必须先调用该方法进行初始化,才能使用其他方法。初始化成功后,默认处于语音通话模式。 使用视频功能需要额外调用一次 enableVideo 启用视频服务。
context | RtcEngineContext |
|
pure virtual |
销毁 IRtcEngine 对象。
sync |
|
|
pure virtual |
设置频道模式(仅适用于直播场景)。
该方法用于设置频道模式(Profile)。Agora RtcEngine 需知道 App 的使用场景(例如通信模式或直播模式), 从而使用不同的优化手段。
profile | 频道属性: CHANNEL_PROFILE_TYPE 。 |
|
pure virtual |
设置直播场景下的用户角色。
在加入频道前,用户需要通过本方法设置观众(默认)或主播模式。在加入频道后,用户可以通过本方法切换用户模式。
role | 直播场景里的用户角色: CLIENT_ROLE_TYPE 。 |
|
pure virtual |
加入频道。
该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的 App 是不能互通的。如果已在通话中,用户必须调用 leaveChannel 退出当前通话,才能进入下一个频道。
token | 动态秘钥。
|
channelId | 标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
|
info | (非必选项) 开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。 |
uid | (非必选项) 用户ID,32位无符号整数。建议设置范围:1到 232-1,并保证唯一性。如果不指定(即设为0),SDK 会自动分配一个,并在 onJoinChannelSuccess 回调方法中返回,App 层必须记住该返回值并维护,SDK不对该返回值进行维护。 |
|
pure virtual |
离开频道。
离开频道,即挂断或退出通话。
当调用 joinChannel 方法后,必须调用 leaveChannel 结束通话,否则无法开始下一次通话。 不管当前是否在通话中,都可以调用 leaveChannel,没有副作用。该方法会把会话相关的所有资源释放掉。
该方法是异步操作,调用返回时并没有真正退出频道。在真正退出频道后,SDK 会触发 onLeaveChannel 回调。
|
pure virtual |
更新 Token。
该方法用于更新 Token。如果启用了 Token 机制,过一段时间后使用的 Token 会失效。当:
App 应重新获取 Token,然后调用该方法更新 Token,否则 SDK 无法和服务器建立连接。
token | 新的 Token。 |
|
pure virtual |
获取设备管理员对象的指针。
iid | 想要获取的接口的接口。 |
inter | 指向 DeviceManager 对象的指针。 |
|
pure virtual |
开始语音通话回路测试。
该方法启动语音通话回路测试,目的是测试系统的音频设备(耳麦、扬声器等)和网络连接是否正常。 在测试过程中,用户先说一段话,在 10 秒后,声音会回放出来。如果 10 秒后用户能正常听到自己刚才说的话,就表示系统音频设备和网络连接都是正常的。
|
pure virtual |
停止语音通话回路测试。
|
pure virtual |
启用视频模块。
该方法可以在加入频道前或者通话中调用,在加入频道前调用则自动开启视频模块;在通话中调用则由音频模式切换为视频模式。 调用 disableVideo 方法可关闭视频模式。
|
pure virtual |
关闭视频模块。
该方法可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启纯音频模式,在通话中调用则由视频模式切换为纯音频频模式。 调用 enableVideo 方法可开启视频模式。
|
pure virtual |
该方法自 v2.3 起废弃。请改用 setVideoEncoderConfiguration 方法。
该方法设置视频编码属性(Profile)。每个属性对应一套视频参数,如分辨率、帧率、码率等。 当设备的摄像头不支持指定的分辨率时,Agora SDK 会自动选择一个合适的摄像头分辨率,但是编码分辨率仍然用 setVideoProfile 指定的。
profile | 视频属性: VIDEO_PROFILE_TYPE |
swapWidthAndHeight | SDK 会按照你选择的视频属性 (profile) 输出固定宽高的视频。该参数设置是否交换宽和高:
|
你可以直接通过视频属性 (profile) 来定义输出的视频是 Landscape(横屏)还是 Portrait(竖屏)模式,因此 声网建议你将参数设置为默认值。
|
pure virtual |
设置视频编码配置。
该方法设置视频编码配置。每个属性对应一套视频参数,如分辨率、帧率、码率、视频方向等。 所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。
config | 视频编码配置: VideoEncoderConfiguration 。 |
|
pure virtual |
设置本地视图。
该方法设置本地视频显示信息。 App 通过调用此接口绑定本地视频流的显示视窗(view),并设置视频显示模式。 在 App 开发中,通常在初始化后调用该方法进行本地视频设置,然后再加入频道。退出频道后,绑定仍然有效,如果需要解除绑定,可以指定空(NULL)View 调用 setupLocalVideo。
canvas | 视频画布信息: VideoCanvas 。 |
|
pure virtual |
设置远端用户视图。
该方法绑定远端用户和显示视图,即设定 uid 指定的用户用哪个视图显示。调用该接口时需要指定远端视频的 uid,一般可以在进频道前提前设置好。
如果 App 不能事先知道对方的 uid,可以在 APP 收到 onUserJoined 事件时设置。如果启用了视频录制功能,视频录制服务会做为一个哑客户端加入频道,因此其他客户端也会收到它的 onUserJoined 事件,App 不应给它绑定视图(因为它不会发送视频流),如果 App 不能识别哑客户端,可以在 onFirstRemoteVideoDecoded 事件时再绑定视图。解除某个用户的绑定视图可以把 view 设置为空。退出频道后,SDK 会把远端用户的绑定关系清除掉。
canvas | 视频画布信息: VideoCanvas 。 |
|
pure virtual |
开启视频预览。
该方法用于在进入频道前启动本地视频预览。调用该 API 前,必须:
启用了本地视频预览后,如果调用 leaveChannel 退出频道,本地预览依然处于启动状态,如需要关闭本地预览,需要调用 stopPreview。
|
pure virtual |
停止视频预览。
|
pure virtual |
启用音频模块。
启用音频模块(默认为开启状态)。
|
pure virtual |
开关本地音频采集。
当用户加入频道时,语音功能默认是开启的。该方法可以关闭或重新开启本地语音功能,停止或重新开始本地音频采集及处理。
该方法不影响接收或播放远端音频流,适用于只听不发的用户场景。
语音功能关闭或重新开启后,会收到回调 onMicrophoneEnabled。
enabled |
|
|
pure virtual |
关闭音频模块。
|
pure virtual |
设置音频编码配置。
profile | 设置采样率,码率,编码模式和声道数: AUDIO_PROFILE_TYPE 。 |
scenario | 设置音频应用场景: AUDIO_SCENARIO_TYPE 。 |
|
pure virtual |
开始屏幕共享。
该方法共享整个屏幕,指定窗口,或指定区域:
windowId | 共享屏幕区域: WindowIDType 。 |
captureFreq | 共享屏幕的帧率,必须设置,范围是 1 到 15 fps。 |
rect | 当 windowsId 设为 0 时该参数有效;当你将 rect 设为 NULL 时,整个屏幕被共享。 |
bitrate | 共享屏幕的码率,单位为 bps。 |
|
pure virtual |
停止屏幕共享。
|
pure virtual |
更新屏幕共享区域。
rect | 当 windowsId 设为 0 时该参数有效;当你将 rect 设为 NULL 时,整个屏幕被共享。 |
|
pure virtual |
获取通话 ID。
客户端在每次 joinChannel 后会生成一个对应的 callId,标识该客户端的此次通话。有些方法如 rate 、 complain 需要在通话结束后调用,向 SDK 提交反馈,这些方法必须指定 CallId 参数。使用这些反馈方法,需要在通话过程中调用 getCallId 方法获取 CallId,在通话结束后在反馈方法中作为参数传入。
callId | 当前的通话 ID。 |
|
pure virtual |
给通话评分。
该方法能够让用户为通话评分,一般在通话结束后调用。
callId | 通话 getCallId 函数获取的通话 ID。 |
rating | 给通话的评分,最低 1 分,最高 5 分。如超过这个范围,SDK 会返回 ERR_INVALID_ARGUMENT (2) 错误。 |
description | (非必选项) 给通话的描述,可选,长度应小于 800 字节。 |
|
pure virtual |
投诉通话质量。
该方法让用户就通话质量进行投诉。一般在通话结束后调用。
callId | 通话 getCallId 函数获取的通话 ID。 |
description | (非必选项) 给通话的描述,可选,长度应小于 800 字节。 |
|
pure virtual |
查询 SDK 版本号。
build | 编译号。 |
|
pure virtual |
启动网络测试。
该方法启用网络连接质量测试,用于检测用户目前的网络接入质量(上行网络质量)。默认该功能为关闭状态。该方法主要用于以下场景:
启用该方法均会消耗网络流量,影响通话质量。用户必须在收到 onLastmileQuality 回调后须调用 disableLastmileTest 停止测试,再加入频道或切换为主播。
|
pure virtual |
关闭网络测试。
|
pure virtual |
|
pure virtual |
启用内置加密,并设置数据加密密钥。
在加入频道之前,App 需调用 setEncryptionSecret 方法指定 secret 来启用内置的加密功能,同一频道内的所有用户应设置相同的 secret。当用户离开频道时,该频道的 secret 会自动清除。如果未指定 secret 或将 secret 设置为空,则无法激活加密功能。
secret | 加密密钥。 |
|
pure virtual |
启用内置的加密方案。
Agora Video SDK 支持内置加密方案,默认支持 AES-128-XTS。如需采用其他加密方案,可以调用本方法。同一频道内的所有用户必须设置相同的加密方式和 secret 才能进行通话。关于这几种加密方式的区别,请参考 AES 加密算法的相关资料。
encryptionMode | 加密模式:
|
|
pure virtual |
注册数据包观测器。
该方法注册数据包观测器 (Packet Observer)。在 Agora SDK 发送/接收(语音、视频)网络包时,会回调 IPacketObserver 定义的接口,App 可用此接口对数据做处理,例如加解密。
observer | IPacketObserver 。 |
|
pure virtual |
创建数据流。
该方法用于创建数据流。频道内每人最多只能创建 5 个数据流。频道内数据通道最多允许数据延迟 5 秒,若超过 5 秒接收方尚未收到数据流,则数据通道会向 App 报错。
streamId | 数据流 ID。 |
reliable |
|
ordered |
|
|
pure virtual |
发送数据流。
该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。 API 须对数据通道的传送速率进行控制: 每个客户端每秒最多能发送 6 KB 数据。频道内每人最多能同时有 5 个数据通道。
streamId | 由 createDataStream 返回的数据流 ID。 |
data | 自定义数据。 |
length | 数据长度。 |
|
pure virtual |
增加旁路推流地址。
该方法用于旁路推流,用于添加推流地址。回调为 onStreamPublished。
url | RTMP 推流地址。 |
transcodingEnabled |
|
|
pure virtual |
删除旁路推流地址。
该方法用于删除旁路推流过程中已经设置的 RTMP 推流地址。
url | RTMP 推流地址。 |
|
pure virtual |
|
pure virtual |
该方法在加入频道进行旁路推流之前配置推流参数。
config | 旁路推流设置。详见: PublisherConfiguration 。 |
|
pure virtual |
使用该方法设置直播场景里的画中画布局。该方法仅适用于在 Agora 服务器端推流的场景。当您在服务器端进行推流时:
sei | 画中画布局。详见: VideoCompositingLayout 。 |
|
pure virtual |
|
pure virtual |
添加本地视频水印。
该方法将一张 PNG 图片作为水印添加到本地发布的直播视频流上,同一直播频道中的观众,旁路推流观众,甚至录制设备都能看到或采集到该水印图片。 如果你仅仅希望在旁路直播推流中添加水印,请参考 setLiveTranscoding 中描述的用法。
watermark | 待添加在本地直播推流中的水印图片: RtcImage 。 |
|
pure virtual |
删除已添加的视频水印。
|
pure virtual |
导入在线媒体流。
该方法将正在播放的音视频作为音视频源导入到正在进行的直播中。可主要应用于赛事直播、多人看视频互动等直播场景。状态回调为 onStreamInjectedStatus。如果导入成功,会触发 onUserJoined 回调和 onFirstRemoteVideoFrame 回调。uid 为 666,该音视频流会出现在频道中。
url | 添加到直播中的视频流 URL 地址。支持 RTMP、HLS、FLV 协议传输。
|
config | 所添加的视频流属性定义,详见: InjectStreamConfig 。 |
|
pure virtual |
删除导入的外部媒体流。
url | 已导入、待删除的外部视频源 URL 地址。 |
|
pure virtual |
|
pure virtual |
|
pure virtual |
获取当前网络连接状态。