Public Member Functions

 RecordingConfig ()
 
virtual ~RecordingConfig ()
 

Public Attributes

bool isAudioOnly
 
bool isVideoOnly
 
bool isMixingEnabled
 
bool autoSubscribe
 
bool enableCloudProxy
 
agora::linuxsdk::MIXED_AV_CODEC_TYPE mixedVideoAudio
 
const char * mixResolution
 
const char * decryptionMode
 
const char * secret
 
const char * appliteDir
 
const char * recordFileRootDir
 
const char * cfgFilePath
 
agora::linuxsdk::VIDEO_FORMAT_TYPE decodeVideo
 
agora::linuxsdk::AUDIO_FORMAT_TYPE decodeAudio
 
int lowUdpPort
 
int highUdpPort
 
int idleLimitSec
 
int captureInterval
 
int audioIndicationInterval
 
agora::linuxsdk::CHANNEL_PROFILE_TYPE channelProfile
 
agora::linuxsdk::REMOTE_VIDEO_STREAM_TYPE streamType
 
agora::linuxsdk::TRIGGER_MODE_TYPE triggerMode
 
agora::linuxsdk::LANGUAGE_TYPE lang
 
int proxyType
 
const char * proxyServer
 
agora::linuxsdk::AUDIO_PROFILE_TYPE audioProfile
 
const char * defaultVideoBg
 
const char * defaultUserBg
 
const char * subscribeVideoUids
 
const char * subscribeAudioUids
 
bool enableIntraRequest
 
bool enableH265Support
 

Detailed Description

The recording configuration.

Constructor & Destructor Documentation

◆ RecordingConfig()

agora::recording::RecordingConfig::RecordingConfig ( )
inline

◆ ~RecordingConfig()

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

Member Data Documentation

◆ isAudioOnly

bool agora::recording::RecordingConfig::isAudioOnly

Sets whether or not to record audio only.

  • true: Enables audio recording and disables video recording.
  • false: (Default) Enables both audio and video recording.

Used together with isVideoOnly:

◆ isVideoOnly

bool agora::recording::RecordingConfig::isVideoOnly

Sets whether or not to record video only.

  • true: Enables video recording and disables audio recording.
  • false: (Default) Enables both audio and video recording.

Used together with isAudioOnly:

◆ isMixingEnabled

bool agora::recording::RecordingConfig::isMixingEnabled

Sets whether or not to enable composite recording mode.

  • true: Enables composite recording mode, which means the audio of all uids is mixed in an audio file and the video of all uids is mixed in a video file. You can set the audio profile of the recording file by the audioProfile parameter and set the video profile by the mixResolution parameter.
  • false: (Default) Enables individual recording mode, which means one audio or video file for each uid. The sampling rate of the recording file is 48 kHz, and the bitrate and audio channel number of the recording file are the same as those of the original audio stream. The video profile of the recording file is the same as that of the original video profile.

◆ autoSubscribe

bool agora::recording::RecordingConfig::autoSubscribe

Sets whether to record the streams of all users or specified users.

  • true: (Default) Record the streams of all users.
  • false: Record the streams of specified users.
Note
If you set autoSubscribe as false, you should set subscribeVideoUids or subscribeAudioUids to specify users whose video or audio you want to record.

◆ enableCloudProxy

bool agora::recording::RecordingConfig::enableCloudProxy

Sets whether or not to enable the cloud proxy:

  • true: Enables the cloud proxy.
  • false: (Default) Disables the cloud proxy.

For more information, see Use Cloud Proxy

◆ mixedVideoAudio

agora::linuxsdk::MIXED_AV_CODEC_TYPE agora::recording::RecordingConfig::mixedVideoAudio

If you set isMixingEnabled as true and enable composite recording mode, mixedVideoAudio allows you to mix the audio and video in an MP4 file in real time. For more information, see MIXED_AV_CODEC_TYPE.

◆ mixResolution

const char* agora::recording::RecordingConfig::mixResolution

If you set isMixingEnabled as true and enable composite recording mode, mixResolution allows you to set the video profile, including the width, height, frame rate, and bitrate. The default setting is 360 x 640, 15 fps, 500 Kbps.

Note
Agora supports the following frame rates: 1 fps, 7 fps, 10 fps, 15 fps, 24 fps, 30 fps, and 60 fps. The default value is 15 fps. If you set other frame rates, the SDK uses the default value.

See the Video Profile Table.

◆ decryptionMode

const char* agora::recording::RecordingConfig::decryptionMode

When the whole channel is encrypted, the recording SDK uses decryptionMode to enable the built-in decryption function. The default value is NULL.

The following decryption methods are supported:

  • "aes-128-xts": AES-128, XTS mode.
  • "aes-128-ecb": AES-128, ECB mode.
  • "aes-256-xts": AES-256, XTS mode.
Note
The decryption method of the recording server must be the same as that of the Native/Web SDK.

◆ secret

const char* agora::recording::RecordingConfig::secret

Sets the decryption password when the decryptionMode is enabled. The default value is NULL.

◆ appliteDir

const char* agora::recording::RecordingConfig::appliteDir

Sets the path of AgoraCoreService.

The default path of AgoraCoreService is Agora_Recording_SDK_for_Linux_FULL/bin/.

◆ recordFileRootDir

const char* agora::recording::RecordingConfig::recordFileRootDir

Sets the path of the recorded files. The default value is NULL.

After setting recordFileRootDir, the subdirectory will be automatically generated according to the date of the recording.

◆ cfgFilePath

const char* agora::recording::RecordingConfig::cfgFilePath

Sets the path of the configuration file. The default value is NULL. The content in the configuration file must be in JSON format. You can configure the following parameters:

  • Recording_Dir: The absolute directory of the output. The recording service does not automatically create a subdirectory.
  • Chunk_Time_Span: Time interval, in seconds, between two successive recorded files. Only in an individual recording session can you set Chunk_Time_Span, which must be ≥ 10.

In the following example, the recording service creates a file every 10 seconds, and stores these files in the targeted directory:

{"Recording_Dir": "/home/guest/recording_dir/", "Chunk_Time_Span": 10}

◆ decodeVideo

agora::linuxsdk::VIDEO_FORMAT_TYPE agora::recording::RecordingConfig::decodeVideo

Sets the video decoding format. For more information, see VIDEO_FORMAT_TYPE.

Note
When VIDEO_FORMAT_TYPE = 1, 2, 3 or 4, isMixingEnabled cannot be set as true.

◆ decodeAudio

agora::linuxsdk::AUDIO_FORMAT_TYPE agora::recording::RecordingConfig::decodeAudio

Sets the audio decoding format. For more information, see AUDIO_FORMAT_TYPE.

Note
When AUDIO_FORMAT_TYPE = 1 or 2, isMixingEnabled cannot be set as true.

◆ lowUdpPort

int agora::recording::RecordingConfig::lowUdpPort

Sets the lowest UDP port.

Ensure that the value of highUdpPort - lowUdpPort is ≥ 6. The default value is 0.

◆ highUdpPort

int agora::recording::RecordingConfig::highUdpPort

Sets the highest UDP port.

Ensure that the value of highUdpPort - lowUdpPort is ≥ 6. The default value is 0.

◆ idleLimitSec

int agora::recording::RecordingConfig::idleLimitSec

Sets a time period. The value must be ≥ 3 seconds. The default value is 300 seconds.

When the Agora Recording SDK is recording, if there is no user in the channel after a time period of idleLimitSec, it automatically stops recording and leaves the channel.

Note
  • We charge you this time period.
  • In a communication channel, the recording service does not recognize a channel as an idle channel, so long as the channel has users, regardless of whether they send stream or not.
  • If a live-broadcast channel has an audience without a host for a set time (idleLimitSec), the recording service automatically stops and leaves the channel.

◆ captureInterval

int agora::recording::RecordingConfig::captureInterval

Sets the interval of the screen capture.

The interval must be longer than 1 second and the default value is 5 seconds.

Note
captureInterval is only valid when decodeVideo is set as 3, 4, or 5.

◆ audioIndicationInterval

int agora::recording::RecordingConfig::audioIndicationInterval

Sets whether or not to detect the users who speak.

  • ≤ 0: (Default) Do not detect the users who speak.
  • > 0: Sets the interval (ms) of detecting the users who speak. Agora recommends setting the interval to be longer than 200 ms. When the SDK detects the users who speak, the SDK returns the UID of the user who speaks loudest in the onActiveSpeaker callback and returns the UIDs of all users who speak and their voice volumes in the onAudioVolumeIndication callback.

◆ channelProfile

agora::linuxsdk::CHANNEL_PROFILE_TYPE agora::recording::RecordingConfig::channelProfile

Sets the channel mode. For more information, see CHANNEL_PROFILE_TYPE.

◆ streamType

agora::linuxsdk::REMOTE_VIDEO_STREAM_TYPE agora::recording::RecordingConfig::streamType

Takes effect only when the Agora Native SDK enables the dual-stream mode (high stream by default). For more information, see REMOTE_VIDEO_STREAM_TYPE.

◆ triggerMode

agora::linuxsdk::TRIGGER_MODE_TYPE agora::recording::RecordingConfig::triggerMode

Sets whether to record automatically or manually. For more information, see TRIGGER_MODE_TYPE.

◆ lang

agora::linuxsdk::LANGUAGE_TYPE agora::recording::RecordingConfig::lang

Sets the programming language. For more information, see LANGUAGE_TYPE.

◆ proxyType

int agora::recording::RecordingConfig::proxyType

Sets the type of the proxy server:

  • 0: Deploy the proxy server of the SOCKS5 type.
  • 1: (Default) Use the cloud proxy service, and configure the domain (recommended).
  • 2: Use the cloud proxy service, and configure the IP list (recommended when you can not resolve a domain to an IP address).

After setting the proxyType parameter, you need to set the proxyServer parameter. See Use Cloud Proxy for details.

◆ proxyServer

const char* agora::recording::RecordingConfig::proxyServer

Sets the IP address (domain) and port of the proxy server for a recording within the intranet according to the type of the proxy server that you choose with the proxyType parameter.

  • If proxyType is 0, set it as "<ip>:<port>".
  • If proxyType is 1, set it as "<domain>:<port>".
  • If proxyType is 2, set it as "<ip1>,<ip2>,...,<ipx>:<port>".

See Use Cloud Proxy for details.

◆ audioProfile

agora::linuxsdk::AUDIO_PROFILE_TYPE agora::recording::RecordingConfig::audioProfile

If you set isMixingEnabled as true and enable composite recording mode, audioProfile allows you to set the audio profile of the recording file. For more information, see AUDIO_PROFILE_TYPE.

◆ defaultVideoBg

const char* agora::recording::RecordingConfig::defaultVideoBg

Sets the directory of the default background image of the canvas in composite recording mode.

If defaultVideoBg is not set, the canvas displays the background color.

Note
Only supports local images in JPEG format.

◆ defaultUserBg

const char* agora::recording::RecordingConfig::defaultUserBg

Sets the directory of the default background image of users in composite recording mode.

The background image is displayed when a user is online and does not send any video stream. If defaultUserBg is not set, the user region displays the background color.

Note
  • Only supports local images in JPEG format.
  • The background image is not displayed for users using the Agora Web SDK.

◆ subscribeVideoUids

const char* agora::recording::RecordingConfig::subscribeVideoUids

An array of UIDs whose video streams you want to record.

If you set autoSubscribe as false, subscribeVideoUids enables you to record the video streams of specified users.

◆ subscribeAudioUids

const char* agora::recording::RecordingConfig::subscribeAudioUids

An array of UIDs whose audio streams you want to record.

If you set autoSubscribe as false, subscribeAudioUids enables you to record the audio streams of specified users.

◆ enableIntraRequest

bool agora::recording::RecordingConfig::enableIntraRequest

Sets whether to enable the keyframe request. The default value is true, which can improve the audio and video quality under poor network conditions. To play the video file recorded in individual recording mode from a specified position, you must set enableIntraRequest as false.

  • true: (Default) Leave it to the sender to decide whether to enable the keyframe request. After the keyframe request is enabled, you cannot play a video file, which is recorded in individual recording mode, from a specified position.
  • false: Disable the keyframe request. All senders in the channel send the keyframe at an interval of 2 seconds. After the keyframe request is disabled, you can play a video file, which is recorded in individual recording mode, from a specified position.
Note
If the sender uses Agora RTC SDK v2.9.2 or earlier, this parameter is valid only in the live-broadcast scenario.

◆ enableH265Support

bool agora::recording::RecordingConfig::enableH265Support

Sets whether to enable recording video stream in H.265 format:

  • true: Enable recording video stream in H.265 format.
  • false: (Default) Disable recording stream in H.265 format. Other remote users in the channel can no longer send video stream in H.265 format.