This page provides the release notes for the Agora SDK for Electron.
The Agora SDK for Electron is developed upon Agora SDK for macOS and Agora SDK for Windows, with the Node.js C++ plug-in units. The Electron SDK supports the following scenarios:
- Voice and Video Call
- Live Interactive Audio and Video Streaming
v3.0.0 was released on April 7th, 2020.
In this release, Agora improves the user experience under poor network conditions for both the
LIVE_BROADCASTING profiles through the following measures:
- Adopting a new architecture for the
- Upgrading the last-mile network strategy for both the
LIVE_BROADCASTINGprofiles, which enhances the SDK's anti-packet-loss capacity by maximizing the net bitrate when the uplink and downlink bandwidth are insufficient.
To deal with any incompatibility issues caused by the architecture change, Agora uses the fallback mechanism to ensure that users of different versions of the SDKs can communicate with each other: if a user joins the channel from a client using a previous version, all clients using v3.0.0 automatically fall back to the older version. This has the effect that none of the users in the channel can enjoy the improved experience. Therefore we strongly recommend upgrading all your clients to v3.0.0.
We also upgrade the On-premise Recording SDK to v3.0.0. Ensure that you upgrade your On-premise Recording SDK to v3.0.0 so that all users can enjoy the improvements brought by the new architecture and network strategy.
1. Dual-stream mode not enabled in the
As of v3.0.0, the native SDK does not enable the dual-stream mode by default in the
COMMUNICATION profile. Call the
enableDualStreamMode (true) method after joining the channel to enable it. In video scenarios with multiple users, we recommend enabling the dual-stream mode.
1. Multiple channel management
To enable a user to join an unlimited number of channels at a time, this release adds the
AgoraRtcChannel class. By creating multiple
AgoraRtcChannel objects, a user can join the corresponding channels at the same time.
After joining multiple channels, users can receive the audio and video streams of all the channels, but publish one stream to only one channel at a time. This feature applies to scenarios where users need to receive streams from multiple channels, or frequently switch between channels to publish streams.
2. Adjusting the playback volume of the specified remote user
adjustUserPlaybackSignalVolume for adjusting the playback volume of a specified remote user. You can call this method as many times as necessary in a call or live interactive streaming to adjust the playback volume of different remote users, or to repeatedly adjust the playback volume of the same remote user.
3. Detecting local voice activity
This release adds the
report_vad(boolean) parameter to the
enableAudioVolumeIndication method to enable local voice activity detection. Once it is enabled, you can check the
groupAudioVolumeIndication callback for the voice activity status of the local user.
1. Audio profiles
To meet the need for higher audio quality, this release adjusts the corresponding audio profile (
setAudioProfile in the
|3.0.0||A sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 52 Kbps.|
|Earlier than v3.0.0|
2. Mirror mode
This release enables you to set a mirror effect for the stream to be encoded:
Setting a mirror mode for the stream to be encoded: This release adds the
mirrorMode property to the
VideoEncoderConfiguration interface for setting a mirror effect for the stream to be encoded and transmitted.
3. Quality statistics
Adds the following properties in the
RtcStats interface for providing more in-call statistics, making it easier to monitor the call quality and memory usage in real time:
4. Screen sharing
This release enables window sharing of UWP (Universal Windows Platform) applications when you sharing a screen by the windows ID.
5. Watermark in Live Streaming
This release enables the watermark function for users to add a PNG file to the local live streaming as a watermark. The
clearVideoWatermark methods can add and delete watermarks in live interactive streaming.
6. Supporting more audio sample rates for recording
To enable more audio sample rate options for recording, this release adds a new
startAudioRecording method with a
sampleRate parameter. In the new method, you can set the sample rate as 16, 32, 44.1 or 48 kHz.
This release enables interoperability between the Electron SDK and the Web SDK by default, and deprecates the
- Audio issues relating to audio mixing, audio encoding, and echoing.
- Video issues relating to the watermark, aspect ratio, video sharpness, black outline appearing while screen sharing and toggling to full-screen.
- Other issues relating to app crashes, log file, and unstable service during CDN live streaming.
setRemoteSubscribeFallbackOptionmethod, which should work in the
LIVE_BROADCASTINGprofile only, also works in the
- In some one-to-one call, the downlink media stream falls back to audio-only under poor network conditions.
- Occasionally, the UI of the system window is abnormal on macOS 10.15.
When connected to a headset or Bluetooth, the macOS device changes its audio route to be uniform as the audio route shown in the device manager.
mirrorModeproperty in the
memoryAppUsageInKbytesproperties in the
report_vadparameter in the
firstRemoteVideoFrame, replaced by
firstRemoteAudioFrame, replaced by
streamUnpublished, replaced by
v2.9.0 is released on Aug 30, 2019.
Reporting the state of the remote video
This release extends the
remoteVideoStateChanged callback with more states of the remote video:
FAILED(4). It adds a reason parameter to the callback to indicate why the remote video state changes. The original
remoteVideoStateChanged callback is deleted. If you upgrade your Native SDK to the latest version, ensure that you re-implement the
The new callback reports most of the remote video states, and therefore deprecates the following callbacks. You can still use them, but we do not recommend doing so.
1. Faster switching to another channel
This release adds the
switchChannel method to enable the audience in a
LIVE_BROADCASTING channel to quickly switch to another channel. With this method, you can achieve a much faster switch than with the
joinChannel methods. After the audience successfully switches to another channel by calling the
switchChannel method, the SDK triggers the
joinedChannel callbacks to indicate that the audience has left the original channel and joined a new one.
2. Channel media stream relay
This release adds the following methods to relay the media streams of a host from a source channel to a destination channel. This feature applies to scenarios such as online singing contests, where hosts of different
LIVE_BROADCASTING channels interact with each other.
During the media stream relay, the SDK reports the states and events of the relay with the
3. Reporting the local and remote audio state
This release adds the
remoteAudioStateChanged callbacks to report the local and remote audio states. With these callbacks, the SDK reports the following states for the local and remote audio:
- The local audio:
FAILED(3). When the state is
FAILED(3), see the
errorparameter for troubleshooting.
- The remote audio:
FAILED(4). See the
reasonparameter for why the remote audio state changes.
4. Reporting the local audio statistics
This release adds the
localAudioStats callback to report the statistics of the local audio during a call, including the number of channels, the sending sample rate, and the average sending bitrate of the local audio.
1. Reporting more statistics of the in-call quality
RtcStats: The total number of the sent audio bytes, sent video bytes, received audio bytes, and received video bytes during a session.
LocalVideoStats: The encoding bitrate, the width and height of the encoding frame, the number of frames, and the codec type of the local video.
RemoteVideoStats: The packet loss rate of the remote video.
2. Improving the video quality of live interactive streaming
This release minimizes the video freeze rate under poor network conditions, improves the video sharpness, and optimizes the video smoothness when the packet loss rate is high.
3. Improving the screen sharing quality
This release improves the sharpness of text during screen sharing in the
COMMUNICATION profile, particularly when the network condition is poor. Note that this improvement takes effect only when you set
4. Other Improvements
- Improves the audio quality when the audio scenario is set to Game Streaming.
- Improves the audio quality after the user disables the microphone in the
- When interoperating with a Web app, voice distortion occurs after the native app enables the remote sound position indication.
- Invalid call of the
- Occasionally no audio.
- Crashes occur when testing the microphone.
- Video freezes.
remoteVideoStateChangedcallback behaves unexpectedly.
- Occasionally mixed streams in RTMP streaming.
- Occasional crashes occur.
- Failure to join the channel.
To improve the user experience, we made the following changes in v2.9.0:
microphoneEnabled. Use the
remoteVideoTransportStats. Use the
remoteAudioTransportStats. Use the
userEnableVideo. Use the
userEnableLocalVideo. Use the
addStream. Use the
v2.8.0 is released on Jul 8, 2019.
This is the first release of the Agora SDK for Electron. Refer to the following documentation to quickly integrate the SDK and enable real-time communication in your project.
Agora also provides the open-source Electron GitHub Demo for you to download.