IAgoraMediaRtcRecorder 类

  • C++

更新时间不可用

initialize

C++
virtual int initialize(base::IAgoraService* agora_service, bool enable_mix = true, bool recordEncodedOnly = false) = 0;

初始化录制器实例。

注意

  • recordEncodedOnly 参数仅在 enable_mix 为 false 时有效。
  • 如果你将 recordEncodedOnly 设为 true,则无法在录制过程中使用水印功能。

参数

参数数据类型描述
agora_servicebase::IAgoraService*声网服务对象,请确保已完成初始化。详见 IAgoraService。
enable_mixbool

录制时是否启用合流模式:

  • true:(默认)启用合流录制。
  • false:启用单流录制。
recordEncodedOnlybool

是否仅录制编码后的视频:

  • true:接收到的视频不会被解码,视频数据将以编码格式录制。该模式下仅支持 H264 和 H265。
  • false:(默认)接收到的视频将被解码并重新编码。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

joinChannel

C++
virtual int joinChannel(const char* token,const char* channelId,const char* userId) = 0;

加入声网 RTC 频道。

参数

参数数据类型描述
tokenconst char*用于鉴权的 App ID 或 Token。
channelIdconst char*

频道名。必须为字符串格式,且长度不超过 64 字节。支持的字符包括:

  • 所有小写英文字母:a 到 z。
  • 所有大写英文字母:A 到 Z。
  • 所有数字字符:0 到 9。
  • 空格字符。
  • 标点符号和其他符号,包括:"!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、"_"、"{"、"}"、"|"、"~"、","。
userIdconst char*本地用户的用户 ID。如果未指定该参数或将 userId 设置为 null,SDK 会自动分配一个用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

leaveChannel

C++
virtual int leaveChannel() = 0;

离开声网 RTC 频道。

返回值

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

enableEncryption

C++
virtual int enableEncryption(bool enabled, const EncryptionConfig& config) = 0;

启用或禁用内置加密功能。

在高安全性场景下,建议你在加入频道前调用该方法启用内置加密功能。

同一频道内的所有用户必须使用相同的加密模式和加密密钥。当所有用户离开频道后,该频道的加密密钥会被自动清除。

参数

参数数据类型描述
enabledbool

是否启用内置加密功能:

  • true:启用内置加密功能。
  • false:(默认)禁用内置加密功能。
configconst EncryptionConfig&内置加密配置。详见 EncryptionConfig。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

subscribeAllAudio

C++
virtual int subscribeAllAudio() = 0;

订阅并录制频道中所有远端用户的音频。

该方法会订阅并录制频道中所有远端用户的音频,并自动订阅后续加入频道的远端用户的音频。

返回值

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

subscribeAllVideo

C++
virtual int subscribeAllVideo(const agora::rtc::VideoSubscriptionOptions& subscriptionOptions) = 0;

订阅频道中所有远端用户的视频。

该方法会自动订阅频道中所有远端用户的视频,包括之后加入频道的远端用户的视频。

参数

参数数据类型描述
subscriptionOptionsconst agora::rtc::VideoSubscriptionOptions&视频订阅选项。详见 VideoSubscriptionOptions。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

unsubscribeAllAudio

C++
virtual int unsubscribeAllAudio() = 0;

停止订阅频道中所有远端用户的音频。

除非你显式调用 subscribeAudio 或 subscribeAllAudio,否则该方法会自动停止订阅之后加入频道的任何用户的音频。

返回值

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

unsubscribeAllVideo

C++
virtual int unsubscribeAllVideo() = 0;

停止订阅频道中所有远端用户的视频。

调用该方法后,SDK 会停止订阅当前频道中所有远端用户的视频流。除非你显式调用 subscribeVideo 或 subscribeAllVideo 方法,否则该方法会自动停止订阅之后加入频道的任何用户的视频流。

返回值

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

subscribeAudio

C++
virtual int subscribeAudio(user_id_t userId) = 0;

订阅并录制频道中指定远端用户的音频。

参数

参数数据类型描述
userIduser_id_t你想要订阅音频的远端用户的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。
    • -2(ERR_INVALID_ARGUMENT):用户不存在或 userId 无效。

unsubscribeAudio

C++
virtual int unsubscribeAudio(user_id_t userId) = 0;

停止订阅频道中指定远端用户的音频。

参数

参数数据类型描述
userIduser_id_t要停止订阅音频的远端用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。
    • -2(ERR_INVALID_ARGUMENT):用户不存在或 userId 无效。

subscribeVideo

C++
virtual int subscribeVideo(user_id_t userId, const VideoSubscriptionOptions& subscriptionOptions) = 0;

订阅频道中指定远端用户的视频。

参数

参数数据类型描述
userIduser_id_t你想要订阅的视频所属的远端用户 ID。
subscriptionOptionsconst VideoSubscriptionOptions&视频订阅选项,例如仅订阅编码后的视频数据,或订阅低码率的视频流。详见 VideoSubscriptionOptions。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。
    • -2(ERR_INVALID_ARGUMENT):用户不存在或 userId 无效。

unsubscribeVideo

C++
virtual int unsubscribeVideo(user_id_t userId) = 0;

停止订阅频道中指定远端用户的视频。

参数

参数数据类型描述
userIduser_id_t指定要停止订阅其视频的远端用户的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。
    • -2(ERR_INVALID_ARGUMENT):用户不存在或 userId 无效。

setAudioVolumeIndicationParameters

C++
virtual int setAudioVolumeIndicationParameters(int intervalInMS) = 0;

设置 onAudioVolumeIndication 回调的时间间隔。

参数

参数数据类型描述
intervalInMSint

设置两次音量回调之间的时间间隔,单位为毫秒(默认值为 500)。

  • 小于或等于 10:关闭音量回调。
  • 大于 10:设置两次回调之间的时间间隔(毫秒)。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

setVideoMixingLayout

C++
virtual int setVideoMixingLayout(const VideoMixingLayout& layout) = 0;

设置混合视频流的布局。

参数

参数数据类型描述
layoutconst VideoMixingLayout&混合视频流的布局。详见 VideoMixingLayout。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

setRecorderConfig

C++
virtual int setRecorderConfig(const media::MediaRecorderConfiguration& config) = 0;

设置录制器实例配置。

参数

参数数据类型描述
configconst media::MediaRecorderConfiguration&录制器实例配置。详见 MediaRecorderConfiguration。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

enableAndUpdateVideoWatermarks

C++
virtual int enableAndUpdateVideoWatermarks(WatermarkConfig* watermark_configs, int num) = 0;

为视频流添加水印。

参数

参数数据类型描述
watermark_configsWatermarkConfig*水印配置。详见 WatermarkConfig。
numint水印配置的数量。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

disableVideoWatermarks

C++
virtual int disableVideoWatermarks() = 0;

禁用视频水印。

返回值

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

startRecording

C++
virtual int startRecording() = 0;

开始录制。

返回值

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

stopRecording

C++
virtual int stopRecording() = 0;

停止录制。

返回值

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

startSingleRecordingByUid

C++
virtual int startSingleRecordingByUid(user_id_t userId) = 0;

根据用户 ID 启动录制。

参数

参数数据类型描述
userIduser_id_t要启动录制的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

stopSingleRecordingByUid

C++
virtual int stopSingleRecordingByUid(user_id_t userId) = 0;

通过指定用户 ID 停止录制。

参数

参数数据类型描述
userIduser_id_t要停止录制的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

setRecorderConfigByUid

C++
virtual int setRecorderConfigByUid(const media::MediaRecorderConfiguration& config, user_id_t userId) = 0;

根据用户 ID 设置录制配置。

参数

参数数据类型描述
configconst media::MediaRecorderConfiguration&录制器实例的配置。详见 MediaRecorderConfiguration。
userIduser_id_t要设置录制配置的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

enableAndUpdateVideoWatermarksByUid

C++
virtual int enableAndUpdateVideoWatermarksByUid(WatermarkConfig* watermark_configs, int num, user_id_t userId) = 0;

为指定用户的视频流添加水印。

参数

参数数据类型描述
watermark_configsWatermarkConfig*水印配置数组。详见 WatermarkConfig。
numint水印配置的数量。
userIduser_id_t你想要添加水印的视频流所属用户的 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

disableVideoWatermarksByUid

C++
virtual int disableVideoWatermarksByUid(user_id_t userId) = 0;

根据用户 ID 关闭其视频流的水印。

参数

参数数据类型描述
userIduser_id_t要关闭水印的视频流所属用户的 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

registerRecorderEventHandle

C++
virtual int registerRecorderEventHandle(IAgoraMediaRtcRecorderEventHandler* handler) = 0;

注册录制事件处理器。

参数

参数数据类型描述
handlerIAgoraMediaRtcRecorderEventHandler*录制事件处理器。详见 IAgoraMediaRtcRecorderEventHandler。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

unregisterRecorderEventHandle

C++
virtual int unregisterRecorderEventHandle(IAgoraMediaRtcRecorderEventHandler* handler) = 0;

注销录制事件处理器。

参数

参数数据类型描述
handlerIAgoraMediaRtcRecorderEventHandler*录制事件处理器。详见 IAgoraMediaRtcRecorderEventHandler。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

setGlobalLocalAccessPoint

C++
virtual int setGlobalLocalAccessPoint(const LocalAccessPointConfiguration& config) = 0;

设置本地 AP 模式下的全局本地接入点地址。

请在加入频道前调用该方法设置本地 AP 模式(该模式也会调用本地代理)下的全局本地接入点地址。该方法会影响同一进程中的所有录制器实例,仅需调用一次。

参数

参数数据类型描述
configconst LocalAccessPointConfiguration&本地接入点配置。详见 LocalAccessPointConfiguration。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

renewToken

C++
virtual int renewToken(const char* token) = 0;

更新 Token。

Token 在一段时间后会过期。你必须在以下任一情况下从服务器重新生成新的 Token,并调用该方法进行更新,否则 SDK 会断开与频道的连接:

参数

参数数据类型描述
tokenconst char*指向新 Token 的指针。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

enableRecorderVideoFrameCapture

C++
virtual int enableRecorderVideoFrameCapture(bool enable, const RecorderVideoFrameCaptureConfig& config) = 0;

启用并配置录制器视频帧采集。

参数

参数数据类型描述
enablebool

是否启用视频帧采集:

  • true:启用。
  • false:不启用。
configconst RecorderVideoFrameCaptureConfig&视频帧采集配置,详见 RecorderVideoFrameCaptureConfig。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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