Recording FAQs

Recording Solutions

Which solution should I use, Agora Recording Server, Agora Recording SDK or CDN Recording?

Agora Recording SDK is the recommended solution for all the users. The other solutions are deprecated.

Migration from Recording Service to Recording SDK

Do I still need to configure the ARS IP in the Dashboard backend?


Do I still need a Recording Key to record?


Is the recording trigger controlled by the server itself?


Do I still need to call the API startRecordingServer to trigger the recording?


How can the server itself know when to join channel and what is the channel number and etcsince the recording triggered is controlled by the server itself?

The server decides when to join channel to start recording or leave channel to stop recording via your own signaling. When the Recording SDK joins channel, the API behavior is equivalent to any other Agora Native SDK joining channel at the client side.

Recording SDK

Why is there no recording file after starting the recording?

Check whether the appID entered is the same as the one configured for Agora Native SDK integrated in your App. Check whether the channelProfile(Communication or Live Broadcast) is the same as the one set for Agora Native SDK in your App. The communication and live videos cannot interop.

Why is there no voice when checking the recorded video once the recording is complete?

The recorded files are divided into video.mp4 and audio.aac, the video itself does not have any voice, you need to transcode them manually to merge video and audio as one file.

Why can’t I play the MP4 file after the recording is complete?

  • Before v1.1: The real-time video mixing function is not supported, which means you have to use the transcoding tools inside of the Recording SDK to transcode first before you can play the MP4 file.
  • After v1.1: it is fine to play the MP4 file if you have called setVideoMixingLayout to mix video in realtime, otherwise use the transcoding tools inside of the Recording SDK to transcode first before you can play the MP4 file.

Why unable to play the recorded video files after enabling the encryption mode?

In encrypted mode, if the password is not entered or incorrect, the recorded file is unable to play. The audio is encrypted, which is why the voice is not normal.

Why is the recording still incorrect even when I configured the same password as the client side?

Be sure that the encryption parameter is set the same as app, aes-128-xts or aes-256-xts in lowercase.

Why is there no recording file since I set the same appId at the client and Server side?

When you call the joinChannel() and set the parameter channelProfile, be sure that the settings are of the client and recording server are the same. For example, the client is set as Live Broadcast mode, while the recording server is set as Communication mode, after joining channel, there won’t be any recording file.

How to Use a Channel Key?

Refer to the document ../Component_and_Others/Dynamic_Key_User_Key .

Why is there only one recording file with UID 0 when audio mixing is enabled?

By default, when the audio mixing is enabled and multiple users join the channel, it records all the voice as one file, and UID is 0

Why does it display with blurred or green screen when I drag the playback progress of the recording file?

By default, you need to transcode the recorded video files, otherwise if you drag the progress bar, the blurred or green screen occurs.

Is there any callback to indicate the recording failure, for example, server is offline, the recording process got stuck?

The callback function will be available starting from v1.1.

**How to inform the recording application of leaving channel without callbacks?**

The callback function will be available starting from v1.1. Before v1.1:

The Linux Server informs the recording application of leaving channel to stop recording via your own signaling. The Recording SDK calls the API leaveChannel , and then recording2_done.txt shows up after leaving the channel.

How to inform the recording application of the user being offline?

When there is no user in the channel, it stops recording automatically after the duration set in idleLimitSec when calling API joinChannel.

recording2_done.txt shows up immediately after the recording is stopped.

How to transcode the recorded file?

For how to transcode the recorded files manually, refer to Recording SDK Guide .

If any failure encountered, contact the Customer Support to locate the issue.

Can I configure the path and name of the recording file?

You can configure the root directory of the recording file, but not the name. For details, refer to Recording SDK Guide

How to gurantee the number of the channels being recorded simutaneously not succeeding the Server capacity (CPU/Memory)?

Calculate by yourself according to Recording SDK Guide .

How to pre-estimate the size of the generated recording file?

The default configuration of each video recording file is 400 kbps. The actual file size is related to the recording content and environment.

The currently supported language is C++, when will you support other languages?

Currently, we only support C++, and also supprot lauching recording with command line.

Why is it invalid when I set “–appId = f4637604af81440596a54254d53ade20 –uid = 222 –channel = ttt” with command line?

= is unsupported. The correct format is:

--appId f4637604af81440596a54254d53ade20  --uid 222 --channel ttt

Why does the recording application fail to login while the client can login(the recording app can send packets, but cannot receive packets from Agora servers)?

The recording application randomly selects a port to communicate with the Agora server. If the environment of the recording application is limited to the port, it may fail to connect.

If you need to specify a port, the solution is to write a configuration file, agorasdk.json, in the same directory as the executable. The content format is as follows:

{ "rtc.udp_port_range": [ 40000, 40004 ] }

You can change the port number, but the port number range must be: high - low > = 4 . This method supports only one channel recording. If you support multiple channels of recording, it is recommended that the server environment do not limit the UDP port.

When will the recording be stopped when I use the command line to record?

The recording will be stopped under one of the following circumstances when you use the command line to record:

  • Press Ctrl and C at the same time on the keyboard
  • When you set the value of the parameter idle to configure the channel idle duration, and If no user in the channel succeeds the predifined duration, the channel is disconnected and the recording is stopped automatically. The default value is 300 seconds.

Can I record the audio and video of a specified user?

This function is currently not supported.

How can I tell whether it is a normal exit or adnormat exit from the channel?

If the SDK triggers the onLeaveChannel callback and returns the error code ERR_INTERNAL_FAILED = 3 , it is a normal exit. If the SDK triggers onError callback instead of the onLeaveChannel callback and returns the error code ERR_INTERNAL_FAILED = 3 , it is an abnormal exit.

What is file format after transcoding the recorded files?

Refer to 播放录制文件 .

When I ran the command line and only enter the parameters marked with ‘must’, why can’t the recording application be started?

Be sure that you only point to the video_recorder folder instead of the video_recorder file when set the appliteDir parameter