Release notes
Updated
Information about changes in each release of Video Calling.
This page provides the release notes for the RTC SDK release streams used by Video Calling.
RTC SDK
Known issues
The list of known issues is continuously updated as systems evolve. Agora recommends regularly upgrading to the latest SDK version, which includes new features, bug fixes, and improvements.
Blueprint SDK v4.4.0
macOS 15 Sequoia beta system issue
When the app path, including the app name, contains non-English characters such as Chinese characters, the compiled Metal shader library might not contain any methods, causing the app to crash. See App fails to run on macOS 15 Beta for the workaround.
Blueprint SDK v4.2.1
Audio module incompatibility on iOS
The audio module of the Agora Blueprint SDK is incompatible with the AudioMixer module in Unreal Engine 5.3 and 5.4. Add the following configuration to /Config/IOS/IOSEngine.ini in your project to disable the Unreal Engine AudioMixer module and avoid conflicts:
[Audio]
AudioMixerModuleName=v4.5.1
v4.5.1 was released on March 13, 2025.
New features
-
AI conversation scenario
This version adds the
AUDIO_SCENARIO_AI_CLIENTaudio scenario specifically designed for interacting with the conversational AI agent created by Conversational AI Engine. This scenario optimizes the audio transmission algorithm based on AI-generated voice characteristics, ensuring stable voice data transmission even in weak network conditions with up to 80% packet loss. It enhances conversation continuity and reliability while adapting to complex network conditions.
Improvements
- Reduces the SDK initialization time on specific device models. (iOS)
Issues fixed
This release fixes the following issues:
- Apps that integrated the Agora SDK and set the
targetSdkVersionto 34 encountered crashes when attempting to enable screen sharing for the first time on an Android 14 system. (Android) - When joining two or more channels simultaneously, and calling the
TakeSnapshotExmethod to take screenshots of the local video streams in each channel consecutively, the screenshot of the first channel failed. - When using the
Pausemethod to pause playback, then callingSeekto move to a specified position, and finally callingPlayto continue playback, the Media Player resumed from the position where it was paused, not the new specified position. - When using the Media Player, the file path of the media resource returned by the
GetPlaySrcdid not change after calling theSwitchSrcmethod to switch to a new media resource. - When using Bluetooth headphones on specific device models for audio and video interactions, adjusting the phone volume would occasionally change the media volume instead of the Bluetooth volume. (Android)
- During audio and video interactions, the local user occasionally experienced a black screen when watching the video streams of remote users. (Android)
- On specific device models, after calling
SetCameraExposureFactorto set the exposure coefficient of the current camera at a specific angle of the device, the video screen occasionally became dark when the device was moved to another angle. (Android) - When playing a CDN live stream, the video occasionally froze for an extended period after recovering from an interruption. (Android)
- When pushing video frames in i420 format to the channel, using CVPixelBuffer to handle these frames caused a crash. (iOS)
- Calling
SetupLocalVideoto set up two views, then callingEnableFaceDetectionto start face detection, no face information can be detected in the subsequently passed views. (iOS) - In a screen sharing scenario, the receiving-end user saw a green line on the shared image. (iOS)
- In the interactive live streaming scenario, after joining a channel to watch live streams using
stringuser id, the audience members occasionally saw that the audio was not synchronized with the video. - Plugins sometimes did not work when using AI noise suppression and AI echo cancellation plugins at the same time.
v4.5.0
v4.5.0 was released on December 10, 2024.
Compatibility changes
This version includes optimizations to some features, including changes to SDK behavior and API renaming and deletion. To ensure normal operation of the project, update the code in the app after upgrading to this release.
-
Changes in strong video noise suppression implementation
This version adjusts the implementation of strong video noise suppression. The
VIDEO_DENOISER_LEVEL_STRENGTHenumeration is removed fromEUABT_VIDEO_DENOISER_LEVEL. Instead, after enabling video noise suppression by callingSetVideoDenoiserOptions, you can call theSetBeautyEffectOptionsmethod to enable the beauty skin smoothing feature. Using both together will help achieve better video noise suppression effects. For strong noise suppression, it is recommended to set the skin smoothing parameters as detailed inSetVideoDenoiserOptions.Additionally, due to this adjustment, to achieve the best low-light enhancement effect with a focus on image quality, enable video noise suppression first and use specific settings as detailed in
SetLowlightEnhanceOptions. -
Changes in camera plug and unplug status (macOS, Windows)
In previous versions, when the camera was unplugged and replugged, the
OnVideoDeviceStateChangedcallback would report the device status asMEDIA_DEVICE_STATE_ACTIVE(1)(device in use). Starting from this version, after the camera is replugged, the device status will change toMEDIA_DEVICE_STATE_IDLE(0)(device ready). -
Changes in video encoding preferences
To enhance the user’s video interaction experience, this version optimizes the default preferences for video encoding:
- In the
ECOMPRESSION_PREFERENCEenumeration class, a newPREFER_COMPRESSION_AUTO (-1)enumeration is added, replacing the originalPREFER_QUALITY (1)as the default value. In this mode, the SDK will automatically choose betweenPREFER_LOW_LATENCYorPREFER_QUALITYbased on your video scene settings to achieve the best user experience. - In the
EUABT_DEGRADATION_PREFERENCEenumeration class, a newMAINTAIN_AUTO (-1)enumeration is added, replacing the originalMAINTAIN_QUALITY (1)as the default value. In this mode, the SDK will automatically choose betweenMAINTAIN_FRAMERATE,MAINTAIN_BALANCED, orMAINTAIN_RESOLUTIONbased on your video scene settings to achieve the optimal overall quality of experience (QoE).
- In the
-
16 KB memory page size (Android)
Starting from Android 15, the system adds support for 16 KB memory page size, as detailed in Support 16 KB page sizes. To ensure the stability and performance of the app, starting from this version, the SDK supports 16 KB memory page size, ensuring seamless operation on devices with both 4 KB and 16 KB memory page sizes, enhancing compatibility and preventing crashes.
New features
-
Live show scenario
This version adds the
APPLICATION_SCENARIO_LIVESHOW(3)(Live Show) enumeration toEVIDEO_APPLICATION_SCENARIO_TYPE. You can callSetVideoScenarioto set the video business scenario to show room. In this scenario, fast video rendering and high image quality are crucial. The SDK implements several performance optimizations, such as enabling accelerated audio and video frame rendering to minimize first-frame latency (no need to callEnableInstantMediaRendering) to achieve better image quality and bandwidth efficiency. -
Maximum frame rate for video rendering
This version adds the
SetLocalRenderTargetFpsandSetRemoteRenderTargetFpsmethods, which support setting the maximum frame rate for video rendering locally and remotely. The actual frame rate for video rendering by the SDK will be as close to this value as possible.In use-cases where the frame rate requirement for video rendering is not high (e.g., screen sharing, online education) or when the remote end uses mid-to-low-end devices, you can use this set of methods to limit the video rendering frame rate, thereby reducing CPU consumption and improving system performance.
-
Filter effects
This version introduces the
SetFilterEffectOptionsmethod. You can pass a cube map file (.cube) in theconfigparameter to implement custom filter effects such as whitening, vivid, cool, black and white, etc. Additionally, the SDK provides a built-inbuilt_in_whiten_filter.cubefile for quickly achieving a whitening filter effect. -
Other features
- The
OnLocalVideoStateChangedcallback adds theLOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTEDenumeration, indicating that the currently used video capture device has been disconnected (for example, unplugged). (Windows) EMEDIA_DEVICE_STATE_TYPEadds theMEDIA_DEVICE_STATE_PLUGGED_INenumeration, indicating that the device has been plugged in. (Windows)
- The
Improvements
-
Virtual background algorithm optimization
This version upgrades the virtual background algorithm, making the segmentation between the portrait and the background more accurate. There is no background exposure, the body contour of the portrait is complete, and the detail recognition of fingers is significantly improved. Additionally, the edges between the portrait and the background are more stable, reducing edge jumping and flickering in continuous video frames.
-
Snapshot at specified video observation points
This version introduces the
TakeSnapshotWithConfigandTakeSnapshotWithConfigExmethods. You can use theconfigparameter when calling these methods to take snapshots at specified video observation points, such as before encoding, after encoding, or before rendering, to achieve more flexible snapshot effects. -
Other features
- In use-cases where Alpha transparency effects are achieved by stitching video frames and Alpha data, the rendering performance on the receiving end has been improved, effectively reducing stuttering and latency. (Android, iOS)
- Optimizes the logic for calling
QueryDeviceScoreto obtain device score levels, improving the accuracy of the score results. - Supports using virtual cameras in YV12 format as video capture devices. (Windows)
- When calling
SwitchSrcto switch between live streams or on-demand streams of different resolutions, smooth and seamless switching can be achieved. An automatic retry mechanism has been added in case of switching failures. The SDK will automatically retry 3 times after a failure. If it still fails, theOnPlayerEventcallback will report thePLAYER_EVENT_SWITCH_ERRORevent, indicating an error occurred during media resource switching. - When calling
SetPlaybackSpeedto set the playback speed of an audio file, the minimum supported speed is 0.3x.
Issues fixed
This version fixes the following issues:
- When calling
StartScreenCaptureByWindowIdto share the screen, the window capture area specified byregionRectwas inaccurate, resulting in incorrect width and height of the screen sharing window seen by the receiving end. (Windows) - When the video source type of the sender is in JPEG format, the frame rate on the receiving end occasionally falls below expectations. (Android, iOS)
- During audio and video interaction, after being interrupted by a system call, the user volume reported by the
OnAudioVolumeIndicationcallback was incorrect. (Android) - When the receiving end subscribes to the low-quality video stream by default and does not automatically subscribe to any video stream when joining the channel, calling
MuteRemoteVideoStream(uid, false)after joining the channel to resume receiving the video stream results in receiving the high-quality video stream. (Android) - Occasional errors of not finding system files during audio and video interaction on Windows 7 systems. (Windows)
- When calling
FollowSystemRecordingDeviceorFollowSystemPlaybackDeviceto set the audio capture or playback device used by the SDK to not follow the default system audio playback device, the local audio state callbackOnLocalAudioStateChangedis not triggered when the audio device is removed. (Windows) - Occasional instances where the receiving end cannot hear the sender during audio and video interaction. (iOS)
- During audio and video interaction, if the sender's device system version is iOS 17, the receiving end occasionally cannot hear the sender. (iOS)
- In live streaming use-cases, the time taken to reconnect to the live room after the audience end disconnects due to network switching is longer than expected. (iOS)
- No sound when playing online media resources using the media player after the app starts. (iOS)
- Occasional instances of no sound in audio capture after resuming from being interrupted by other system apps during audio and video interaction. (iOS)
- Calling
StartAudioMixingand then immediately callingPauseAudioMixingto pause the music file playback does not take effect. - Occasional crashes during audio and video interaction. (Android)
v4.4.0
v4.4.0 was released on August 29, 2024.
Compatibility changes
This version simplifies the way methods are called and callbacks are implemented in Blueprints.
-
Method calls
In this version, there is no need to manually maintain instance variables. You can directly retrieve the desired class at any point in your Blueprint using the
Getnode, and connect the appropriate function nodes to complete the call. This improvement makes calling methods in Blueprints more convenient and streamlines the development process.The image below demonstrates how to obtain the IRtcEngine instance through the GetAgoraRtcEngine node and connect it to the Initialize node to perform initialization:
-
Callback implementation
This version introduces the concept of
CallbackExecutor. You can bind the correspondingCallbackExecutorin Blueprints usingEventHandler, allowing for the execution of callbacks. This improvement offers the following advantages:- Callback implementation is more convenient.
- Enhanced security, with bound callbacks executing without causing crashes when destroyed.
- Easier reuse and code management.
The image below demonstrates how to obtain
EventHandlerthrough theGetEventHandlernode and connect it to theAddBlueprintCallbackExecutornode to bind the specifiedCallbackExecutor, thereby executing the related callbacks under the IRtcEngineEventHandler interface class:
New features
-
Voice AI tuner
This version introduces the voice AI tuner feature, which can enhance the sound quality and tone, similar to a physical sound card. You can enable the voice AI tuner feature by calling the
EnableVoiceAITunermethod. Pass in the sound effect types supported in theEVOICE_AI_TUNER_TYPEenum to achieve effects like deep voice, cute voice, husky singing voice, and so on. -
Privacy manifest file (iOS)
To meet Apple's safety compliance requirements for app publication, the SDK now includes a privacy manifest file,
PrivacyInfo.xcprivacy, detailing the SDK's API calls that access or use user data, along with a description of the types of data collected.Note
If you need to publish an app with SDK versions prior to v4.4.0 to the Apple App Store, add the PrivacyInfo.xcprivacy file to your Xcode project.
:::
-
Multi-camera capture (Android)
This release introduces additional functionalities for Android camera capture:
-
Support for capturing and publishing video streams from the third and fourth cameras:
VIDEO_SOURCE_CAMERA_THIRD(11) andVIDEO_SOURCE_CAMERA_FOURTH(12) inEVIDEO_SOURCE_TYPEadd support for Android, specifically for the third and fourth camera sources. This change allows you to specify up to four camera streams when initiating camera capture by callingStartCameraCapture.publishThirdCameraTrackandpublishFourthCameraTrackinFChannelMediaOptionsadd support for Android. Set these parameters totruewhen joining a channel withJoinChannelWithOptionsto publish video streams captured from the third and fourth cameras.
-
Support for specifying cameras by camera ID:
A new parameter
cameraIdis added toFCameraCapturerConfiguration. For devices with multiple cameras, wherecameraDirectioncannot identify or access all available cameras, you can obtain the camera ID through Android's native system APIs and specify the desired camera by callingStartCameraCapturewith the specificcameraId.
-
-
Select different audio tracks for local playback and streaming
This release introduces the
SelectMultiAudioTrackmethod that allows you to select different audio tracks for local playback and streaming to remote users. For example, in use-cases like online karaoke, the host can choose to play the original sound locally and publish the accompaniment in the channel. Before using this function, open the media file through theOpenWithMediaSourcemethod and enable this function by setting theEnableMultiAudioTrackparameter inFAgoraMediaSource. -
Update video screenshot and upload
To facilitate the integration of third-party video moderation services from Agora Extensions Marketplace, this version has the following changes:
- The
CONTENT_INSPECT_IMAGE_MODERATIONenumeration is added inECONTENT_INSPECT_TYPE, which means using video moderation extensions from Agora Extensions Marketplace to take video screenshots and upload them. - An optional parameter
serverConfigis added inFContentInspectConfig, which is for server-side configuration related to video screenshot and upload via extensions from Agora Extensions Marketplace. By configuring this parameter, you can integrate multiple third-party moderation extensions and achieve flexible control over extension switches and other features. For more details, please contact technical support.
Additionally, this version introduces the
EnableContentInspectExmethod, which supports simultaneous screenshot and upload of multiple video streams. - The
-
Wildcard token
This release introduces wildcard tokens. Agora supports setting the channel name used for generating a token as a wildcard character. The token generated can be used to join any channel if you use the same user ID. In use-cases involving multiple channels, such as switching between different channels, using a wildcard token can prevent repeated application of tokens every time users join a new channel, which reduces the pressure on your token server. See Generate wildcard tokens.
Note
All 4.x SDKs support using wildcard tokens. :::
-
Preloading channels
This release adds
PreloadChannelandPreloadChannelWithUserAccountmethods, which allow a user whose role is set as audience to preload channels before joining one. Calling the method can help shorten the time of joining a channel, thus reducing the time it takes for audience members to hear and see the host.When preloading more than one channel, Agora recommends that you use a wildcard token for preloading to avoid repeated application of tokens every time you join a new channel, thus saving the time for switching between channels. See Generate wildcard tokens.
-
Publishing video streams from different sources (Windows, macOS)
This release adds the following members in
FChannelMediaOptionsto allow you to publish video streams captured from the third and fourth camera or screen:publishThirdCameraTrack: Publishing the video stream captured from the third camera.publishFourthCameraTrack: Publishing the video stream captured from the fourth camera.publishThirdScreenTrack: Publishing the video stream captured from the third screen.publishFourthScreenTrack: Publishing the video stream captured from the fourth screen.
Note
For one RtcConnection, Agora supports publishing multiple audio streams and one video stream at the same time.
:::
Improvements
-
Improved rendering usability
When using the UImage widget, you can control the size of the displayed image by setting the properties of the Brush. Starting from this version, the Size To Content option is supported, allowing UImage to automatically adjust to the size of the incoming video frames from the remote end. This improvement enhances the usability of image rendering.
-
Channel media relay
The number of target channels for media relay has been increased to 6. When calling
StartOrUpdateChannelMediaRelayandStartOrUpdateChannelMediaRelayEx, you can specify up to 6 target channels.
Issues fixed
In Unreal Engine 5.3 and 5.4, adding the following code to the /Source/xxx.Target.cs file in your project to solve iOS memory allocation issues may lead to missing iOS compilation symbols. To address this issue, this version adds three function definitions (StdMalloc, StdRealloc, and StdFree) related to the standard library in the UnrealMemory.cpp file, ensuring proper handling of memory management needs when using the standard memory allocator (iOS).
if (Target.Platform == UnrealTargetPlatform.IOS)
{
bOverrideBuildEnvironment = true;
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");
}v4.2.1
This version was released on November 16, 2023.
This the first release of RTC SDK for Unreal Blueprint.
New features
RTC SDK for Unreal Blueprint provides a simple and user-friendly real-time interactive solution for Unreal Engine users.
RTC SDK for Unreal Blueprint offers a visual interface and a set of intuitive and easy-to-use nodes. This enables developers to effortlessly implement real-time interactive features in games or apps within the Unreal project. You don't need to know C++, just drag, connect, and configure nodes.
To integrate real-time engagement functionality into your app using RTC SDK for Unreal Engine, see:
Agora provides the open source example project on GitHub for your reference.
Extensions
Notifications
2022.10
- After you enable Agora Notifications, your server receives the events that you subscribe to in the form of HTTPS requests.
- To improve communication security between the Agora Notifications and your server, Agora backend uses signatures for identity verification.
- As of this release, you can use Agora Notifications in conjunction with this product.
