Why can't I get the device ID on Chrome 81?
On Chrome 81, the deviceId field that the getDevices method returns is empty.
How can I set the page recording output resolution in mobile web page mode?
When you enable the mobile web page mode and perform page recording (mobile is set to true), Agora recommends that you set the width and height of the output video according to the following video resolution table:
How can I choose the video resolution, frame rate and bitrate?
Video parameters vary on a case-by-case basis. For example:
Why is the camera light still on after I disable my video on the Web?
When you use the Agora Video SDK Web SDK to disable local video through muteVideo, the camera light stays on.
Why can't I play the audio file using startAudioMixing or playEffect on Android 9?
Cannot play an mp3, mp4, or any other music format using startAudioMixing or playEffect on Android 9.
Why does the audio routing change after I switch to another app on an Android device?
When using an app integrated with an Agora SDK (an "SDK app") for real-time communication on an Android device, if you switch to another app that has audio input and/or output and return to the SDK app, the audio routing of the SDK changes.
What are the differences between the Message Notification Service and the query Method?
You can monitor the status of the cloud recording service either through the query method or by the Message Notification Service, to take action when required. Both options have pros and cons.
Why don't music files automatically resume playing after hanging up a system call on an Android device?
The startAudioMixing method is called to play a music file on an Android device. During the playback process, the system's built-in phone software is used to answer or make a call. After hanging up the phone, the music file does not automatically resume playback.
Why do crashes occur on Unity SDK v3.0.1 or earlier?
When using the Unity SDK v3.0.1 or earlier, blank screen or even crashes occur if access to the microphone or camera is not granted. This issue occur on various platfroms including macOS and Android.
How do I add the permissions needed for real-time interaction to my Unreal Engine project?
In order to implement real-time interactive features on different target platforms, you need to add camera, microphone, and other permissions to your Unreal Engine project. Depending on the target platform, you can refer to this article for steps and configurations to get these permissions.
What are the differences between setEnabled and setMuted?
Both Web SDK 4.x and 3.x provide APIs for controlling the collection and sending of local audio and video. The differences between these APIs are detailed in the table below.
Why do I see a prompt to find local network devices when launching an iOS app integrated with the Agora Signaling SDK?
Problem
How to package a Windows installation on macOS?
To create a Smart Classroom Windows installation package using a Mac, take the following steps:
How to set the output video resolution of the web page recording mode on the on mobile devices?
When you enable the mobile web mode (mobile is true), and start web page recording. Agora recommends that you set the width and height of the output video according to the following video resolution:
In Signaling SDK, does the call frequency limit refer to the limit of one client instance?
In Signaling SDK, the call frequency limit refers to the limit of one client instance.
How can I set user properties and classroom properties?
Flexible Classroom supports custom user properties and classroom properties. The property consists of a property name and a property value. Each property name has only one property value.
Why do I see a prompt to find local network devices when launching an iOS app integrated with the Agora Video SDK?
Problem
Why can't I upload courseware?
What should I do if there is an error in uploading courseware?
How can I solve channel-related issues?
In poor network conditions, does the SDK force users to leave a channel?
What should I do if the class recording fails?
If recording fails, take the following steps to troubleshoot the problem:
How do I set the video profile of the recorded video?
This article has been moved to Set the Video Profile.
How do I use co-host token authentication?
Co-host authentication enables you to authenticate whether a user has the privilege to publish streams in a live streaming channel. This feature helps ensure that only authorized users publish streams and prevents illegal users from exploiting business vulnerabilities or stealing tokens to bomb a live broadcast room.
How to deal with token-related error codes?
When a primary/secondary certificate is enabled for your project, you use dynamic tokens to authenticate users. This page lists token-related error codes and event callbacks you may receive, provides triggering causes and solutions, and helps you troubleshoot.
What is the difference between the in-call volume and the media volume?
The in-call volume refers to the volume of voice and video calls, while the media volume refers to the volume at which background music, videos, and audio effects are played. The in-call volume and the media volume are independent from each other, and the setting of one does not affect the other. The differences between the in-call volume and the media volume are as follows:
How can I switch between the screen-sharing stream and the camera stream?
This article only applies to the Agora Web SDK 3.x and earlier versions.
How can I use string user IDs?
Introduction
Which media players can play the recorded files?
You get different recorded files in different recording modes.
What's the difference between individual recording mode and composite recording mode?
If you want more flexibility in processing the recorded files, choose individual recording mode. For example, in an online classroom, if parents want to see the video of the teacher and their child only, you can use individual recording mode to record the teacher and all students separately, and then combine the teacher's video with each of the students' video. Or, if you want to moderate the content in the recorded files and identify the UID that has the violating content, choose individual recording mode so that you can moderate the audio and video of each user separately.
Does Agora have reconnection mechanisms?
The Agora SDK has reconnection mechanisms when a user drops offline or a process gets killed. This page shows the connection state mechanism of the Agora SDK under these circumstances.
How to choose the appropriate cloud storage bucket region and address cross-region upload challenges?
Currently, cloud recording supports the following cloud storage vendors:
How can I adjust camera exposure and focus?
In video applications, adjusting camera exposure and focus is essential for capturing subjects with accurate brightness and sharpness. The Agora RTC SDK offers camera management methods for mobile platforms, enabling users to switch between front and rear cameras, as well as control zoom, focus, and exposure settings. This page shows you how to manage the following:
How to leave a flexible classroom?
In Flexible Classroom, the teacher can click Leave Classroom to temporarily exit the session without changing the room status. To officially end the class, follow these steps:
How can I set the mirror mode?
provides various interfaces to customize video display effects on local and remote devices during a real-time audio and video call, including the option to enable or disable mirror mode.
Why does the query method return a 404 after successfully starting cloud recording?
The following issues may cause the query method to return a 404 status code after successfully starting cloud recording with the start method:
How can I set the log file?
The Agora SDK allows you to configure the output log file. All logs generated by the SDK are written to this file.
When pushing streams to the CDN, what should I do when a disconnection happens?
This article only applies to the Agora Web SDK 3.x and earlier versions.
How can I retrieve channel information, such as the channel name and user list?
provides server-side RESTful APIs to obtain channel-related information.
How can a host change the role of a remote user?
In a live interactive streaming channel, the host can invite an audience to take on the role of co-host, or change role back to audience.
How to remove a specific user from a channel?
In real-time audio and video interactions, there are often cases where you need to remove a specific user from the channel. offers several solutions tailored to different scenarios:
How can I switch from custom video capture to SDK capture?
The Agora Video SDK Native SDK provides both Push and Media IO methods to implement custom video capture. This page describes how to switch from custom video capture to SDK capture.
What are the common error messages to expect in Web browsers' console logs?
After integrating the Agora Web SDK into your web app, you can debug your code using the console log. This document lists the common errors in the console log.
What is the relationship between the old and new callbacks of Media Push?
Agora provides two sets of callbacks for you to monitor Media Push:
How do I get the user's call duration?
During a call, a user may join and leave a Video SDK channel for multiple times, and the user's call duration is the actual time when the user is in the channel. You can use the Agora Video SDK or Agora Analytics to get a user's call duration.
How can I listen for an audience joining or leaving an interactive live streaming channel?
The Agora Video SDK does not provide any callback events that listen for an audience joining or leaving an interactive live streaming channel. However, you can listen for these events using either of the following two approaches:
How does an app crash affect cloud recording?
If an app integrated with cloud recording crashes, the recording session is not affected. You can continue to use the original resource ID and recording ID to control the recording instance, such as to query recording status or stop recording.
How do I handle issues when integrating the Signaling SDK and Video SDK simultaneously?
When integrating Signaling SDK version 2.2.0 and above with Video SDK version 4.3.0 and above, the following errors may appear in the IDE:
How to handle token expiration?
After the token expires, you need to call the logout method to log out of the Signaling system. Then use the new token to create a new instance and call the login method to log in to the system again.
How to deal with Chat-related issues in Flexible Classroom?
The Chat is integrated but not displayed in the classroom
What should I do if a class recording fails?
1. Check whether the recording-related configurations are correct:
What are some common mistakes in integrating and using Flexible Classroom?
Error when running Flexible Classroom on Web
How to specify a dynamic storage path?
When configuring the recording file storage path in the Console through the fileNamePrefix field,
How does Flexible Classroom support multiple languages?
Flexible Classroom currently supports Chinese, English, and Spanish. If you need to add more languages, find the language-related key value in the specified directory and modify it.
How to set custom user and class attributes?
Flexible Classroom supports custom user attributes, classroom attributes, and widget attributes. You can set any classroom attribute according to your business needs, and Flexible Classroom will synchronize it to all terminals.
How to turn off noise reduction, echo cancellation, and automatic gain control?
If your classroom integrates or uses audio mixing or other tools, and you want to turn off noise reduction, echo cancellation, and gain control functions, add the following code to packages/agora-classroom-sdk/src/infra/api/index.tsx:
How can I resolve common development issues on Electron?
This page outlines common challenges encountered throughout the integration, compilation, execution, and packaging phases of Electron SDK app development. It offers potential solutions to address these issues effectively.
What should I do if I encounter "Please obtain the RESTful API ID and key first" when configuring aPaaS in Agora Console?
If you encounter the "Please obtain the RESTful API ID and key first" error message when configuring aPaaS in the Console, please take the following steps:
How can I avoid being frequency limited when calling Agora Server RESTful APIs?
When the request of an Agora Server RESTful API exceeds its call frequency limit, the API returns the HTTP status code 429, indicating that you have made too many requests in a specified amount of time. The following suggestions can help you optimize API call frequency based on the needs of your project.
Why do errors occur when calling the Stream.init method?
The following are common errors when initializing the stream:
Why do errors occur when compiling the Agora Signaling Linux Java SDK?
Problem
What are the classroom states of Flexible Classroom?
Flexible Classroom has the following classroom states:
How can I determine whether a call is an audio call or a video call?
In real-time audio or video communication, you can use the Agora Signaling SDK or the Agora Video SDK to determine whether an incoming or ongoing call is an audio call or a video call.
Why can't I hear audio in stereo when playing a stereo file?
When calling startAudioMixing or playEffect to play a stereo file, the user might encounter the issue of not being able to hear audio in stereo.
How can I solve Recording integration issues?
When I integrate the Java SDK, the error java.land.UnsatisfiedLinkError: no recording in java.library.path occurs. How do I fix it?
What can I do if I get a pop-up warning saying 'the framework cannot be opened' when compiling an Xcode project?
Problem
How to enable the video enhancement extensions?
Video SDK v4.x provides video enhancement extensions for beautification, underexposed video enhancement, color enhancement, and video denoising.
How can I enable image enhancement?
During a video call or live streaming, users often want to improve their on-screen appearance, which can help improve their confidence. The Agora Video SDK provides APIs to help you easily implement basic image enhancement. Users can enable this functionality and then adjust a number of image enhancement options including skin smoothing, acne removal, and a "rosy cheeks" effect to achieve natural-looking enhancements.
Why does an iOS app developed using Unity 4.x SDK report an error when uploaded to the App Store?
When you package and upload an app developed using Unity 4.x SDK directly to the App Store, you may receive the following error message:
How to resolve Xcode project compilation failure due to missing development team configuration information?
When deploying the Xcode project to an iOS device for debugging, the following error occurs:
What are the differences between the COMMUNICATION and LIVE_BROADCASTING profiles?
This article applies to the Agora Video SDK Native SDK only.
How do I control recording sessions in the command-line interface?
Start and pause recording
Why are there no recorded files in the cloud storage?
If you cannot find any recorded files in the cloud storage after a cloud recording session, check if any of the following situations occurred:
How to handle errors when running the pod install command?
When running pod install, the following error occurs:
How can I get the URL of the M3U8 file?
The URL of the M3U8 file consists of the domain of your cloud storage and the filename. You can copy the URL in your cloud storage.
How can I reduce the app size after integrating the Video SDK Native SDK?
This page applies to SDKs earlier than v3.6.2 only. As of v3.6.2, Agora offers additional methods
How to end a class?
In Flexible Classroom, the teacher clicks Leave Classroom to leave temporarily, which will not change the classroomroom state. To end the class, refer to the following steps:
How can I stop cloud recording?
You can call the stop method to leave the channel and stop recording.
Why are dynamic libraries preferred over static libraries in the Video SDK?
Static libraries and Dynamic Link Libraries (DLL) are both used for organizing and sharing code in programming. In earlier versions, the Video SDK utilized static libraries on certain platforms. However, there are several drawbacks associated with static libraries: