Overview

The Agora On-premise Recording SDK records communication and live broadcast contents based on the Agora Native SDK.

Compatibility

This component package is compatible with the following SDKs:

SDK Description
The Agora Native SDK The Agora On-premise Recording SDK is compatible with the Agora Native SDK v1.7.0 or later. If, for example, any user in the channel uses the Agora Native SDK v1.6, the whole channel cannot record.
The Agora Web SDK The On-premise Recording SDK is compatible with the Agora Web SDK v1.12.0 or later.

Known Issues and Limitation

  • When you record using an Android client, the image is turned upside down when you switch from a front-facing camera to a rear one.
  • If the user calls the leaveChannel method in the channel to stop recording, the recording file ends with a period of silence determined by the idleLimitSec field set for the configuration when calling the joinChannel method.
  • The recorded voice or video files are not encrypted. To be compliant with HIPPA, encrypt the disk with a disk encryption tool, such as cryptsetup.

The Agora On-premise Recording SDK supports both Java and C++ from v2.2.0.

v2.3.3

v2.3.3 is released on April 1, 2019.

New Features

1. Supports monitoring the network connection status

v2.3.3 adds the following callbacks to inform the app of the connection status between the recording SDK and Agora's edge server:

  • onConnectionLost: Informs that the SDK loses connection to the server.
  • onConnectionInterrupted: Informs that the connection between the SDK and the server is interrupted.

2. Informs the app of receiving the first frame

v2.3.3 adds the following callbacks to inform the app of receiving the first remote audio or video frame:

  • onFirstRemoteAudioFrame: Informs that the first remote audio frame is received.
  • onFirstRemoteVideoDecoded: Informs that the first remote video frame is decoded.

3. Supports monitoring status changes of the receiving stream

v2.3.3 adds the onReceivingStreamStatusChanged callback to get status changes of the receiving audio or video stream.

4. Supports the volume indication

v2.3.3 adds the onAudioVolumeIndication callback to get the list of users who are speaking and their volumes.

Issues Fixed

  • Fails to run the transcoding script when the recording SDK exits the channel and then enters the channel again in manual mode.
  • Occasional crashes when using invalid parameters in the mixedVideoAudio method.
  • Freezes in HD video recordings.
  • Setting the recording video frame rate does not take effect.
  • Occasional crashes when compiling the recording Java sample code in Manual Mode.
  • Fails to run the transcoding command -f . -m 3.

v2.3.0

v2.3.0 is released on January 14, 2019.

The calculation of the usage of the On-premise Recording SDK v2.3.0 or later is separated from that of the Agora Voice Call/Voice Interactive Broadcast SDK and the Agora Video Call/Video Interactive Broadcast SDK. Contact sales@agora.io for details.

New Features

1. Supports Stereo Audio in Composite Recording Mode

v2.3.0 supports high audio quality (a sample rate of 48 kHz, stereo, and a bitrate of up to 192 Kbps) in Composite Recording Mode.

Stereo is not applicable to raw data.

audio profile can be set as 0 or 1:

  • Individual recording (file mode):
    • By default or set audio profile=0: A sample rate of 48 KHz, the same number of audio channels as the original audio, and an adaptive bitrate.
  • Individual recording (raw data):
    • The sample rate is fixed at 48 KHz and the number of audio channels is the same as the original audio:
      • PCM: The bitrate may change.
      • AAC: The bitrate is the same as in the file mode.
  • Composite recording (file mode):
    • audio profile=0: A sample rate of 48 KHz, mono, and a bitrate of 48 Kbps
    • audio profile=1: A sample rate of 48 KHz, mono, and a bitrate of 128 Kbps
    • audio profile=2: A sample rate of 48 KHz, stereo, and a bitrate of 192 Kbps
  • Composite recording (raw data):
    • A fixed sample rate of 48 KHz and mono.

2. Supports Web Video Players

Video files transcoded in real time or transcoded by the transcoding script can be played by web browsers on Android, iOS/macOS, and Windows. The following is a list of compatible web browsers on each platform.

Platform Chrome Safari
Android Chrome 49+ N/A
iOS Safari 9+
macOS 10+ Chrome 47+ Safari 11+
Windows Chrome 49+ N/A

3. Supports Custom Background Images in Composite Recording Mode

v2.3.0 adds the function for users to add a background image while recording audio in Composite Recording Mode. A custom image is used for any user who does not have video while recording video in Composite Recording Mode.

This function is not applicable to raw data and screenshots.

4. Adds Two Pre-defined Layout Templates to the Sample Code

v2.3.0 provides two pre-defined layout templates for composite recording to make the On-premise Recording SDK sample code easier to use.

Best Fit (bestFit)

v2.3.0 adds bestFit as the default layout supporting up to 17 video streams.

This layout automatically scales according to the number of video streams. The number of columns and rows varies depending on the number of video streams. For example:

Vertical Presentation(verticalPresentation)

v2.3.0 adds the function to display a specified user's video in a large window on the left of the screen, while displaying the other users' videos in small windows arranged vertically on the right. At most, two columns with eight video windows in each column are supported.

For example:

5. Screenshots in Composite Recording Mode

v2.3.0 adds the function to capture the screen of every user while recording video in Composite Recording Mode. Recording and screen capturing use the same video stream.

6. Speaker Detection

v2.3.0 adds the onActiveSpeaker callback to return the UID of the active speaker in the channel.

This function is disabled by default and can be enabled by setting the audioIndicationInterval parameter in RecordingConfig. The On-premise Recording SDK returns the onActiveSpeaker callback at set intervals.

Improvements

  • Improves audio and video synchronization in Individual Recording Mode.
  • Supports automatic rotation of recorded video streams that are not transcoded in real time in Individual Recording Mode.
  • Changed the idle behavior in Manual Mode:
    • For versions earlier than v2.3.0 in Manual Mode, the idle mechanism takes effect immediately after joining a channel, which might cause the recording SDK to exit the channel.
    • For v2.3.0 or later, the idle mechanism does not take effect until the startService method is called.
  • Optimizes the log levels and split some logs in INFO into NOTICE, WARN, and ERROR.
  • Optimizes the naming of the recording directory to ensure the uniqueness of each folder.

v2.2.3

v2.2.3 is released on October 18, 2018.

Issues Fixed

  • Coredump loss caused by .backtrace.
  • System crashes caused by Java jni. and optimize stability.
  • Transcoding script issues in Manual Mode.
  • The recording video file splits into two files after a web client joins the channel.
  • Occasional system crashes caused by the subthread being active after the main thread is released.

v2.2.2

v2.2.2 is released on August 1, 2018.

Improvements

  • The screenshots are named uidYmdHMSms.jpg instead of uidYmdHMS.jpg.
  • The transcoding script supports autorotation.
  • The structure of the Java folder is modified.

Issues Fixed

  • Abnormal webm recording times.
  • Memory leaks.
  • Multi-party intercommunication issues.
  • H.264 parser issues.
  • Audio and video out of sync.

v2.2.1

v2.2.1 is released on June 5, 2018.

Improvements

  • Improves the performance of the Communication profile. The number of recording channels that a system supports with the same performance increases by 150%.
  • Improves the efficiency to find the port. The time to find the port is no longer part of the idle time.

Issues Fixed

Port conflicts when the search for the port takes too long and exceeds the idle time. As a result, the port is not connected.

v2.2.0

v2.2.0 is released on May 4, 2018.

New Features

Support for both Java and C++.

Issues Fixed

  • Issues of oversized logs.
  • Abnormal issues when recording fast-forward videos.
  • Intermittent failures.
  • Performance issues.
  • Some crash issues.

v2.1.0

v2.1.0 is released on March 7, 2018.

New Features

Function Description
Recording Mode Supports selecting auto or manual mode when joining a channel to flexibly control the recording.
Control Recording Adds interfaces to unbind the operations of joining a channel and recording. If the auto recording mode is used, the recording starts when a user joins the channel. If the manual recording mode is used, you can control when to start and stop the recording.
Mix Raw Audio Supports the function of mixing raw audio data.
Java Recording API Supports Java APIs for recording.

Improvements

Improvement Description
Transcoding Script Supports setting the transcoding frame rate and resolution, either in picture-in-picture or single-stream mode.

Issues Fixed

  • Occasional recording file transcoding failures.
  • The video screen occasionally turns upside down.
  • Occasional abnormal audio during recording.

v2.0.0

v2.0 is released on November 21, 2017.

  • Optimizes the raw data to support various formats:
    • Modifies the decodeAudio and decodeVideo parameters, and adds the VideoJpgFrame struct.
    • Modifies the getAudioFrame and getVideoFrame parameters.
  • Adds the captureInterval parameter to set the time interval of capturing screenshots.
  • Adds the streamType parameter to support different video stream types.
  • Adds the isVideoOnly parameter.
  • The transcoding scripts, once used, generate a convert.log file under the same path as the voice/video file.
  • Adds the video rotating information in UID_HHMMSSMS.txt.

v1.3.0

v1.3 is released on October 20, 2017.

New Features:

  • Adds mixing the audio and video recording functions by adding the mixedVideoAudio and cfgFilePath parameters in the joinChannel method.
  • Adds the function of merging the audio and video file of the same uid as one, see Play the Recording Files.
  • Adds the getProperties method to get the recording path immediately after recording is started before joining any channel.
  • Modifies the onError and onLeaveChannel callbacks.

v1.2.0

v1.2 is released on August 21, 2017.

New Features:

  • Supports getting the audio and video raw data.
  • Supports detecting sexually explicit content.
  • Provides a recordingsys.log log file to check for failures.
  • Supports the recording channel timestamp, that is, the first user who starts recording in the channel.

v1.1.0

v1.1 is released on July 25, 2017.

New Features:

  • Adds recording at the web client.

  • Adds the real-time video mixing function.

  • Adds a set of callback functions.

  • Modifies the file format after transcoding.

  • Enables configuring the UDP port.

  • Issues Fixed:

  • Wrong timestamps.

  • Transcoding failures.

  • Unable to playback VLC files.

v1.0.1

v1.0.1 is released on June 27, 2017, and fixes the crash when you set the channel profile of the recording as live broadcast.

v1.0.0

v1.0.0 is released on June 15, 2017.

This is the first release of the On-premise Recording SDK with the following functions:

  • Communication and live broadcast scenarios.
  • Recording the voice and video of all users in a channel.
  • Recording the voice and video of all users in multiple channels simultaneously.
  • Recording the voice of all users in a channel or in multiple channels simultaneously.
  • Recording an encrypted channel if the application has integrated the Agora built-in encryption.