Communication FAQs

Why Agora.io?

Service

What services does Agora CaaS provide?

Agora CaaS(Communication as a Service) includes:

  • Video/Audio SDKs (APIs for Real-time Audio and Video Communications with high quality support for both one-on-one real-time audio/video calls and many-to-many group calls. See Platform and Scale for details. Agora can also accommodate a variety of scenarios by customizing the interactions with optimization.
  • Agora Cloud:We have deployed around 100 data centers in four continents, including thousands of servers.
  • Real-time Audio and Video Communication Data Reports: tell you how many active users are using the call service, call durations, call success rate, ratio of low-quality contacts with cause analysis, and so on. In addition, distribution reports show the geographic distribution of users, of network conditions and users, and of time spent on the network. To help with operational and other business decisions, developers can check data by using daily, weekly, or background reports, anytime and anywhere.

What communication functions can I implement in my application by using Agora CaaS?

  • App-App Communication
  • App-Web Communication
  • Web-Web Communication
  • App-Cellphone/Local PSTN Breakout Communication. The local breakout point is where a call enters the PSTN in order to communicate with a device such as a land line phone.

Does Agora.io use WebRTC?

We use our own high-resolution audio codec and audio/video pre- and post-processing modules, which provide you with high-quality App audio and video experience. In our web browser solution, we have Agora Web SDK which is WebRTC based, but the main product on our website is NOT webrtc.

But if you are using WebRTC or have your own version of WebRTC, or have a more customized idea, contact support@agora.io.

How can you ensure stable quality during heavy traffic on the Agora.io service?

The Agora.io team boasts video/audio call experience of over 400 billion minutes in one year. Some of our customers are popular social network apps that have tens of millions of users, and some are call center apps with huge user call volume. Others are banking systems with high-security encryption requirements. We have deployed around 100 data centers across the globe, providing instant connectivity, and we ensure that you can connect and call any time with quality.

Is Agora.io a video cloud?

No. A video cloud provides video on demand and live service,but we are enabling real-time video calls, and the the latency is as low as 400ms.

Why I should use Agora CaaS and Agora SDKs?

  • Cost-Saving: If you have 100,000 customers using our cloud service every day, and each person is on the phone for two minutes a day, you can save at least two million dollars over the cost of building your own technical team.
  • Time-Saving: It usually takes six to twelve months for team setup, product research and development, test, bug fixes, and product launch. Even so, sometimes the product quality is still not satisfactory. In fact, the time allocated for many mobile web initiatives is only three months. Imagine achieving real-time audio/video communication in around 30 minutes by directly using Agora CaaS.
  • Effort-Saving: Technical teams can burn out from responding to bugs and complaints, especially those coming from different time zones. Use services provided by Agora.io and keep your technical team focused on developing core capabilities.

How do real-time communications figure in the everyday world?

Meanwhile, Agora.io provides high-quality communication experience for different industries and scenarios:

  • Social applications such as Facebook Messenger, Skype, Google Hangouts have enabled real-time audio and video communication, and people have come to expect it. Real-time communications are now essential for any social app. With audio and video provided by Agora SDK, it is very easy for your application to support one-on-one communication and group chat. Meanwhile, Agora SDK also provides safe and real-time communication for big group calls with up to 2,000 attendees, improving the flexibility and richness of your app.
  • Education:Class collaboration and interaction becomes more interesting with virtual classrooms through one-on-one video calls or big group calls.
  • Telemedicine with one-on-one online video, allowing doctors to better observe symptoms and facilitate the diagnosis.
  • Call Centers are central to enterprise BPO (business process outsourcing) systems. With Agora.io integrated into your system platform, provide customers with 24-hour personalized service at a low cost. In addition, without using extra bandwidth, you can easily integrate real-time customer service support into an existing system, while protecting the customer’s privacy.
  • Virtual Call Centers are becoming a reality in today’s enterprises, allowing organizations, especially those in specialized business segments or industries, to draw on geographically dispersed talent resources. Having customer care reps work from home can also result in large overhead savings.

Advantage compared with other vendors

What are the differences between Agora CaaS and other audio/video network services?

  • Global call support via our many data centers and thousands of servers that help your Apps realize high-quality and stable communications globally. In many regions with backward network infrastructure and poor network conditions, high-quality communication is a pain point that that the industry has not resolved. However, Agora.io guarantees a quality much higher than the industry average by using our last mile optimization algorithm that has won multiple patents.
  • Uniquely rich call data reporting service provides audio/video call APIs along with special APIs to inspect quality, as noted above.
  • Huge mobile device support: Agora CaaS supports all iOS devices on the market and ninety percent of Android devices. At the same time, we use our unique algorithm to augment the features of low-end models by adding echo cancellation and noise suppression when they are missing from hardware devices. Adopting the Agora.io network can also optimize the operational ability of mobile devices and increase the battery performance, making mobile calls user-friendly in new ways.
  • Full platform support includes the following operating systems: Windows, Mac OS, iOS, Android, as well as Java-based Web browser support, providing customer products with high-quality and real-time communication services on all platforms.
  • Easy API integration allows you to integrate the Agora SDK quickly and realize high-quality, real-time communication for your apps in only about 30 minutes.
  • Global Patent Technology Endorsement and Professional Technical Team Support: Agora.io has applied for dozens of international patents in the related fields, including real-time, high-quality voice, ultra-bandwidth audio codec NOVA, video codec designed especially for real-time communication and mobile network, and multiple patents related to voice quality of public networks.

The Agora.io technical team includes the world’s top audio/video engineers. They come from Cisco WebEx, YY (Chinese video social network of about 300 million users), Apple FaceTime, Intel, Microsoft, Vidyo, and more. The first-line research and development experience of each person averages about ten years. We believe that face-to-face communication was, is, and will always be the most medium way for human communication. We hope to use our Agora CaaS, which is built based on our rich technology background, to make up what’s missing from the current SMS and instant messaging world. Communicate face to face instead of just having your head buried in text.

What are the differences between Agora.io and WebRTC?

  • WebRTC was developed before the popularity of smartphones and is not purpose-built for native mobile apps. It may face issues when providing high-quality communications on mobile products (especially on Android).
  • WebRTC is based on P2P, and Agora.io is based on proprietary cloud services architecture that can work with P2P as required. Agora.io provides end-to-end call quality assurance and guarantees the stability of the connection and data transmission in a variety of complex network conditions, thereby bringing a better call experience.
  • The Android system runs on lots of different devices, but the overall WebRTC solution cannot bring a consistent voice experience (for example, by applying echo and noise cancellation), especially on a non-mainstream mobile phone. Agora.io is optimized to adapt to most of the devices on the market.
  • WebRTC lacks media routing support. In order to communicate in real time, WebRTC users must build and configure their own servers, which is expensive. But with distributed data centers around the world and an intelligent routing algorithm, Agora.io private cloud can solve your problem. In addition, the Agora.io SDK client also integrates new technologies such as restoring lost data packets, anti-jitter, and so on, improving the user experience in unfavorable network conditions.

What is the difference between Agora CaaS and a content-delivery platform (CDN)?

In a live broadcast, CDN has a few seconds or even tens of seconds of latency. But using the Agora CaaS, the latency is shortened to 400ms.

What are the differences between Agora.io and polycom/cisco/avaya?

  • The above vendors provide a complete set of video conferencing solutions, which requires special phone line, hardware and infrastructure. But you just need to simply integrate the SDK to your application to implement the required function by using Agora CaaS.
  • A complete set of the solution provided by the above vendors is very expensive, while Agora CaaS is very cheap.
  • The solutions provided by the above vendors cannot be implemented in a mobile client, but you can integrate Agora SDK to your mobile applications.

What makes Agora video/audio call processing different?

We have a lot of unique algorithms for audio/video call processing and hope to create an immersive experience for users. These features include an active audio mixer, automatic gain control to smooth sound output, voice detection, background noise reduction, anti-howling mechanism, and so on.

Information Security

Are the services provided by Agora.io safe enough?

Agora.io is a safe platform. When the signal is sent, it is encrypted (call setup).

What security does Agora.io provide?

We provide multiple encryption schemas according to different developers’ and users’ requirements.

For more details on the security policy, refer to Information Security Policy.

I want to customize the data encryption for our application, what should I do?

Agora SDKs can encrypt application audio and video data in transmission by using a proprietary encryption algorithm. In our SDK toolkit, we provide relevant interfaces.

For details, refer to Data Encryption .

Whether Agora.io is HIPAA compliant?

Yes.

How does the Agora.io network handle DDoS attacks?

We regularly scan the core network nodes, check and clean up the possible security vulnerabilities. Also, an anti-DDoS firewall is present in each cloud data center to protect core nodes from any attack. In our data centers across the world, we reserved over fifty percent of the redundancy bandwidth for the core servers. We have sufficient capacity and resources to control the risk of DDoS.

Do Agora servers store our audio or video content?

No, Agora servers do not store any audio or video content. Agora SDKs send the information to Agora servers. This data transmission allows users to dial the phone, which is also necessary for quality and reporting. In addition, this information may include the establishment, time and duration of the call, as well as all the call failure records. If the call fails or similar problems occur, the information is uploaded for analysis. We do not collect information that affects privacy. If you still have concerns about this issue, contact support@agora.io for more clarification.

Account Management, Fee, and Payment

What are the fees for Agora services and how to calculate the fees?

Refer to Billing for Communication.

Can I use the Agora service for free because My app only has very few users right now?

Yes. The users can use 10,000 minutes each month for free. For how to calculate the 10,000 minutes, refer to Billing for Communication.

If I do not use all my minutes this month, can I carry them over to next month?

The unused free minutes cannot be accumulated. Remaining free minutes are cancelled at the beginning of each month.

How often do I receive a bill from Agora.io?

You receive a bill from Agora.io at the end of each month. If the minutes you have used are fewer than 10,000 in a given month, we do not charge you.

Technical Requirements and Specifications

Architecture

Is the architecture of Agora.io P2P or based on servers?

The Agora.io solution is currently based on the server to ensure the quality of audio and video calls. With our 100 data centers around the world, we have set a new level in the public cloud, so as to ensure quality of service. The basic structure of mobile networks still favors the client-server model. Besides, the Agora.io algorithm guarantees the best route between calls. We can make a P2P call to a nearby party when it is to your advantage, and even provide mixed solutions with servers and P2P.

Platform and Scale

What platforms does Agora.io support?

  • Mobile: iOS 6.0 or later, Android 4.0 or later
  • PC: Windows XP or later, Mac OS X
  • Web

How many people does Agora.io audio/video support at the same time in a call?

Refer to Platform and Scale.

What modes do Agora Native SDK support now?

Agora Native SDK supports the following modes/scenario:

  • Communication
  • Live Broadcast

You can select the required mode by calling setChannelProfile. For details on Live Broadcast related FAQs, refer to Live Broadcast FAQs.

What is the size of the Agora SDK?

The sizes are different according to platforms and releases, and the following shows only the average size:

SDK v1.2 v1.3
Voice-only SDK 2M 5M
Full SDK 3M 8M

What programming languages does Agora.io use?

We use almost the mainstream languages for each platform, for example,

  • Android: Java, C
  • iOS+Mac: objective-c, swift
  • Windows: C++
  • Web: JavaScript

Any other requirement, contact sales@agora.io.

Does the current Android demo have an Eclipse edition?

No. The demo supports Android Studio.

Codec

Why makes codecs used by Agora.io unique?

Agora.io uses its own proprietary audio codec, NOVA, which is simple, low-bit-rate, and highly adaptive. Its quality ranks at the industry’s highest level (on average, the score of broadband PESQ-WB is 3.92, and the score of the average narrowband PESQ in 4kpbs low-bit-rate mode is 3.21). NOVA supports narrowband, broadband, and ultra-high frequency, all in one. The bit rate can vary in the range of 2kbps-24kbps (2kbps being for ultra low bit rate communications).

At the same time, it can flexibly switch between different modes, including adaptable mode, high-quality mode, low-energy-consumption and high-quality mode, super-high-frequency mode and ultra-low-bit-rate mode.

We use our proprietary video codec, and the performance in the RTC environment is excellent with low latency and jitter.

What voice codec does Agora.io support?

Agora.io supports the following voice codecs:

  • Third-party ultra-wideband (SWB) and full-band codecs:AAC-ELD and OPUS
  • Third-party broadband (WB) and narrowband (NB) codecs
  • Other popular codecs (ITU G.7xx series, SILK, iLBC, and iSAC)

Performance

Does Agora.io provide echo cancellation?

Echo cancellation is one of our strengths. Our echo cancellation has the following characteristics:

  • Simple and efficient
  • Support super high quality
  • Quick convergence and high echo return loss enhancement (ERLE)
  • Optimization for both high- and low-end phones
  • Device-specific parameter configuration

Is a call interrupted when switching networks, as from Wi-Fi to 3G/4G?

There might be a short interruption after switching networks in a call, for example, from Wi-Fi to 3G or 4G, due to the clients’ needs to re-establish connection with servers. The call continues after the network is reconnected.

How much bandwidth does the Agora.io SDK require?

It depends on network conditions:

  • If your Wi-Fi connection is good, we improve bandwidth usage to ensure a good user experience.
  • If you are currently in a non-WiFi environment (for example, 3G or 2G), our algorithm automatically adjusts according to the network conditions, in order to smooth calls with lower bandwidth.

Generally speaking, the bandwidth usage is 4KB to 13KB per second (in a non Wi-Fi environment, it may be 4-6KB per second). In some cases, it can be adjusted as low as 1KB per second.

For more information, contact support@agora.io.

How much bandwidth is required for a call?

You consume bandwidth whenever you need to access the internet in a video or audio call, but compared with other similar products, the traffic consumption of our products is very low:

  • Audio Call: 5-10kbps.
  • Video Call: The bit rate changes according to resolution and frame rate. In very simplistic terms (without taking color depth into account, or example), if the resolution is 180 by 320 pixels, and the frame rate is 15 fps, then the bit rate is 160 kbps. For a bit rate calculator, try this page.

What percentage of CPU output does Agora.io SDK typically take?

This depends on phone modes, operating systems, and CPU chips. The minimum occupancy rate is three percent. For the latest high-end mobile phones, it may occupy 20 percent or more of the CPU (Skype is similar). But we can optimize according to your needs.

For more information, contact support@agora.io.

How can Agora.io ensure that it smooths data transmission without loss and with very small latency?

  • Our patented NOVA codec is simple, low-bit-rate and highly adaptive;
  • The users automatically access the Agora Global Virtual Network in bad network conditions.

Does Agora.io support re-connection automatically?

Yes.

Why does my phone get hot after being in a call for a while?

Your phone performs software processing in an audio or video call, which consumes lots of CPU resources. This is why your phone becomes hot. But compared to other similar products, we do not strain the phone. Usually after we call or watch videos for a long time without using Agora products, the phone heats up.

How can it only take 30 minutes to implement audio and video?

Agora.io SDKs have all the required video/audio functions ready to go, and developers just need to write four lines of code for integration.

Deploying and Using Your Application

Login

Why am I kicked off a device?

If you have signed in already, and then sign in to another device, you are be kicked off the current device.

Channel

In poor network conditions, does the SDK force users to leave a channel automatically?

The users will not automatically leave a channel unless the users leave the channel by themselves, for example, the application calls leaveChannel.

Does each channel/room need an administrator in a call?

No, the administrator can only be implemented in the signaling layer. Your signaling server sends commands and calls SDK interfaces for call management.

Does the client need to maintain the channel?

No, a channel is created and deleted automatically. When all participants left the channel, then the channel will be deleted automatically.

What are the App ID and Dynamic Key? How do I use them?

For the detailed concept and procedure on how to obtain and use App ID and Dynamic Key, refer to Agora Keys User Guide for details.

If both App ID and Dynamic Key are used at the same time, which one prevails?

Dynamic Key.

How to monitor who is speaking now in the channel?

The following callbacks for different platforms indicate who is speaking and the speaker’s volume.

  • For Android and Windows, onAudioVolumeIndication
  • For iOS and Mac: reportAudioVolumeIndicationOfSpeakers

By default, the indication is disabled. If needed, use the enableAudioVolumeIndication() method to configure it.

Audio and Video

How do I set the video view?

Use the two APIs provided by Agora SDKs: setupLocalVideo() and setupRemoteVideo().

  • Call setupLocalVideo() before you join a channel or start the video preview.
  • For setupRemoteVideo(), specify the uid and view:
  • Whether the uid of the remote user is clear before you join a channel. Set it before joining the channel, and then no further setting is required during the call.
  • If the uid of the remote user is unclear before you join a channel, the onFirstRemoteVideoDecoded() callback returns the uid of the remote user in a call, so that you can bind the view to the user. No need to set it again after the first setting. You can unbind the view by setting it to null.

Can the video/audio function of Agora Web SDK interoperate with that of the Mobile SDK?

Yes. Use the same App ID to join the same channel, and then the audio function of Web can interoperate with that of the mobile phone. For the video function, you must have the video encoder(VP8) pre-configured. For details on the configuration, refer to the mobile phone SDK user guide.

What is the difference between mute local (or remote) video stream and disable video?

The function of calling muteLocalVideoStream and muteAllRemoteVideoStream simultaneously is the same as calling disableVideo, but it saves more video-related system resources by simply calling disableVideo.

What is the difference between First video frame and First video decoded?

First video decoded is the event notification upon the first image decoding success.

First video frame is the event notification upon the first image display.

Why do some videos have black edges around the windows or cropped images?

When the video image is smaller than the window, there are black edges around it.

In hidden mode, the video image is bigger than the window, which is why the image is cropped.

How can I see myself in the local video before the other party connects?

You can call the API startPreview to see yourself in the local video.

How do I switch between video and audio modes?

You can call enableVideo/disableVideo to switch between audio and video modes.

How do I hot-plug the camera?

Agora SDKs have applied specific filtering to USB camera hot-plug, a callback occurs whenever a new USB camera device is added or removed. If you want to remove a USB device that is currently being used:

  1. Stop the video.
  2. Select a usable camera device.
  3. Start the video (For the detailed code, refer to the process in the DEMO project LRESULT CChildView::OnEIDVideoDeviceChanged(WPARAM wParam, LPARAM lParam)).

If you have added a new device and want to start it immediately, see the next entry.

How do I hot-switch the camera?

Agora SDKs have encapsulated the function of camera hot-switching, and you can simply call one API to use this function: virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]);

For more detailed code, refer to the DEMO project:BOOL CDeviceTestPage::OnApply();

How can I enlarge the local view after another party with a larger screen leaves the call?

You can call the method setupLocalVideoCanvas again.

Why the quality of a group call is worse than a one-on-one call?

Group calls consume more bandwidth and computing power than one-on-one calls. If the network bandwidth or CPU processing capacity is not sufficient, rough video or audio can result. You can try to reduce the video resolution.

Why the quality is worse using Bluetooth?

Agora Native SDK provides 32KHz ultra-wideband audio sampling. But most of the Bluetooth headsets on the market only support 8KHz narrowband communications, and only a few support 16KHz broadband communications. Due to Bluetooth device limitations, the quality when using a Bluetooth phone is worse than a handset or a wired headset.

Why are video and audio not smooth in high-load situations?

It affects the thread scheduling of recording and playback when the system load is high, causing video and audio not smooth. Try to reduce the load of other applications in the system.

Mute

How can I to mute someone in the channel?

You can call the API muteLocalAudioStream to mute someone locally, but if you want to mute all users, you must do so in the signaling layer. You have your choice of signaling protocol.

Recording

How do I check the recording permission?

  • On iOS/Mac:The system reminds you to turn on the recording permission at first run. If the permission is turned off manually, you can query the system interface using AVAudioSession.sharedInstance().recordPermission() (iOS8.0+) to check the recording permission.
  • On Android:There is no single way to check the recording permission on Android devices, because the method varies by manufacturer. Agora Native SDK tries to detect a recording failure and returns the error code ERR_ADM_RECORD_AUDIO_FAILED (1018), but may not operate correctly with the models. Your application can remind users to check the recording permission when this error is returned.

Can I record a video or audio call?

Yes, we provide the recording functions, and you can call startRecordingService to store the recording files directly to your specified servers.

Signaling

How can I retrieve a list of users who are online?

There are two callback interfaces onUserJoined and onUserOffline in the Agora SDK, which notifies when the user joins or leaves the channel. But we do not provide a way to retrieve the whole current online list. User management is handled by signaling layer logic, and we recommend that you implement this function in the signaling layer.

How do I set the calling number for the PSTN?

  • If you use channelInvitePhone2, the last parameter is the calling number.
  • If you use channelInvitePhone,the user account is the calling number.

Does Agora.io provide a PSTN solution?

We provide the docking capabilities from VOIP to PSTN, but do not provide a complete PSTN solution.

What is the process when our app users want to establish a call?

The following example shows a general process if A calls B:

  1. Person A initiates a call request to the signaling server.
  2. The signaling server checks whether B is online:
  • If B is not online, it returns an error to A indicating B is offline.
  • If B is online, the signaling server generates a channel name and returns to A. Meanwhile, it sends call signaling to B.
  1. A receives the channel name returned by the signaling server, and prepares to join the audio channel. To speed up the process of joining the channel, A can join the channel on standby in advance:
  1. A calls muteLocalAudioStream(true) and muteLocalVideoStream(true) (If the video function is enabled) to stop sending any video or audio data.
  2. Call joinChannel to join the channel.
  1. B receives the call request sent by the signaling server from A:
  1. B rings the bell.

    To speed up the process of joining the channel, B can join the channel on standby in advance.

  2. B calls muteLocalAudioStream(true) and muteLocalVideoStream(true) (If the video function is enabled) to stop sending any video or audio data.

  1. A calls joinChannel to join the channel:
  1. If B rejects the request:
    • B calls leaveChannel to leave the channel.
    • B sends a rejection message to the signaling server.
    • The signaling server returns the rejection from B to A.
    • A calls leaveChannel to leave the channel.
  2. If B accepts the request:
    • B calls muteLocalAudioStream(false) and muteLocalVideoStream(false) to send audio or/and video data.
    • B sends an accept message to the signaling server.
    • A calls muteLocalAudioStream(false) and muteLocalVideoStream(false) to send audio or/and video data.

Android Specific Questions

Can I mix my code with SDK code on Android?

No, otherwise the so file cannot call back.

Why does Android suspension window not respond to clicking or dragging after integrating the Agora SDK?

Check whether the system suspension window permission is open or not. If you do not open it, the app cannot start it.

Can I use Agora Native SDK on 64-bit Android devices?

It depends on the Agora Native SDK version you are using now.

If you are using Agora Native SDK v1.7.4 or later:

Agora Native SDK currently supports 64-bit ARM architecture, and the users only need to copy the files in the arm64-v8a folder(included in the SDK package) to the corresponding folder in your project.

Currently it does not support the direct operation of the x86_64 architecture, but it can be compatible with x86: be ensure that there is no x86_64 directory in the APK of any x86 64-bit devices.

If you are using Agora Native SDK before v1.7.4:

The Agora Native SDK currently provides a 32-bit native library (armeabi-v7a), but on 64-bit devices, Android allows starting the APK in 32-bit processing mode, which means Agora Native SDK can also be used in 64-bit Android devices. You must ensure that the arm64 folder of APK is empty. Otherwise, the Android system loads the APK in 64-bit mode, and because the Agora Native SDK does not provide a 64-bit library, the APK boot fails.

Because most Android clients are 32-bit devices, manufacturers generally provide 32-bit libraries, which means it is fine to start in 32-bit processing mode in 64-bit Android devices.

But if some 64-bit devices met the following error:

java.lang.UnsatisfiedLinkError: dlopen failed: "libHDACEngine.so"

Possible Reasons:

When installing APK, the system will look for the directory of the native library (the existing ABI:armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, MIPS64, MIPs) under the lib directory of APK according to the Build.SUPPORTED_ABIS lib.

If the app has a 64-bit compatible directory but lack of library files, and it will not use other ABI directory database file to replace the missing library file to install these libraries. The usage is not mixed, that is to say it is required to provide the corresponding lib files for each architecture.

Android has fallback mechanism when loading the native library, and if it does not have the arm64-v8a directory on a 64 bit system, it will try to find the the libraries under armeabi-v7a , which is normally compatible.

Solution:

  • Method 1: When building the application, delete all the libraries under the arm64-v8a directory(including deleting the directory) in the project. After the application is built, be sure that there is no arm64-v81 directory under lib in the apk package.

  • Method 2: Set abiFilters in the gradle build file, and only pack the 32-bit library.

     android {
      ...
      defaultConfig {
        ...
        ndk {
          abiFilters "armeabi-v7a","x86"
        }
      }
    }
    

Why did I receive the error: Failed to crunch file?

When you are using the Android Open Video Call demo, and if you encountered the following error message, for example,

Error: Failed to crunch file E:\Rock\videoIM\Agora_Native_SDK_for_Android_v1_7_4_FULL\Agora_Native_SDK_for_Android_FULL\samples\OpenVideoCall_Android\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\25.0.0\res\drawable-xhdpi-v4\abc_ab_share_pack_mtrl_alpha.9.png
into
E:\Rock\videoIM\Agora_Native_SDK_for_Android_v1_7_4_FULL\Agora_Native_SDK_for_Android_FULL\samples\OpenVideoCall_Android\app\build\intermediates\res\merged\debug\drawable-xhdpi-v4\abc_ab_share_pack_mtrl_alpha.9.png

This issue occurs due to the referenced file name is too long.

Other Questions

Which callback functions are useful to an app’s business logic, and which are not?

Apps need information about user status-related callbacks, for example, userJoined, userOffline, but all user related logics are transmitted based on UDP,which is unreliable. Other callbacks related to remote users are also unreliable.

What errors indicate that I should end the app call?

Error code is an identification that part of or the whole SDK cannot work properly, which means whenever an error code is reported/received, you can end the app call.

What callbacks can tell users to disconnect or reconnect servers?

rtcEngineConnectionDidLost or connectionLostBlock reminds users of disconnecting the servers. Once the server is disconnected, the SDK will reconnect it automatically.

What happens after calling initWithAppId multiple times?

Yes, this might lead to flashback or abnormal camera direction and other problems.

How much impact do the encryption and decryption schemes have on the system?

Complicated encryption and decryption have a huge effect on the CPU, and latency occurs as well.

This requires testing in actual situations.

Why does the phone screen only sometimes rotate together with the phone in a call?

You can set it in your phone system. If the screen rotation function is enabled, then the phone screen will re-layout when you rotate the phone.

Why does the screen of the other party remain still after the network is reconnected?

It takes a little time for the video communication recovers after the network connection is back. Latency is a common phenomenon for all video communications and is affected by network conditions.

The SDK user ID is a 32-bit unsigned integer, but our current user ID is a string.

This is required by the logic of the signaling layer and protocol, and we recommend that you map the strings to integers on your client server.

How do I retrieve a successful volume callback message?

RtcEngineParameters:: enableAudioVolumeIndication(int interval, int smooth). Because the volume indicator is off by default, call the API to enable the callback immediately before or after joining a channel.

Why did the initialization on Windows XP fail?

Starting from v1.1, the Agora SDK uses VC2013 for compilation by default, and it runs continuously to support Windows XP. Because the OS has not deployed the related runtime library, you need to download and install it from the following Microsoft website (subject to Microsoft changes):https://www.microsoft.com/en-us/download/details.aspx?id=40784

Do not download the runtime library from any other third parties. These websites may not have the latest version, which can cause failure even after the installation.

When setting the video profile by calling setVideoProfile, why some profiles with the same frame rate and different bitrate?

Because different users have different requirements on image quality, for example,

Video Profile Enum value Resolution (width * height) Frame Rate (fps) Bitrate(kbps)
360P 30 640x360 15 400
360P_9 38 640x360 15 800

The users who set the bitrate as 800 kbps apparently have higher demand on the image quality.

What is callback?

There are two types of programmings:

  • System Programing: the developers write the libraries.
  • Application Programing: the developers write the application to enable certain functions by utilizing the written libraries.

The system programmer leaves interfaces, which is called as Application Programming Interface, for the application programmers to use.

When the application is running, the application program calls the prepared functions included in the APIs from time to time. But some library functions required the application to send them a function first to call later appropriately to fulfill the required task. This sent and later called function is the callback function.

For example, you go to a shop and ask for a special perfume, but it is out of stock. The shop said they can contact you later if it is in stock, but you need to provide your contact information. For example, phone number, FaceBook account, or email address. The contact behavior is provided by the shop, similar to the library function; the contact information is decided and provided by you, similar to callback function. You ask the shop to call you, or email you, or find you at FaceBook, which is similar to sending the callback function to the library function, called as “register a callback function”.

The following is the basic logic:

../../_images/callback.png