Release notes
This page provides the release notes for the Voice Calling 4.x.
Voice SDK
Voice Calling 4.x is a JavaScript and TypeScript library loaded by an HTML web page. The SDK library uses APIs in the web browser to establish connections and control the communication, Broadcast Streaming and Interactive Live Streaming services.
Compatibility
See Supported platforms.
Known issues
See Known issues.
v4.18.3
v4.18.3 was released on September 20, 2023.
Fixed issues
v4.18.3 fixes the following issue:
- The SDK failed to obtain audio and video statistics on Safari 17.
v4.18.2
v4.18.2 was released on July 11, 2023.
Fixed issues
v4.18.2 fixes the following issues:
- In certain circumstances, Video SDK for Web triggered microphone and camera device permission prompts after it finished loading.
v4.18.1
v4.18.1 was released on July 03, 2023.
Improvements
Error handling support for event listeners
As of this release, when an error occurs during the execution of the callback function assigned to the event listener (listener
), the SDK does not interrupt normal operation. Instead, the SDK captures the exception and provide error information in the logs.
Enhanced concurrency control for asynchronous methods
This release optimizes concurrency control for asynchronous methods. When the following asynchronous methods are invoked concurrently, the SDK executes them in the order they were called, ensuring consistency:
join
andleave
publish
andunpublish
subscribe
andunsubscribe
Taking publish
and unpublish
as an example, if you call unpublish
immediately after calling publish
:
- In versions earlier than 4.18.1,
unpublish
might not take effect, which means the media track could remain published. - As of version 4.18.1, the actual result is consistent with the order of these method calls, which means the media track is correctly unpublished.
Fixed issues
This release fixed the issue that the following callbacks were not triggered when an external camera or microphone was initially connected to a device without any available cameras or microphones:
onCameraChanged
orAgoraRTC.on("camera-changed")
onMicrophoneChanged
orAgoraRTC.on("microphone-changed")
v4.18.0
v4.18.0 was released on June 12, 2023.
New features
Variable playback speed for audio files
To facilitate changing the playback speed of audio effect or music files, v4.18.0 modifies the IBufferSourceAudioTrack
class as follows:
- Adds the
setAudioBufferPlaybackSpeed
method, which can be called before or after a user joins a channel. - Adds the
playbackSpeed
property to retrieve the current playback speed.
Custom signaling proxy
v4.18.0 adds the setProxyServer
method to allow customization of the signaling proxy server used by the SDK.
Flexible event listening for AgoraRTC objects
As of v4.18.0, the IAgoraRTC
class inherits all methods from the EventEmitter
class, providing a flexible way of listening to all events emitted by the AgoraRTC
object.
Using onCameraChanged
as an example:
You can continue using the previous approach. However, for higher flexibility and extensibility, Agora recommends modifying the listening approach for the following events after upgrading the SDK:
onAutoplayFailed
onCameraChanged
onMicrophoneChanged
onPlaybackDeviceChanged
onSecurityPolicyViolation
onAudioAutoplayFailed
: Deprecated, seeonAutoplayFailed
instead
Scalable Video Coding, access to encoded data, and enhanced connection experience in restricted networks are released in beta. See beta documentation for details.
Improvements
Shorter time to join channel
As of v4.18.0, the SDK enables WebSocket message compression by default, reducing the time to join a channel in poor network conditions.
Other improvements
v4.18.0 also includes the following improvements:
- Improves the retry mechanism by adding a 3s retry rule to switch a downgraded video resolution to a higher one. This prevents the video resolution from remaining low when the network conditions improve, resulting in a better user experience.
- Upgrades the Cloud Proxy service to enhance its stability in different network environments.
API changes
Added
setProxyServer
setAudioBufferPlaybackSpeed
method andplaybackSpeed
property toIBufferSourceAudioTrack
- The following methods inherited from the
EventEmitter
class to theIAgoraRTC
class:on
off
once
getListeners
removeAllListeners
"camera-changed"
"microphone-changed"
"playback-device-changed"
"autoplay-failed"
"security-policy-violation"
Fixed issues
v4.18.0 fixes the following issues:
- Mobile devices experienced delays in receiving notifications for the broadcaster leave channel event.
- Users experienced a black screen while watching video streams encoded with H.264 in older browser versions.
- Memory usage increased when using the SDK with the Virtual Background or Image Enhancer extension.
- The SDK continued to use the expired token during reconnection attempts after generating a new token using the
renewToken
method.
v4.17.2
v4.17.2 was released on April 20, 2023.
Fixed issues
This release fixes the issue where the getCurrentFrameData
method returned abnormal data.
v4.17.1
v4.17.1 was released on April 19, 2023.
Compatibility changes
To accommodate changes related to screen sharing in Chrome 107 (refer to Chrome documentation), this release introduces the following changes to the config
parameter in the createScreenVideoTrack
method:
- Deprecates the
screenSourceType
property. If you are using this property, replace it with the newly addeddisplaySurface
property after upgrading to this version. - Adds new properties:
selfBrowserSurface
,surfaceSwitching
, andsystemAudio
.
For detailed explanations of these properties, see ScreenVideoTrackInitConfig in the API reference.
Improvements
Improved flexibility in setting video profiles
This release improves the flexibility in setting video profiles for different types of video tracks:
- You can now specify the resolution and the frame rate when calling
createCustomVideoTrack
to create a custom video track, by passing in values for thewidth
,height
, andframeRate
parameters. - After creating a screen track or a custom video track, you can dynamically adjust the video profile using
LocalVideoTrack.setEncoderConfiguration
. Please note that there is a known issue with calling this method on a screen track in certain versions of macOS Safari. See issue details.
For details, see more about setting video profiles.
Other improvements
This release also includes the following improvements:
-
The time required to create tracks using
createMicrophoneAudioTrack
orcreateMicrophoneAndCameraTracks
on Safari browsers is reduced. -
When you have two
AgoraRTCClient
objects created locally, you have the option to block certain callbacks from oneAgoraRTCClient
to another. These callbacks include those triggered when joining or leaving a channel, and publishing or unpublishing streams. For example, if you are using Client A for publishing a screen track and Client B for publishing a camera track, and you enable this feature to block callbacks, Client A and B will not receive the following callbacks from each other:AgoraRTCClient.on("user-published")
AgoraRTCClient.on("user-joined")
AgoraRTCClient.on("user-unpublished")
AgoraRTCClient.on("user-left")
AgoraRTCClient.on("published-user-list")
AgoraRTCClient.on("user-info-update")
To enable this feature, contact technical support.
API changes
Added
displaySurface
(replacement forscreenSourceType
),selfBrowserSurface
,surfaceSwitching
, andsystemAudio
in theScreenVideoTrackInitConfig
interfacewidth
,height
, andframeRate
in thecreateCustomVideoTrack
methodLocalVideoTrack.setEncoderConfiguration
Deleted
ILocalVideoTrack.setBeautyEffect
v4.17.0
v4.17.0 was released on March 22, 2023.
New features
Dynamic switching of local video streams
This release adds the ILocalVideoTrack.replaceTrack
method to increase the flexibility to switch local video tracks.
For example, to switch from one camera to another before v4.17.0, you needed to call IAgoraRTCClient.unpublish
to
unpublish the current track and then call IAgoraRTCClient.publish
to publish a new track.
As of v4.17.0, you can call ILocalVideoTrack.replaceTrack
directly.
Improvements
Optimized reconnection mechanism
As of v4.17.0, the SDK defaults to showing the last video frame before disconnection during reconnection, which prevents a black screen during the reconnection process. This optimization is not available on Safari due to Safari's limitations.
Other improvements
This release also includes the following improvements:
- The accuracy of SDK-related quality metrics on Analytics is improved.
- The time required to join a channel is reduced. This optimization is not available on Firefox due to Firefox's limitations.
API changes
Added
ILocalVideoTrack.replaceTrack
Deleted
ILocalVideoTrack.setBeautyEffect
Fixed issues
On Safari on iOS 14.7 and later, performing subscribing and unsubscribing operations repeatedly to multiple audio streams could result in not hearing remote users.
v4.16.1
Voice Calling v4.16.1 was released on February 7, 2023.
Fixed issues
This release fixes the following issue:
- When using Video SDK for Web v4.16.0, the video freeze rate showed in Agora Analytics is much higher than the correct value.
v4.16.0
Voice Calling v4.16.0 was released on January 5, 2023.
Improvements
This release adds the following enhancements:
Compatibility for deprecated RTCMediaStreamTrackStats on Chrome
Chrome plans to deprecate the stats dictionary RTCMediaStreamTrackStats
.
See the service announcement on discuss-webrtc@googlegrooups.com.
This change affects the following media track statistics returned by the SDK:
Statistics | Affected fields |
---|---|
LocalVideoTrackStats | sendFrameRate sendResolutionHeight sendResolutionWidth |
RemoteVideoTrackStats | receiveFrameRate receiveResolutionHeight receiveResolutionWidth renderFrameRate receiveDelay |
RemoteAudioTrackStats | receiveDelay receiveLevel |
To ensure the accuracy of these media track statistics on Chrome, please upgrade the SDK to v4.16.0 or later as soon as possible.
Other improvements
This version of the SDK also includes the following improvements:
- The cause of the
HTMLMediaElement
error event is now recorded in the log. - The size of the SDK package is reduced.
Fixed issues
This release fixes the following issues:
- Media operations failed when the SDK was attempting to reconnect to the network.
- When relaying media streams across channels,
ChannelMediaRelayConfiguration.addDestChannelInfo
could not setuid
to0
to identify the relay stream in the destination channel. - Some known issues on iOS 14.x.
v4.15.1
v4.15.1 was released on December 2, 2022.
Fixed issues
This release fixes the following issue:
- No audio was received on iOS 13.7.
v4.15.0
v4.15.0 was released on October 31, 2022.
New features
The latest features in this release are:
Audio stream filter (Beta)
v4.15.0 introduces filtering audio streams based on volume. Once this function is enabled, Agora SD-RTN™ ranks all subscribed audio streams by volume. By default, the three audio streams with the highest volume are transported to others in the channel. To change the number of audio streams to be transported, contact support@agora.io.
Agora enables channel hosts to control whether the audio streams being published are filtered based on volume. Streams that are not filtered bypass this filter mechanism and are transported directly to the receivers. In scenarios with a large number of publishers, enabling this function helps reduce the bandwidth and device system pressure for the receivers.
To enable this function, contact support@agora.io.
VP9 codec (Beta)
Video SDK for Web v4.15.0 adds support for the VP9 codec in the following browsers:
Supported browsers① | |
---|---|
Desktop | |
Android | |
iOS | N/A |
To start a call using the VP9 codec, apps you connect to built using for Android, iOS, Windows, or macOS must use Video SDK v4.0.1 or greater.
CSP violation callback
v4.15.0 adds the AgoraRTC.onSecurityPolicyViolation
callback. When Agora fails to load a resource or send a request due to Content Security Policy(CSP) violations, the Video SDK triggers this callback. When you receive this callback, modify your CSP configuration to ensure that you can access Agora-related services.
Improvements
The SDK has the following improvements:
- The accuracy of network quality reported by
AgoraRTCClient.on("network-quality")
in certain scenarios has increased. - Resumption of audio or video streams when the user switches between Wi-Fi networks is faster.
API changes
Added
IAgoraRTC.onSecurityPolicyViolation
Compatibility changes
Cloud Proxy default mode has changed. In Video SDK for Web v4.15.0, the mode
parameter in startProxyServer
defaults to 3
. This represents the Force UDP cloud proxy mode. In this mode, Video SDK always transmits data over UDP. For details, see Restricted network connection with Cloud Proxy.
v4.14.2
v4.14.2 was released on October 27, 2022.
Fixed issues
This release fixes the following issue:
- When using WeChat browsers on iOS 14.x, no audio is received from the first channel the user subscribes to.
v4.14.1
v4.14.1 was released on October 24, 2022.
Fixed issues
This release fixes the following issues:
- On Electron v17.x, screen sharing did not work properly. To solve this issue, add the following code in the main process:
- On desktop Safari, if autoplay was blocked for all videos, they kept trying to replay resulting in video freeze.
- On mobile browsers, the video freeze rate calculated by the SDK was higher than the actual value when the browser was running in the background.
- In Android WebView, the default poster (a gray play button) of the video element showed before video playback.
- Media stream relay failed after the SDK resumed connection to the network.
- During a media stream relay, the SDK continued to send heartbeats after the user left the source channel.
v4.14.0
v4.14.0 was released on August 31, 2022.
Compatibility changes
getVolumeLevel accuracy improvement
As of v4.14.0, the SDK calibrates the calculation of the volume returned in getVolumeLevel
. The volume range is still [0,1], where 1 represents the highest audio level. If your business scenario depends on the volume returned in getVolumeLevel
(for example, a speaker icon shows according to the volume), ensure that you check the returned volume after upgrading to v4.14.0.
Fixed issues
This release fixes the following issue:
- The received Opus stereo audio had no stereo effect.
- On versions earlier than Chrome 76, the
decodeFrameRate
returned by thegetRemoteVideoStats
method was 0. - On WeChat browsers running on iOS 14.1 and 14.2, the first subscribed audio stream was silent.
- After calling
LocalVideoTrack.setBeautyEffect
to enable image enhancement, callingLocalVideoTrack.unpipe
caused an error. - On Windows Chrome 103 and later versions, enabling the dual-stream mode did not take effect in certain scenarios.
v4.13.0
v4.13.0 was released on July 25, 2022.
New features
Improvements
AI Noise Suppression and virtual background
The AI Noise Suppression extension and virtual background extension are converted from beta release to official release. To experience the AI Noise Suppression or virtual background extension, contact support@agora.io.
Callback for token expiration
v4.13.0 improved the logic of triggering the callback for token expiration. If a token expires when the user's device is in sleep mode or disconnected from network, the SDK triggers the token-privilege-did-expire
event when the device resumes operation and attempts to reconnect to the SDK.
API changes
Added
RemoteAudioTrack.pipe
RemoteAudioTrack.unpipe
v4.12.2
v4.12.2 was released on July 7, 2022. This release improved the automatic mode for SDK connectivity (In this mode, the SDK first attempts a direct connection to Agora SD-RTN™; if the attempt fails, the SDK automatically switches to TCP/TLS 443).
v4.12.1
v4.12.1 was released on June 27, 2022. This release fixed the following issues:
- Subscribing to remote streams occasionally failed after disconnection.
v4.12.0
v4.12.0 was released on June 15, 2022.
Improvements
Media processing extensions
Media processing extensions have the following changes:
- The Image Enhancement Extension (Beta) is released. This extension incorporates and upgrades the built-in image enhancement feature (enabled by setBeautyEffect)) of the Agora Web SDK 4.x. You can adjust parameters including the contrast, brightness, and smoothness levels, in order to touch up the image for effects such as skin lightening and skin smoothing. For details, see Use the Image Enhancement Extension.
Fixed issues
v4.12.0 fixed the issue that when dual-stream mode was enabled on Safari, calling methods such as Track.setEnabled(false)
and Track.close()
could not turn off the camera indicator light.
v4.11.1
v4.11.1 was released on May 9, 2022. This release fixed the following issues:
- Subscribing to audio streams might cause no sound on Firefox.
- Compatibility issues occurred in Safari on iOS 12 and in the WeChat built-in browser on iOS 13.
v4.11.0
v4.11.0 was released on April 1, 2022.
Compatibility changes
As of v4.11.0, the SDK adopts an automatic mode by default to ensure connectivity. In this mode, the SDK first attempts a direct connection to Agora SD-RTN™; if the attempt fails, the SDK automatically switches to TCP/TLS 443. You can listen for such auto-switch events through client.on("join-fallback-to-proxy")
.
Improvements
Channel capacity improvement
As of v4.11.0, a single channel can support up to 128 concurrent online hosts, who can publish media streams at the same time. The number of audience members in a channel is unlimited. Each host or audience member can subscribe to a maximum of 50 hosts at the same time.
To experience this improvement, contact support@agora.io.
Fixed issues
v4.11.0 fixed the following issues:
-
Angular’s dependency zone.js caused an error when
Promise.finally
was called in the SDK. -
On Chrome, AEC could not be enabled when sending stereo sound.
-
On Chrome 100, the SDK reported inaccurate statistics for the decoding frame rate and sending frame rate.
-
When dual-stream mode was enabled, calling
unpublish
without parameters caused the method call to fail.
v4.10.2
v4.10.2 was released on March 24, 2022. This release fixed the issue that calling join
in certain scenarios might cause proxy exceptions.
v4.10.1
v4.10.1 was released on March 17, 2022 and added the dependency of TypeScript type definitions for Agora Extension agora-rte-extension
in package.json
. If you use TypeScript for type checking, Agora suggests that you update TypeScript to v4.3.2 or later.
v4.10.0
v4.10.0 was released on March 11, 2022.
New features
API changes
Added
-
AgoraRTC.registerExtensions
-
LocalTrack.pipe
-
LocalTrack.unpipe
-
LocalTrack.processorDestination
v4.9.4
v4.9.4 was released on March 16, 2022 and fixed the failure to access localStorage when loading the SDK in an iFrame in Chrome Incognito mode.
v4.9.3
v4.9.3 was released on March 3, 2022. This release fixed several internal issues.
v4.9.1
v4.9.1 was released on February 24, 2022. This release fixed several internal issues.
v4.9.0
v4.9.0 was released on February 17, 2022.
New features
Cloud Proxy Force TCP mode
v4.9.0 adds Force TCP mode for the Agora Cloud Proxy service. In this mode, the SDK always transmits data over TLS 443. To use this mode, set mode
as 5 when calling startProxyServer
.
Improvements
- Improves the accuracy of the
client.on("is-using-cloud-proxy")
event.
Issues fixed
v4.9.0 fixed the following issues:
-
When using v4.8.0 together with Angular and zone.js, users might fail to join a channel because zone.js modified the promise object.
-
Several known issues on iOS.
API changes
Added
client.on("join-fallback-to-proxy")
v4.8.2
v4.8.1
v4.8.1 was released on January 6, 2022. This release fixed an internal issue.
v4.8.0
v4.8.0 was released on December 29, 2021.
New features
Improvements
v4.8.0 made some internal improvements.
Issues fixed
v4.8.0 fixed the following issues:
-
When receiving streams on iOS Safari as an audience member, the host’s voice could be heard, but the volume returned by the
client.on("volume-indicator")
event was 0. -
When sending streams on iOS Safari, if you first call
setDevice
and thensetEncoderConfiguration
, the SDK returns an error.
API changes
v4.7.3
v4.7.3 was released on November 17, 2021. This release avoided the issue that on the Safari browser in iOS 15.1, after a call was interrupted, the Voice Calling failed to resume playing the remote media.
v4.7.2
v4.7.2 was released on October 14, 2021, with the following changes:
- Fixed the issue that calling
AgoraRTC.checkSystemRequirements()
on the Edge browser only returnedfalse
.
v4.7.1
v4.7.1 was released on September 13, 2021. This release fixed some issues on Safari 11 and iPad Chrome.
v4.7.0
v4.7.0 was released on September 1, 2021.
Compatibility changes
As of v4.7.0, if you enable media stream encryption, the SDK automatically disables encryption and resets the encryption configurations after a user leaves the channel. To re-enable the encryption, call setEncryptionConfig
before the user joins the channel again.
Improvements
This release makes the following improvements:
-
Optimizes the end-user experience of the Voice Calling on the mobile browser.
-
Improves the accuracy of the volume obtained by
getVolumeLevel
. -
Adds the support of enabling dual-stream mode on Safari.
Issues fixed
This release fixed the following issues:
-
After calling
LocalAudioTrack.setVolume
to adjust the local volume, the local user could not perceive the volume change. -
When the log level was set to none, the SDK nevertheless output the initialization logs.
-
The promise returned by
LocalAudioTrack.setDevice
could get stuck in a pending state.
v4.6.3
v4.6.3 was released on August 10, 2021. This release fixed an occasional issue: After the user closes a tab or browser on the local client, the remote client does not receive the user-left
event immediately.
v4.6.2
v4.6.2 was released on July 30, 2021. This release fixed the issue that the SDK did not destroy all the media players created during a call or live streaming. Chrome 92 introduced a limit on the number of media players that can be created in a particular tab: 75 for the desktop. After you play tracks several times, the undestroyed media players in the SDK might cause the playback failure in the tab.
v4.6.1
v4.6.1 was released on July 21, 2021. This release fixed an internal error.
v4.6.0
v4.6.0 was released on July 16, 2021.
New features
Interactive Live Streaming Standard
As of v4.6.0, the Voice Calling supports Interactive Live Streaming Standard. The major difference between Agora Interactive Live Streaming Standard and Agora Live Interactive Streaming Premium is the latency level on the audience’s client:
-
Interactive Live Streaming Premium: Ultra-low latency (400 ms to 800 ms) from the host’s client to an audience member’s client.
-
Interactive Live Streaming Standard: Low latency (1500 ms to 2000 ms) from the host’s client to an audience member’s client.
The charges for Standard and Premium are different. For details, see the product overview and pricing of Interactive Live Streaming Standard.
You can set the latency level of the audience role in the following two ways:
-
When calling
createClient
to create a client object, set therole
parameter as"audience"
and thelevel
parameter inclientRoleOptions
as1
. -
When calling the
setClientRole
method, set therole
parameter as"audience"
and the level parameter inclientRoleOptions
as1
.
The mute states of local tracks
v4.6.0 adds the localTrack.setMuted
method to stop sending the media data of local tracks. The differences between this method and localTrack.setEnabled
are as follows:
- Calling
setEnabled(true)
takes longer to resume sending the media data than by than callingsetMuted(false)
.
Improvements
Dealing with autoplay blocking
On most web browsers, inaudible media are not affected by autoplay blocking. However, on iOS Safari with low power mode enabled, or on other iOS in-app browsers that implement a custom autoplay policy, such as the WeChat browser, the autoplay of inaudible media is blocked.
Issues fixed
v4.6.0 fixes the following issues:
-
The method call of
localAudioTrack.setVolume
did not take effect immediately. -
Using multiple clients on one web page caused unexpected issues.
-
The SDK did not check whether the App ID was a string of 1 to 256 bytes in size.
API changes
Added
-
localTrack.setMuted
-
onAutoplayFailed
-
clientRoleOptions
inClientConfig
-
options
in thesetClientRole
method
Deprecated
onAudioAutoplayFailed
v4.5.0
v4.5.0 was released on May 25, 2021.
New features
AEC (Acoustic Echo Canceller) for the audio played on the local client
In a scenario where multiple users play a media file at the same time, such as watching a movie together, if the user A plays the media file through HTMLMediaElement on Chrome with a speaker, the SDK captures the audio played by a speaker together with the voice of the user A. The other users can hear the audio sent by the user A and the audio played locally, which sounds like an echo. To deal with this echo issue, v4.5.0 adds the processExternalMediaAEC
method. You can call processExternalMediaAEC
and pass in the HTMLMediaElement
to enable the AEC for the audio played on the local client.
Improvements
Channel encryption
To strengthen the security of the key, v4.5.0 adds two encryption modes, "aes-128-gcm2"
and "aes-256-gcm2"
, which use the PBKDF2 (Password-Based Key Derivation Function 2). When calling setEncryptionConfig
and setting the encryption mode as "aes-128-gcm2"
or "aes-256-gcm2"
, you need to set secret
and salt
. For how to generate and set secret
and salt
, see Media Stream Encryption.
Network geofencing
As of v4.5.0, when calling setArea to specify the region for connection, you can use the areaCode
parameter to specify a large region and use the excludedArea
parameter to specify a small region. The region for connection is the large region excluding the small region. You can only specify the large region as "GLOBAL"
. For details, see Network Geofencing.
Issues fixed
v4.5.0 fixes the following issues:
-
The
OptimizationMode
setting did not take effect. -
On iOS, when the Voice Calling captures media, noises might occur on the local client.
-
On Chrome, after you called
remoteAudioTrack.setVolume
to adjust the volume, if the playback was paused and then resumed, the volume changed back to the original one. -
On Chrome, the
LocalAudioTrack.setVolume
method did not take effect.
API changes
Added
-
processExternalMediaAEC
-
clientRoleOptions
inClientConfig
-
options
in thesetClientRole
method -
salt
in thesetEncryptionConfig
method -
"aes-128-gcm"
and"aes-256-gcm"
inEncryptionMode
-
excludedArea
in thesetArea
method
v4.4.0
v4.4.0 was released on April 2, 2021.
Compatibility changes
Firewall domain whitelist
As of v4.4.0, the destination domains required for your firewall whitelist changes to:
.agora.io .edge.agora.io .sd-rtn.com .edge.sd-rtn.com
If you upgrade the SDK to v4.4.0, update your firewall domain whitelist to ensure you can use Agora products in environments with restricted network access.
Improvements
AES-GCM encryption mode
In scenarios requiring high security, to ensure the confidentiality, integrity and authenticity of data, and to improve the computational efficiency of data encryption, v4.4.0 adds the following encryption modes in EncryptionMode
:
-
"aes-128-xts"
: 128-bit AES encryption, GCM mode. -
"aes-256-gcm"
: 256-bit AES encryption, GCM mode.
Once you enable the built-in encryption, all users in the same channel must use the same encryption mode and key, including the server-side users, such as the Agora recording service.
Cloud proxy
Error code
If you start media capturing after disabling the media capture device on Windows, the error thrown by the SDK changes from UNEXPECTED_ERROR
to NOT_READABLE
.
Issues fixed
v4.4.0 fixes the following issues:
-
The SDK did not trigger the
"first-frame-decoded"
event for a remote audio track. -
The return value of
AgoraRTC.checkSystemRequirement
was inaccurate. -
When the network had multiple IP addresses, the cloud proxy service did not take effect.
API changes
Added
-
client.on("is-using-cloud-proxy")
-
"aes-128-gcm"
and"aes-256-gcm"
inEncryptionMode
v4.3.0
v4.3.0 was released on January 26, 2021.
New features
Cloud proxy
This release optimizes the Agora cloud proxy architecture and enhances the connectivity of the Voice Calling in environments with restricted network access. The optimized Agora cloud proxy service also supports regional connection.
You can contact (mailto:support@agora.io) to apply for using the optimized Agora cloud proxy service and set the mode
parameter as 3
when calling startProxyServer
. For details, see Cloud proxy service.
v4.2.1
v4.2.1 was released on December 23, 2020. This release fixed the incorrect error that the SDK throws when you pass an illegal parameter in the client.publish method.
v4.2.0
v4.2.0 was released on December 1, 2020.
New features
Regional connection
This release adds the AgoraRTC.setArea
method for specifying the region for connection. After specifying the region, the SDK connects to the Agora servers within that region. The following regions are supported:
-
China
-
North America
-
Europe
-
Asia, excluding Mainland China
-
Japan
-
India
-
Global
This advanced feature applies to scenarios that have regional restrictions.
Network quality of remote users
This release adds the AgoraRTCClient.getRemoteNetworkQuality
method for getting the uplink and downlink network quality of all the remote users to whom the local user subscribes.
Cloud proxy
This release changes the mode
parameter of the AgoraRTCClient.startProxyServer
method from boolean
to number
.
Improvements
- After you call
AgoraRTCClient.setEncryptionConfig
to enable the built-in encryption, when the user uses a weak secret, the SDK outputs a warning message to the Web Console and prompts the user to use a strong secret. A strong secret must contain at least eight characters and be a combination of uppercase and lowercase letters, numbers, and special characters.
Fixed issues
-
After an audience member tried to publish a local track in live mode but failed, the audience member could not publish this track even after switching the role to host.
-
After dual-stream mode was enabled, a bug during the disconnection would occasionally cause publishing to fail after reconnection.
-
Due to Safari’s limited support for WebAudio, the audio of
BufferSourceAudioTrack
could be distorted. -
When the SDK gained device permission for the first time, it did not trigger the media device change events (
onMicrophoneChanged
,onCameraChanged
, oronPlaybackDeviceChanged
). The SDK only triggered these events for a subsequent device change.
API changes
Added
AgoraRTC.setArea
AgoraRTCClient.getRemoteNetworkQuality
Changed
- Changed the type of the
mode
parameter inAgoraRTCClient.startProxyServer
fromboolean
tonumber
v4.1.1
v4.1.1 was released on October 27, 2020. This release fixed the following issues:
- Improved the accuracy of the
event_network_quality
event.
- After calling
unsubscribe
to unsubscribing from an unpublished track of a remote user, the subsequent subscribing and unsubscribing operations failed to take effect.
v4.1.0
v4.1.0 was released on September 4, 2020.
New features
Audio playback device management
v4.1.0 adds the following APIs to manage audio playback devices:
-
setPlaybackDevice
: Sets the audio playback device, for example, the speaker. This method supports Chrome only. -
getPlaybackDevices
: Retrieves the audio playback devices available. -
onPlaybackDeviceChanged
: Occurs when an audio playback device is added or removed.
Improvements
-
Fully supports Chromium-based versions of Microsoft Edge (versions 80 and later).
-
Improves the accuracy of the
network-quality
event. -
Supports sharing audio when sharing Chrome tabs on macOS.
Fixed issues
-
Occasional failure of reconnection after enabling dual-stream mode.
-
Occasional failure to call
setEnabled
after leaving the channel. -
Failure to push streams to CDN with transcoding and without transcoding at the same time.
-
Occasional failure to automatically re-subscribe to the remote streams after disconnection, indicated by the
UNEXPECTED_RESPONSE: ERR_SUBSCRIBE_REQUEST_INVALID
error. -
Failure to join different channels with the same UID in one browser tab.
-
Occasional misreport on connection states due to frequent channel join and leave.
API changes
Added
-
AgoraRTC.getPlaybackDevices
-
LocalAudioTrack.setPlaybackDevice
-
RemoteAudioTrack.setPlaybackDevice
-
AgoraRTC.onPlaybackDeviceChanged
-
Client.getLocalAudioStats
-
Client.getRemoteAudioStats
Deprecated
v4.0.1
v4.0.1 was released on July 18, 2020. This release fixed the following issues:
- Failure to publish local tracks on Chrome 70.
- Publish operation may not be aborted when leaving the channel.
v4.0.0
v4.0.0 was released on July 15, 2020.
Compatibility changes
v4.0.0 deletes the LocalTrack.setMute
method and adds the LocalTrack.setEnabled
method for enabling or disabling a local track. The advantages of this change are as follows:
-
Eliminates the concept of "mute" to avoid confusion between mute states and publishing states.
-
In versions earlier than v4.0.0, the SDK triggers the
Client.on("user-mute-updated")
callback when the remote user callssetMute
to change the mute state. -
As of v4.0.0, the SDK triggers the existing
Client.on("user-unpublished")
orClient.on("user-published")
callbacks when the remote user callssetEnabled
to enable or disable a track.
The
setEnabled
method changes media input behaviors, so it is an asynchronous operation and returns the result through thePromise
object.
New features
Improvements
-
The
Client.subscribe
method. -
The
Client.on("user-published")
andClient.on("user-unpublished")
callbacks.
Fixed issues
v4.0.0 fixed the following issues:
- After the local user called
unpublish
, the SDK triggerred theClient.on("user-left")
callback on the remote side.
-
Occasional publishing failure when calling
publish
andunpublish
frequently. -
The
Client.on("network-quality")
callback was inaccurate.
API changes
Added
-
The
Client.localTracks
interface -
The
LocalTrack.setEnabled
method
Updated
-
Removes the value of
"all"
from the mediaType parameter inClient.subscribe
. -
The
mediaType
parameter in theClient.on("user-published")
andClient.on("user-unpublished")
callbacks does report"all"
Deprecated
- The
LocalAudioTrackStats.muteState
property
- The
RemoteAudioTrackStats.muteState
property
Deleted
-
The
Client.on("user-mute-updated")
callback -
The
LocalTrack.setMute
method -
The
AgoraRTCRemoteUser.audioMuted
property
- The
LocalTrack.getUserId
method
Notifications
2022.10
- After you enable Notifications, your server receives the events that you subscribe to in the form of HTTPS requests.
- To improve communication security between the Notifications and your server, Agora SD-RTN™ uses signatures for identity verification.
- As of this release, you can use Notifications in conjunction with this product.
AI Noise Suppression
Agora charges additionally for this extension. See Pricing.
v1.1.0
Improvement
This release improves the calculation performance of the AI-powered noise suppression algorithm.
New features
This release adds the following APIs and parameters:
- APIs:
checkCompatibility
: Checks whether the AI Noise Suppression extension is supported on the current browser.setMode
: Sets the noise suppression mode as AI noise suppression or stationary noise suppression.setLevel
: Sets the AI noise suppression level.
- Parameters:
elapsedTime
inonoverload
: Reports the time in ms that the extension needs to process one audio frame.
For API details, see AI Noise Suppression.
Compatibility changes
This release brings the following changes:
- AI Noise Suppression supports Agora Video SDK for Web v4.15.0 or later.
- The extension has Wasm dependencies only. Because JS dependencies are removed, you need to publish the Wasm files located in the
node_modules/agora-extension-ai-denoiser/external
directory again. If you have enabled the Content Security Policy (CSP), you need to modify the CSP configuration. See AI Noise Suppression for details. - The audio data is dumped in PCM format instead of WAV format.
- To adjust the intensity of noise suppression, best practice is to call
setLevel
.
v1.0.0
First release.