agora::recording::IRecordingEngine类 参考

  • C++

更新时间不可用

详细描述

该类包含应用程序调用的主要方法。

构造及析构函数说明

~IRecordingEngine()

inlinevirtual
virtual agora::recording::IRecordingEngine::~IRecordingEngine()

成员函数说明

createAgoraRecordingEngine()

static
static IRecordingEngine* agora::recording::IRecordingEngine::createAgoraRecordingEngine(const char * appId, IRecordingEngineEventHandler * eventHandler)

该方法创建 IRecordingEngine 实例。

参数
参数名描述
appId

希望录制的音视频通话中使用的 App ID,详见 获取 App ID。

eventHandler

录制 SDK 所触发的事件通过 IRecordingEngineEventHandler 类回调通知应用程序。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

IRecordingEngine 实例。

joinChannel()

purevirtual
virtual int agora::recording::IRecordingEngine::joinChannel(const char * channelKey, const char * channelId, uid_t uid, const RecordingConfig & config)

该方法让录制端加入频道,并开始录制。

注解

  • 由于录制端暂时未开放 requestToken 和 renewToken 接口,在获取 Token 时,请务必将服务到期时间 privilegeExpiredTs 设置为 0,表示权限一旦生成,永不过期。
  • 同一个频道里不能出现两个相同的 UID,否则会产生未定义行为。
参数
参数名描述
channelKey

用于鉴权的动态密钥。录制端的 channelKey 与 Native/Web SDK 保持一致。如果 Native/Web SDK 用了 token,该参数必须设为 token。详见校验用户权限。

channelId

希望录制的音视频通话的频道名称。

uid

录制使用的 UID。有两种设置方法:

  • 设置为 0,系统将自动分配一个 UID;
  • 设置一个唯一的 UID,不能与现在频道内的任何 UID 重复。取值范围:1 到 (2³² - 1)。
config

录制的详细设置,详见 RecordingConfig。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

joinChannelWithUserAccount()

purevirtual
virtual int agora::recording::IRecordingEngine::joinChannelWithUserAccount(const char * token, const char * channelId, const char * userAccount, const RecordingConfig & config)

该方法允许录制端使用 User Account 加入频道。

录制端成功加入频道后,会在本地触发 onLocalUserRegistered 和 onJoinChannelSuccess 回调。

注解

为保证通信质量,我们建议一个频道内使用同一类型的数据标识用户身份,因此录制端的用户标识数据类型要与 Native/Web SDK 的保持一致。

参数
参数名描述
token

用于鉴权的动态密钥。录制端的动态密钥必须与 Native/Web SDK 保持一致。如果 Native/Web SDK 用了 token,该参数必须设为 token。详见校验用户权限。

channelId

待录制频道的频道名。

userAccount

用户的 User Account。该参数为必填,最大不超过 255 字节,不可填 null。请确保加入频道的 User Account 的唯一性。以下为支持的字符集范围(共 89 个字符):

  • 26 个小写英文字母 a-z
  • 26 个大写英文字母 A-Z
  • 10 个数字 0-9
  • 空格
  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ","
config

录制的详细设置,详见 RecordingConfig。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

getUserInfoByUserAccount()

purevirtual
virtual int agora::recording::IRecordingEngine::getUserInfoByUserAccount(const char * userAccount, agora::linuxsdk::UserInfo * userinfo)

该方法通过 User Account 获取远端用户信息。

远端用户加入频道后,SDK 会获取到该远端用户的 UID 和 User Account,然后缓存一个包含了远端用户 UID 和 User Account 的 Mapping 表,并在本地触发 onUserInfoUpdated 回调。

收到 onUserInfoUpdated 回调后,你可以调用 getUserInfoByUserAccount 方法,通过传入 User Account 获取包含了指定用户 UID 的 UserInfo 对象。

参数
参数名描述
userAccount

用户 User Account,必填。

userinfo

[in/out] 标识用户信息的 UserInfo 对象。

  • 输入值:一个 UserInfo 对象。
  • 输出值:一个包含了用户 User Account 和 UID 的 UserInfo 对象。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

getUserInfoByUid()

purevirtual
virtual int agora::recording::IRecordingEngine::getUserInfoByUid(uid_t uid, agora::linuxsdk::UserInfo * userInfo)

该方法通过 UID 获取远端用户信息。

远端用户加入频道后, SDK 会获取到该远端用户的 UID 和 User Account,然后缓存一个包含了远端用户 UID 和 User Account 的 Mapping 表,并在本地触发 onUserInfoUpdated 回调。

收到 onUserInfoUpdated 回调后,你可以调用 getUserInfoByUid 方法,通过传入 UID 获取包含了指定用户 User Account 的 UserInfo 对象。

参数
参数名描述
uid

用户 UID,必填。

userInfo

[in/out] 标识用户信息的 UserInfo 对象。

  • 输入值:一个 UserInfo 对象。
  • 输出值:一个包含了用户 User Account 和 UID 的 UserInfo 对象。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

setVideoMixingLayout()

purevirtual
virtual int agora::recording::IRecordingEngine::setVideoMixingLayout(const agora::linuxsdk::VideoMixingLayout & layout)

该方法设置视频合流布局。

合流模式下如果有视频,必须调用该方法设置布局。

参数
参数名描述
layout

视频合流布局的设定,详见 VideoMixingLayout。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

stoppedOnError()

purevirtual
virtual int agora::recording::IRecordingEngine::stoppedOnError()

该方法在 onError 中调用。当遇到无法解决的错误时,手动停止 onError 回调。

返回值

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

leaveChannel()

purevirtual
virtual int agora::recording::IRecordingEngine::leaveChannel()

该方法让录制端退出频道,并释放占用的线程资源。

返回值

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

release()

purevirtual
virtual int agora::recording::IRecordingEngine::release()

该方法销毁 IRecordingEngine 实例。

返回值

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

getProperties()

purevirtual
virtual const RecordingEngineProperties* agora::recording::IRecordingEngine::getProperties()

该方法获取录制属性。

注解

  • 目前仅支持获取录制的媒体文件和 log 的存放路径。
  • 该方法与 onUserJoined 都能获取录制文件存放路径,两者的区别在于, onUserJoined 只能在录制端加入频道后有其他用户进入频道时触发。

返回值

返回 RecordingEngineProperties。

startService()

purevirtual
virtual int agora::recording::IRecordingEngine::startService()

该方法手动启动录制。

仅在 RecordingConfig 中的 triggerMode 参数为 manually(手动模式)时有效。

返回值

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

stopService()

purevirtual
virtual int agora::recording::IRecordingEngine::stopService()

该方法手动暂停录制。

仅在 RecordingConfig 中的 triggerMode 参数为 manually(手动模式)时有效。

返回值

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

setUserBackground()

purevirtual
virtual int agora::recording::IRecordingEngine::setUserBackground(uid_t uid, const char * img_path)

该方法设置指定 UID 用户的背景图片。当指定 UID 用户在线且没有发送视频流时,会显示该背景图片。

注解

该设置对 Agora Web SDK 的用户无效。

参数
参数名描述
uid

该用户的 UID。

img_path

背景图片路径。仅支持本地 JPEG 文件。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

setLogLevel()

purevirtual
virtual int agora::recording::IRecordingEngine::setLogLevel(agora::linuxsdk::agora_log_level level)

该方法设置 log 过滤等级。设置完成后,只有等级低于和等于所设 level 的 log 才会被生成。默认值为 5。

参数
参数名描述
level

详见 agora_log_level。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

updateSubscribeVideoUids()

purevirtual
virtual int agora::recording::IRecordingEngine::updateSubscribeVideoUids(uid_t * uids, uint32_t num)

该方法允许录制 SDK 只录制指定 UID 的视频。

注解

该方法仅在 RecordingConfig 中的 autoSubscribe 为 false 时有效。

参数
参数名描述
uids

UID 数组,为用逗号隔开的字符串,例如 "1","2","3"。

num

UID 的个数。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

updateSubscribeAudioUids()

purevirtual
virtual int agora::recording::IRecordingEngine::updateSubscribeAudioUids(uid_t * uids, uint32_t num)

该方法允许录制 SDK 只录制指定 UID 的音频。

注解

该方法仅在 RecordingConfig 中的 autoSubscribe 为 false 时有效。

参数
参数名描述
uids

UID 组成的数组,为用逗号隔开的字符串,例如 "1","2","3"。

num

UID 的个数。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

updateWatermarkConfigs()

purevirtual
virtual int agora::recording::IRecordingEngine::updateWatermarkConfigs(uint32_t wm_num, linuxsdk::WatermarkConfig * config)

该方法添加、更新或删除水印设置。

录制 SDK 支持三种水印:文字水印、时间戳水印和图片水印。

有以下情况:

  • 如果你在调用 setVideoMixingLayout 方法时没有设置 wm_num 和 wm_configs 参数,你可直接调用 updateWatermarkConfigs 方法添加水印。
  • 如果你在调用 setVideoMixingLayout 方法时已设置 wm_num 和 wm_configs 参数添加了水印,你可调用 updateWatermarkConfigs 方法修改水印个数和具体设置,从而增加、更新或删除水印;传值为空则删除全部已添加的水印。

注解

水印仅适用于合流录制模式(RecordingConfig 中的 isMixingEnabled 参数为 true)。

参数
参数名描述
wm_num

水印的个数。录制 SDK 最多支持 15 个水印,其中文字水印最多 10 个,时间戳水印最多 1 个,图片水印最多 4 个。

config

水印的具体设置。WatermarkConfig 组成的数组。一个水印对应一个 WatermarkConfig。

表格内容超出当前宽度,可横向滚动查看更多列。