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 的通信功能。

成员类型定义说明

◆ WindowIDType [1/2]

◆ WindowIDType [2/2]

成员函数说明

◆ initialize()

virtual int agora::rtc::IRtcEngine::initialize ( const RtcEngineContext context)
pure virtual

初始化 Agora SDK 服务。

该方法用来进行初始化 Agora Media 服务。传入 Agora 为开发者签发的厂商秘钥进行初始化。 在调用 createAgoraRtcEngine 方法创建 IRtcEngine 对象后,必须先调用该方法进行初始化,才能使用其他方法。初始化成功后,默认处于语音通话模式。 使用视频功能需要额外调用一次 enableVideo 启用视频服务。

警告
  • 必须使用同一个 App ID 才能进行通话。
  • 一个 IRtcEngine 实例对象只能使用一个 App ID。如需更换 App ID,必须先调用 release 方法销毁当前实例,再调用本方法重新创建实例。
参数
contextRtcEngineContext
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ release()

virtual void agora::rtc::IRtcEngine::release ( bool  sync = false)
pure virtual

销毁 IRtcEngine 对象。

参数
sync
  • true: 同步调用。在等待 IRtcEngine 对象资源释放后再返回。App 不应该在 SDK 产生的回调中调用该接口,否则由于 SDK 要等待回调返回才能回收相关的对象资源,会造成死锁。SDK 会自动检测这种死锁并转为异步调用,但是检测本身会消耗额外的时间。
  • false: 异步调用。不等 IRtcEngine 对象资源释放就立即返回。SDK 会自行释放所有资源。使用异步调用时要注意,不要在该调用后立即卸载 SDK 动态库,否则可能会因为 SDK 的清理线程还没有退出而崩溃。

◆ setChannelProfile()

virtual int agora::rtc::IRtcEngine::setChannelProfile ( CHANNEL_PROFILE_TYPE  profile)
pure virtual

设置频道模式(仅适用于直播场景)。

该方法用于设置频道模式(Profile)。Agora RtcEngine 需知道 App 的使用场景(例如通信模式或直播模式), 从而使用不同的优化手段。

注解
  • 相同频道内的所有用户必须使用相同的频道模式。
  • 如果想要切换模式,则需要先调用 release 销毁当前引擎,然后重新调用 createAgoraRtcEngine 创建新的对象,并在调用 initialize 方法后再调用该方法切换频道模式。
  • 该方法必须在 joinChannel 前调用和进行设置,进入频道后无法再设置。
  • 在通信模式下,Agora SDK 不支持 texture 编码,只支持原始音视频数据。
参数
profile频道属性: CHANNEL_PROFILE_TYPE
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ setClientRole()

virtual int agora::rtc::IRtcEngine::setClientRole ( CLIENT_ROLE_TYPE  role)
pure virtual

设置直播场景下的用户角色。

在加入频道前,用户需要通过本方法设置观众(默认)或主播模式。在加入频道后,用户可以通过本方法切换用户模式。

参数
role直播场景里的用户角色: CLIENT_ROLE_TYPE
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ joinChannel()

virtual int agora::rtc::IRtcEngine::joinChannel ( const char *  token,
const char *  channelId,
const char *  info,
uid_t  uid 
)
pure virtual

加入频道。

该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的 App 是不能互通的。如果已在通话中,用户必须调用 leaveChannel 退出当前通话,才能进入下一个频道。

注解
频道内每个用户的用户 ID 必须是唯一的。如果将 uid 设为 0,系统将自动分配一个 uid。
警告
请务必确保用于生成 Token 的 App ID 和 initialize 方法初始化引擎时用的是同一个 App ID,否则会造成旁路推流失败。
参数
token动态秘钥。
  • 安全要求不高: 将值设为 NULL。
  • 安全要求高: 将值设置为 Token。如果你已经启用了 App Certificate, 请务必使用 Token。
channelId标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
  • 26 个小写英文字母 a~z;
  • 26 个大写英文字母 A~Z;
  • 10个数字 0~9;
  • 空格;
  • "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、"_"、" {"、"}"、"|"、"~"、","。
info(非必选项) 开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。
uid(非必选项) 用户ID,32位无符号整数。建议设置范围:1到 232-1,并保证唯一性。如果不指定(即设为0),SDK 会自动分配一个,并在 onJoinChannelSuccess 回调方法中返回,App 层必须记住该返回值并维护,SDK不对该返回值进行维护。
返回

◆ leaveChannel()

virtual int agora::rtc::IRtcEngine::leaveChannel ( )
pure virtual

离开频道。

离开频道,即挂断或退出通话。

当调用 joinChannel 方法后,必须调用 leaveChannel 结束通话,否则无法开始下一次通话。 不管当前是否在通话中,都可以调用 leaveChannel,没有副作用。该方法会把会话相关的所有资源释放掉。

该方法是异步操作,调用返回时并没有真正退出频道。在真正退出频道后,SDK 会触发 onLeaveChannel 回调。

注解
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ renewToken()

virtual int agora::rtc::IRtcEngine::renewToken ( const char *  token)
pure virtual

更新 Token。

该方法用于更新 Token。如果启用了 Token 机制,过一段时间后使用的 Token 会失效。当:

App 应重新获取 Token,然后调用该方法更新 Token,否则 SDK 无法和服务器建立连接。

参数
token新的 Token。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ queryInterface()

virtual int agora::rtc::IRtcEngine::queryInterface ( INTERFACE_ID_TYPE  iid,
void **  inter 
)
pure virtual

获取设备管理员对象的指针。

参数
iid想要获取的接口的接口。
inter指向 DeviceManager 对象的指针。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ startEchoTest()

virtual int agora::rtc::IRtcEngine::startEchoTest ( )
pure virtual

开始语音通话回路测试。

该方法启动语音通话回路测试,目的是测试系统的音频设备(耳麦、扬声器等)和网络连接是否正常。 在测试过程中,用户先说一段话,在 10 秒后,声音会回放出来。如果 10 秒后用户能正常听到自己刚才说的话,就表示系统音频设备和网络连接都是正常的。

注解
  • 直播模式下,只有主播用户才能调用该方法。如果用户由通信模式切换到直播模式,请务必调用 setClientRole 方法将用户角色设置为主播后再调用该方法。
  • 调用 startEchoTest 后必须调用 stopEchoTest 以结束测试,否则不能进行下一次回声测试,或者调用 joinChannel 进行通话。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ stopEchoTest()

virtual int agora::rtc::IRtcEngine::stopEchoTest ( )
pure virtual

停止语音通话回路测试。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ enableVideo()

virtual int agora::rtc::IRtcEngine::enableVideo ( )
pure virtual

启用视频模块。

该方法可以在加入频道前或者通话中调用,在加入频道前调用则自动开启视频模块;在通话中调用则由音频模式切换为视频模式。 调用 disableVideo 方法可关闭视频模式。

注解
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ disableVideo()

virtual int agora::rtc::IRtcEngine::disableVideo ( )
pure virtual

关闭视频模块。

该方法可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启纯音频模式,在通话中调用则由视频模式切换为纯音频频模式。 调用 enableVideo 方法可开启视频模式。

注解
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ setVideoProfile()

virtual int agora::rtc::IRtcEngine::setVideoProfile ( VIDEO_PROFILE_TYPE  profile,
bool  swapWidthAndHeight 
)
pure virtual
弃用:
设置视频编码配置。

该方法自 v2.3 起废弃。请改用 setVideoEncoderConfiguration 方法。

该方法设置视频编码属性(Profile)。每个属性对应一套视频参数,如分辨率、帧率、码率等。 当设备的摄像头不支持指定的分辨率时,Agora SDK 会自动选择一个合适的摄像头分辨率,但是编码分辨率仍然用 setVideoProfile 指定的。

注解
  • 如果用户加入频道后不需要重新设置视频编码属性,则 声网建议在 enableVideo 前调用该方法,可以加快首帧出图的时间。
  • 应在调用 joinChannelstartPreview 前设置视频属性。
参数
profile视频属性: VIDEO_PROFILE_TYPE
swapWidthAndHeightSDK 会按照你选择的视频属性 (profile) 输出固定宽高的视频。该参数设置是否交换宽和高:
  • true: 交换宽和高
  • false: 不交换宽和高(默认)

你可以直接通过视频属性 (profile) 来定义输出的视频是 Landscape(横屏)还是 Portrait(竖屏)模式,因此 声网建议你将参数设置为默认值。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ setVideoEncoderConfiguration()

virtual int agora::rtc::IRtcEngine::setVideoEncoderConfiguration ( const VideoEncoderConfiguration config)
pure virtual

设置视频编码配置。

该方法设置视频编码配置。每个属性对应一套视频参数,如分辨率、帧率、码率、视频方向等。 所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。

注解
如果用户加入频道后不需要重新设置视频编码属性,声网建议在 enableVideo 前调用该方法,可以加快首帧出图的时间。
参数
config视频编码配置: VideoEncoderConfiguration
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ setupLocalVideo()

virtual int agora::rtc::IRtcEngine::setupLocalVideo ( const VideoCanvas canvas)
pure virtual

设置本地视图。

该方法设置本地视频显示信息。 App 通过调用此接口绑定本地视频流的显示视窗(view),并设置视频显示模式。 在 App 开发中,通常在初始化后调用该方法进行本地视频设置,然后再加入频道。退出频道后,绑定仍然有效,如果需要解除绑定,可以指定空(NULL)View 调用 setupLocalVideo。

参数
canvas视频画布信息: VideoCanvas
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ setupRemoteVideo()

virtual int agora::rtc::IRtcEngine::setupRemoteVideo ( const VideoCanvas canvas)
pure virtual

设置远端用户视图。

该方法绑定远端用户和显示视图,即设定 uid 指定的用户用哪个视图显示。调用该接口时需要指定远端视频的 uid,一般可以在进频道前提前设置好。

如果 App 不能事先知道对方的 uid,可以在 APP 收到 onUserJoined 事件时设置。如果启用了视频录制功能,视频录制服务会做为一个哑客户端加入频道,因此其他客户端也会收到它的 onUserJoined 事件,App 不应给它绑定视图(因为它不会发送视频流),如果 App 不能识别哑客户端,可以在 onFirstRemoteVideoDecoded 事件时再绑定视图。解除某个用户的绑定视图可以把 view 设置为空。退出频道后,SDK 会把远端用户的绑定关系清除掉。

参数
canvas视频画布信息: VideoCanvas
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ startPreview()

virtual int agora::rtc::IRtcEngine::startPreview ( )
pure virtual

开启视频预览。

该方法用于在进入频道前启动本地视频预览。调用该 API 前,必须:

启用了本地视频预览后,如果调用 leaveChannel 退出频道,本地预览依然处于启动状态,如需要关闭本地预览,需要调用 stopPreview

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ stopPreview()

virtual int agora::rtc::IRtcEngine::stopPreview ( )
pure virtual

停止视频预览。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ enableAudio()

virtual int agora::rtc::IRtcEngine::enableAudio ( )
pure virtual

启用音频模块。

启用音频模块(默认为开启状态)。

注解
  • 该方法设置内部引擎为启用状态,在频道内和频道外均可调用。在 leaveChannel 后仍然有效。
  • 该方法重置整个引擎,响应时间较慢,因此声网建议使用如下方法来控制音频模块:
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ enableLocalAudio()

virtual int agora::rtc::IRtcEngine::enableLocalAudio ( bool  enabled)
pure virtual

开关本地音频采集。

当用户加入频道时,语音功能默认是开启的。该方法可以关闭或重新开启本地语音功能,停止或重新开始本地音频采集及处理。

该方法不影响接收或播放远端音频流,适用于只听不发的用户场景。

语音功能关闭或重新开启后,会收到回调 onMicrophoneEnabled

注解
参数
enabled
  • true: 重新开启本地语音功能,即开启本地语音采集或处理(默认)
  • false: 关闭本地语音功能,即停止本地语音采集或处理
返回
  • 0: 方法调用成功
  • < 0: 方法调用失败

◆ disableAudio()

virtual int agora::rtc::IRtcEngine::disableAudio ( )
pure virtual

关闭音频模块。

注解
  • 该方法设置内部引擎为禁用状态,在频道内和频道外均可调用。在 leaveChannel 后仍然有效。
  • 该方法重置整个引擎,响应时间较慢,因此声网建议使用如下方法来控制音频模块:
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ setAudioProfile()

virtual int agora::rtc::IRtcEngine::setAudioProfile ( AUDIO_PROFILE_TYPE  profile,
AUDIO_SCENARIO_TYPE  scenario 
)
pure virtual

设置音频编码配置。

注解
  • 该方法需要在 joinChannel 之前设置好, joinChannel 之后设置不生效。
  • 通信模式下,该方法设置 profile 生效,设置 scenario 不生效。
  • 通信和直播模式下,音质(码率)会有网络自适应的调整,通过该方法设置的是一个最高码率。
  • 音乐教学场景下,建议将 profile 设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY (4),scenario 设置为 AUDIO_SCENARIO_GAME_STREAMING (3)。
参数
profile设置采样率,码率,编码模式和声道数: AUDIO_PROFILE_TYPE
scenario设置音频应用场景: AUDIO_SCENARIO_TYPE
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ startScreenCapture()

virtual int agora::rtc::IRtcEngine::startScreenCapture ( WindowIDType  windowId,
int  captureFreq,
const Rect rect,
int  bitrate 
)
pure virtual

开始屏幕共享。

该方法共享整个屏幕,指定窗口,或指定区域:

  • 共享整个屏幕 : 将 windowId 设为 0,且将 rect 设为 NULL。
  • 共享指定窗口 : 将 windowId 设为非 0,每个窗口都有一个非 0 的 windowId。
  • 共享指定区域 : 将 windowId 设为 0,且将 rect 设为非 NULL。在这个情况下,你可以共享指定区域,例如你可以拖动鼠标选中要共享的区域,但这个逻辑你由你自己实现的。这里的 共享指定区域 指的是共享整个屏幕里的某个区域。目前暂不支持共享指定窗口里的指定区域。
注解
当开启屏幕共享功能时,captureFreq 参数为共享屏幕的帧率,值区间为 1 到 15 fps(必填)。无论你开启的是上述哪个功能,执行成功时均返回 0,执行失败时返回错误代码。
参数
windowId共享屏幕区域: WindowIDType 。
captureFreq共享屏幕的帧率,必须设置,范围是 1 到 15 fps。
rect当 windowsId 设为 0 时该参数有效;当你将 rect 设为 NULL 时,整个屏幕被共享。
bitrate共享屏幕的码率,单位为 bps。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ stopScreenCapture()

virtual int agora::rtc::IRtcEngine::stopScreenCapture ( )
pure virtual

停止屏幕共享。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ updateScreenCaptureRegion()

virtual int agora::rtc::IRtcEngine::updateScreenCaptureRegion ( const Rect rect)
pure virtual

更新屏幕共享区域。

参数
rect当 windowsId 设为 0 时该参数有效;当你将 rect 设为 NULL 时,整个屏幕被共享。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ getCallId()

virtual int agora::rtc::IRtcEngine::getCallId ( agora::util::AString callId)
pure virtual

获取通话 ID。

客户端在每次 joinChannel 后会生成一个对应的 callId,标识该客户端的此次通话。有些方法如 ratecomplain 需要在通话结束后调用,向 SDK 提交反馈,这些方法必须指定 CallId 参数。使用这些反馈方法,需要在通话过程中调用 getCallId 方法获取 CallId,在通话结束后在反馈方法中作为参数传入。

参数
callId当前的通话 ID。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ rate()

virtual int agora::rtc::IRtcEngine::rate ( const char *  callId,
int  rating,
const char *  description 
)
pure virtual

给通话评分。

该方法能够让用户为通话评分,一般在通话结束后调用。

参数
callId通话 getCallId 函数获取的通话 ID。
rating给通话的评分,最低 1 分,最高 5 分。如超过这个范围,SDK 会返回 ERR_INVALID_ARGUMENT (2) 错误。
description(非必选项) 给通话的描述,可选,长度应小于 800 字节。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ complain()

virtual int agora::rtc::IRtcEngine::complain ( const char *  callId,
const char *  description 
)
pure virtual

投诉通话质量。

该方法让用户就通话质量进行投诉。一般在通话结束后调用。

参数
callId通话 getCallId 函数获取的通话 ID。
description(非必选项) 给通话的描述,可选,长度应小于 800 字节。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ getVersion()

virtual const char* agora::rtc::IRtcEngine::getVersion ( int *  build)
pure virtual

查询 SDK 版本号。

参数
build编译号。
返回
当前的 SDK 版本号,格式为字符串,如 2.3.1。

◆ enableLastmileTest()

virtual int agora::rtc::IRtcEngine::enableLastmileTest ( )
pure virtual

启动网络测试。

该方法启用网络连接质量测试,用于检测用户目前的网络接入质量(上行网络质量)。默认该功能为关闭状态。该方法主要用于以下场景:

  • 用户加入频道前。
  • 直播模式下,当用户角色由观众切换为主播前。

启用该方法均会消耗网络流量,影响通话质量。用户必须在收到 onLastmileQuality 回调后须调用 disableLastmileTest 停止测试,再加入频道或切换为主播。

注解
  • 调用该方法后,在收到 onLastmileQuality 回调前请勿调用其他方法,否则可能由于 API 操作过于频繁导致回调无法执行。
  • 主播在加入频道后(通话中)不要调用该方法。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ disableLastmileTest()

virtual int agora::rtc::IRtcEngine::disableLastmileTest ( )
pure virtual

关闭网络测试。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ getErrorDescription()

virtual const char* agora::rtc::IRtcEngine::getErrorDescription ( int  code)
pure virtual

获取警告或错误描述。

参数
codeonWarningonError 提供的警告码或错误码。
返回
WARN_CODE_TYPEERROR_CODE_TYPE

◆ setEncryptionSecret()

virtual int agora::rtc::IRtcEngine::setEncryptionSecret ( const char *  secret)
pure virtual

启用内置加密,并设置数据加密密钥。

在加入频道之前,App 需调用 setEncryptionSecret 方法指定 secret 来启用内置的加密功能,同一频道内的所有用户应设置相同的 secret。当用户离开频道时,该频道的 secret 会自动清除。如果未指定 secret 或将 secret 设置为空,则无法激活加密功能。

注解
请不要在旁路推流时调用此方法。
参数
secret加密密钥。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ setEncryptionMode()

virtual int agora::rtc::IRtcEngine::setEncryptionMode ( const char *  encryptionMode)
pure virtual

启用内置的加密方案。

Agora Video SDK 支持内置加密方案,默认支持 AES-128-XTS。如需采用其他加密方案,可以调用本方法。同一频道内的所有用户必须设置相同的加密方式和 secret 才能进行通话。关于这几种加密方式的区别,请参考 AES 加密算法的相关资料。

注解
在调用本方法前,请先调用 setEncryptionSecret 启用内置加密功能。
参数
encryptionMode加密模式:
  • "aes-128-xts": 128 位 AES 加密,XTS 模式;
  • "aes-128-ecb":128 位 AES 加密,ECB 模式;
  • "aes-256-xts": 256 位 AES 加密,XTS 模式;
  • "": 设置为空字符串时,默认使用加密方式 "aes-128-xts"。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ registerPacketObserver()

virtual int agora::rtc::IRtcEngine::registerPacketObserver ( IPacketObserver observer)
pure virtual

注册数据包观测器。

该方法注册数据包观测器 (Packet Observer)。在 Agora SDK 发送/接收(语音、视频)网络包时,会回调 IPacketObserver 定义的接口,App 可用此接口对数据做处理,例如加解密。

注解
处理后发送到网络的包大小不应超过 1200 字节,否则有可能发送失败。
参数
observerIPacketObserver
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ createDataStream()

virtual int agora::rtc::IRtcEngine::createDataStream ( int *  streamId,
bool  reliable,
bool  ordered 
)
pure virtual

创建数据流。

该方法用于创建数据流。频道内每人最多只能创建 5 个数据流。频道内数据通道最多允许数据延迟 5 秒,若超过 5 秒接收方尚未收到数据流,则数据通道会向 App 报错。

注解
将 reliable 和 ordered 同时设为 true 或 false。不要一个设为 true 另一个设为 false。
参数
streamId数据流 ID。
reliable
  • true: 接收方 5 秒内会收到发送方所发送的数据,否则会收到 onStreamMessageError 回调获得相应报错信息。
  • false: 接收方不保证收到,就算数据丢失也不会报错。
ordered
  • true: 接收方 5 秒内会按照发送方发送的顺序收到数据包;
  • false: 接收方不保证按照发送方发送的顺序收到数据包。
返回
  • 创建数据流成功返回数据流 ID。
  • < 0: 创建数据流失败。

◆ sendStreamMessage()

virtual int agora::rtc::IRtcEngine::sendStreamMessage ( int  streamId,
const char *  data,
size_t  length 
)
pure virtual

发送数据流。

该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。 API 须对数据通道的传送速率进行控制: 每个客户端每秒最多能发送 6 KB 数据。频道内每人最多能同时有 5 个数据通道。

注解
该方法仅适用于通信模式以及直播模式下的主播用户,如果直播模式下的观众调用此方法可能会造成观众变主播。
参数
streamIdcreateDataStream 返回的数据流 ID。
data自定义数据。
length数据长度。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ addPublishStreamUrl()

virtual int agora::rtc::IRtcEngine::addPublishStreamUrl ( const char *  url,
bool  transcodingEnabled 
)
pure virtual

增加旁路推流地址。

该方法用于旁路推流,用于添加推流地址。回调为 onStreamPublished

注解
  • 请确保在成功加入频道后才能调用该接口。
  • 该方法每次只能增加一路旁路推流地址。若需推送多路流,则需多次调用该方法。
  • URL 不支持中文字符等特殊字符。
参数
urlRTMP 推流地址。
transcodingEnabled
  • true: 转码( 转码 是指在旁路推流时对音视频流进行转码处理后再推送到其他 RTMP 服务器。多适用于频道内有多个主播,需要进行混流、合图的场景);
  • false: 不转码。
返回

◆ removePublishStreamUrl()

virtual int agora::rtc::IRtcEngine::removePublishStreamUrl ( const char *  url)
pure virtual

删除旁路推流地址。

该方法用于删除旁路推流过程中已经设置的 RTMP 推流地址。

注解
  • 该方法每次只能删除一路旁路推流地址。若需删除多路流,则需多次调用该方法。
  • URL 不支持中文等特殊字符。
参数
urlRTMP 推流地址。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ setLiveTranscoding()

virtual int agora::rtc::IRtcEngine::setLiveTranscoding ( const LiveTranscoding transcoding)
pure virtual

设置直播转码。

该方法用于旁路推流的视图布局及音频设置等。

参数
transcoding详见 LiveTranscoding
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ configPublisher()

virtual int agora::rtc::IRtcEngine::configPublisher ( const PublisherConfiguration config)
pure virtual
弃用:
配置旁路推流。

该方法在加入频道进行旁路推流之前配置推流参数。

注解
该方法已弃用。你仍然可以使用该方法推流到 CDN。但是声网推荐你使用以下方法推流,声网将在这三个接口的基础上对旁路推流做更多优化:
参数
config旁路推流设置。详见: PublisherConfiguration
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ setVideoCompositingLayout()

virtual int agora::rtc::IRtcEngine::setVideoCompositingLayout ( const VideoCompositingLayout sei)
pure virtual
弃用:
设置画中画布局。
注解
该接口已废弃,Agora 不推荐使用。如果希望设置旁路推流合图布局,可以调用 setLiveTranscoding 方法实现。

使用该方法设置直播场景里的画中画布局。该方法仅适用于在 Agora 服务器端推流的场景。当您在服务器端进行推流时:

  1. 定义一个画布(canvas): 画布的宽和高(即视频的分辨率), 背景颜色,和您想在屏幕上显示的视频总数。
  2. 在画布上定义每个视频的位置和尺寸(无论画布定义的宽和高有多大,每个视频用 0 到 1 的相对位置和尺寸进行定义),图片所在的图层,图片的透明度,视频是经过裁减的还是缩放到合适大小等等。
注解
  • 请确保在频道内调用该方法。
  • App 需保证同一频道内仅有一人调用该方法,如果同一频道内有多人调用该方法,其他调用了该方法的用户需调用 clearVideoCompositingLayout 取消已设置的画中画布局,仅留一人保留布局设置。
参数
sei画中画布局。详见: VideoCompositingLayout
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ clearVideoCompositingLayout()

virtual int agora::rtc::IRtcEngine::clearVideoCompositingLayout ( )
pure virtual
弃用:
取消画中画布局设置。

该方法取消用户由于调用 setVideoCompositingLayout 所设置/调整的画中画布局。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ addVideoWatermark()

virtual int agora::rtc::IRtcEngine::addVideoWatermark ( const RtcImage watermark)
pure virtual

添加本地视频水印。

该方法将一张 PNG 图片作为水印添加到本地发布的直播视频流上,同一直播频道中的观众,旁路推流观众,甚至录制设备都能看到或采集到该水印图片。 如果你仅仅希望在旁路直播推流中添加水印,请参考 setLiveTranscoding 中描述的用法。

注解
  • 在本地直播和旁路推流中,URL 的定义不同。本地直播中,URL 指本地直播视频上图片的本地绝对路径;旁路推流中,URL 指旁路推流视频上图片的地址。
  • 待添加图片的源文件格式必须是 PNG。如果待添加的 PNG 图片的尺寸与你该方法中设置的尺寸不一致,SDK 会对 PNG 图片进行裁剪,以与设置相符。
  • 声网当前只支持在直播视频流中添加一个水印,后添加的水印会替换掉之前添加的水印。
参数
watermark待添加在本地直播推流中的水印图片: RtcImage
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ clearVideoWatermarks()

virtual int agora::rtc::IRtcEngine::clearVideoWatermarks ( )
pure virtual

删除已添加的视频水印。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ addInjectStreamUrl()

virtual int agora::rtc::IRtcEngine::addInjectStreamUrl ( const char *  url,
const InjectStreamConfig config 
)
pure virtual

导入在线媒体流。

该方法将正在播放的音视频作为音视频源导入到正在进行的直播中。可主要应用于赛事直播、多人看视频互动等直播场景。状态回调为 onStreamInjectedStatus。如果导入成功,会触发 onUserJoined 回调和 onFirstRemoteVideoFrame 回调。uid 为 666,该音视频流会出现在频道中。

参数
url添加到直播中的视频流 URL 地址。支持 RTMP、HLS、FLV 协议传输。
  • 支持的 FLV 音频编码格式:AAC;
  • 支持的 FLV 视频编码格式:H.264(AVC)。
config所添加的视频流属性定义,详见: InjectStreamConfig
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ removeInjectStreamUrl()

virtual int agora::rtc::IRtcEngine::removeInjectStreamUrl ( const char *  url)
pure virtual

删除导入的外部媒体流。

注解
成功删除外部视频源 URL 地址后会触发 onUserOffline 回调,uid 为 666。
参数
url已导入、待删除的外部视频源 URL 地址。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ registerEventHandler()

virtual bool agora::rtc::IRtcEngine::registerEventHandler ( IRtcEngineEventHandler eventHandler)
pure virtual

◆ unregisterEventHandler()

virtual bool agora::rtc::IRtcEngine::unregisterEventHandler ( IRtcEngineEventHandler eventHandler)
pure virtual

◆ getConnectionState()

virtual CONNECTION_STATE_TYPE agora::rtc::IRtcEngine::getConnectionState ( )
pure virtual

获取当前网络连接状态。

返回
CONNECTION_STATE_TYPE