Skip to main content

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 and leave
  • publish and unpublish
  • subscribe and unsubscribe

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 or AgoraRTC.on("camera-changed")
  • onMicrophoneChanged or AgoraRTC.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:

// Previous event listening (earlier than v4.18.0)
AgoraRTC.onCameraChanged = (info) => {
console.log("camera changed!", info.state, info.device);
};
// New event listening (v4.18.0 and later)
AgoraRTC.on("camera-changed", (info) => {
console.log("Camera changed!", info.state, info.device);
});
Copy

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, see onAutoplayFailed 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 and playbackSpeed property to IBufferSourceAudioTrack
  • The following methods inherited from the EventEmitter class to the IAgoraRTC class:
    • on
    • off
    • once
    • getListeners
    • removeAllListeners
These methods support the following event names as parameters:
  • "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

Chrome 107 prevents users from sharing the current tab by default. If you need to allow users to share the current tab on Chrome 107 and later versions, please upgrade your SDK to v4.17.1 or later as soon as possible.

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 added displaySurface property after upgrading to this version.
  • Adds new properties: selfBrowserSurface, surfaceSwitching, and systemAudio.

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 the width, height, and frameRate 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 or createMicrophoneAndCameraTracks on Safari browsers is reduced.

  • When you have two AgoraRTCClient objects created locally, you have the option to block certain callbacks from one AgoraRTCClient 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 for screenSourceType), selfBrowserSurface, surfaceSwitching, and systemAudio in the ScreenVideoTrackInitConfig interface
  • width, height, and frameRate in the createCustomVideoTrack method
  • LocalVideoTrack.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:

StatisticsAffected 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:

    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 set uid to 0 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
  • Chrome 65 or later
  • Firefox 69 or later
  • Edge 79 or later
  • Android
  • Chrome 68 or later
  • Wechat v8.0.6 or later
  • Other apps that use WKWebView: WebView v55.0.28883.91 or later
  • iOSN/A
    ① To ensure the best user experience, best practice is to use the latest version of the browsers listed above.

    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:
      const { ipcMain, desktopCapturer } = require("electron");

      ipcMain.handle("DESKTOP_CAPTURER_GET_SOURCES", (event, opts) => desktopCapturer.getSources(opts));
      Copy
    • 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 the getRemoteVideoStats 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, calling LocalVideoTrack.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:

    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 then setEncoderConfiguration, 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 returned false.

    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 the role parameter as "audience" and the level parameter in clientRoleOptions as 1.

    • When calling the setClientRole method, set the role parameter as "audience" and the level parameter in clientRoleOptions as 1.

    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 calling setMuted(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 in ClientConfig

    • options in the setClientRole 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 in ClientConfig

    • options in the setClientRole method

    • salt in the setEncryptionConfig method

    • "aes-128-gcm" and "aes-256-gcm" in EncryptionMode

    • excludedArea in the setArea 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" in EncryptionMode

    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, or onPlaybackDeviceChanged). 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 in AgoraRTCClient.startProxyServer from boolean to number

    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 calls setMute to change the mute state.

    • As of v4.0.0, the SDK triggers the existing Client.on("user-unpublished") or Client.on("user-published") callbacks when the remote user calls setEnabled to enable or disable a track.

    The setEnabled method changes media input behaviors, so it is an asynchronous operation and returns the result through the Promise object.

    New features

    Improvements

    • The Client.subscribe method.

    • The Client.on("user-published") and Client.on("user-unpublished") callbacks.

    Fixed issues

    v4.0.0 fixed the following issues:

    • After the local user called unpublish, the SDK triggerred the Client.on("user-left") callback on the remote side.
    • Occasional publishing failure when calling publish and unpublish 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 in Client.subscribe.

    • The mediaType parameter in the Client.on("user-published") and Client.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 in onoverload: 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.

    Voice Calling