Live Broadcast FAQs

General

What is the difference between CDN and Agora Interactive Broadcast?

CDN is a traditional broadcast with high latency and no interaction.

Agora Interactive Broadcast enables the real-time interactions among hosts and advanced audiences with low delay, fully reproducing the scene.

Does Agora support overseas broadcast?

With the database centers deployed globally, Agora definitely support overseas broadcast.

What makes the architecture of the Agora Live Broadcast unique?

Agora uses the UDP transport protocol in the underlying instead of the traditional and high-latency TCP, which guarantees low latency and real-time interaction.

How does Agora support huge concurrency?

Agora has deployed almost one hundred data center globally with thousands of servers to ensure hundreds of millions of concurrent. Meanwhile, Agora has partnership with top CDN vendors to ensure high concurrency for Bypass Live.

How to ensure the channel name you use is unique?

It is up to the App side to distinguish, for example, with prefix and suffix. If you specify the same channel name with others, then you will join the same Agora channel.

How many live broadcast channels can be supported simultaneously?

Refer to Platform and Scale.

How many users does an Agora live broadcast channel support?

Refer to Platform and Scale.

How many people does host-in support in an Agora Live broadcast channel?

Refer to Platform and Scale.

How to kick people out of a specific live broadcast channel?

You are allowed to kick people out of a channel via Agora Signaling System, but the same function at the server side is still under development.

Why hosts can not see each other after joining the same Agora channel?

Do the following:

  1. Ensure that both hosts use the same App ID. If the developer has created several projects with multiple App IDs, it is easy to make a mistake;
  2. Ensure that both hosts joined the same channel with same channel name;
  3. Ensure the network connection of both hosts is normal.

Does Agora support pure audio live broadcast?

Yes.

What is the recommendation range of the resolution on PC?

It currently supports 1080P in maximum, but the recommended resolution varies according to the different scenarios and the processing capacity of the receiver.

The recommended resolution for a mobile phone is 360*640, if the bitrate or resolution that the audience client receives is too high, the power consumption will be increased. causing CPU processing bottleneck issues, like video playback is not smooth and etc.

Later, once the hardware hardware capabilities are enhanced at the audience client side, Agora will consider customizing dual rate for PC. For example, 720P for high-end mobile phone and Pad, and 360P low-end mobile phone.

Is Agora using WebRTC?

No.

Host-in

What is the difference between Agora host-in and other practices?

The main differences are listed as follows:

  • Agora supports multiple users to host in, and it currently supports up to 7 video hosts in a single Agora channel (the scenario with more hosts is under development);
  • It is based on the UDP technology with very ultra low latency;
  • Users can host in and out anytime during the live broadcast;

What is the difference between Client Host-in and Server Host-in?

Host-in is all implemented at the client side.

The only difference is the way to blend the pictures:

Method Disadvantage Advantage
Blending the pictures at the client side Higher demand on the bandwidth and device More accurate plan on the layouts and host-in strategies
Blending the pictures at the Agora server side Insufficient support on layout and host-in strategies Lower latency, and lower demand on the device and bandwidth

Refer to the document Host in for details.

What is Single-Stream Audience/Host, Dual-Stream Audience/Host, and how to use them?

In the Live Broadcast scenario, Agora supports two user roles: host and audience, each of which has single-stream and dual stream mode (high and low streams defined by resolution, frame rate, and bitrate).

  • Single-Stream Host and Dual-Stream Host: The single-stream host only sends one stream, while the dual-stream host sends two streams.
  • Single-Stream Audience and Dual-Stream Audience: Both single-stream and dual-stream audience receive only one stream from each host, the difference is the single stream receives the high stream by default, while the dual-stream audience receives the low stream by default. Both can switch the stream type by calling setRemoteVideoStreamType(Android/Windows) or setRemoteVideoStream(iOS/Mac).

Do not mix the usage of single-stream and dual-stream roles:

Role and Mode Single-Stream Host Dual-Stream Host
Single-Stream Audience Supported Not Supported
Dual-Stream Audience Not Supported Supported

Does Dual-Stream Audience mean that the audience can receive both streams from the host?

No. It only means the audience can select receiving one stream from the two streams sent out by each host:

  • Each audience can only receive one stream from each host;
  • Which stream, high or low, the audience receives from the hosts is determined by the settings when calling setRemoteVideoStreamType.
  • The difference between single-stream audience and dual-stream audience is : the single-stream audience receives the high stream by default, while the dual-stream receives the low stream by default. Here, “by default” means before calling the setRemoteVideoStreamType method.

Can the users mix the usage of different modes of hosts and audiences?

No. Only the following usage combinations are supported:

  • Single-Stream Host + Single-Stream Audience
  • Dual-Stream Host + Dual-Stream Audience

Does Agora provide any host-in authentication mechanism? If not, what if the App is attacked?

Agora provides a host-in authentication mechanism to ensure the live broadcast won’t be disturbed even when the App security system has been hacked. This function will be officially released in later releases, but now some customers are using this function now with customized requests. Any requirement before the official release, contact sales-us@agora.io if necessary.

Push-Stream

What is the mechanism once it fails to push the stream?

It retries every 2 seconds automatically once it fails to push the stream.

Why is the push-stream/recording not smooth for the last 30 seconds?

To prevent the RTMP stream from being disconnected caused by the host disconnected or temporarily offline, the Recording service preserves 30 seconds to buffer the static data, which means compleletly exiting the push-stream recording 30 seconds after the host is disconnected.

Picture-in-Picture Layouts

What is the difference between Agora Cloud and CDN RTMP?

The most CDN+RTMP technologies for live broadcast allow the users to watch the live broadcast in a web browser once the flash player is installed, which lowers the audience’s threshold. Different from the most of the current commercial CDN+RTMP broadcast technologies, Agora.io provides a solution for Agora Cloud, host, and advanced audience to have the same real-time communication quality respectively as an individual line with:

  • Private audio and video coding
  • Private transport protocol
  • Private node deployment
  • Private transmission algorithm

See the following for details:

Name Normal CDN+RTMP Agora Cloud
Video Encoding and Decoding H.264 Private
Audio Encoding and Decoding AAC Private
Transport Protocol TCP based on RTMP Private protocol based on UDP
Transmission Algorithm TCP Private algorithm for fixing packet loss and adjusting the bitrate according to the current bandwidth automatically
Picture-in-Picture Fixed It can be adjusted dynamically

To meet the requirements of many developers, Agora.io enables the function of Bypass Live (can be used for social sharing) together with many CDN vendors. For details, refer to Enable Bypass Live.

Why do the displayed videos are not tiled, but layered on the Windows platform, which means part of the videos are not able to display?

If the displayed videos are not tiled, but layered, and these videos do not have the same parent window, then these video windows may be painted off by each other. In this case, you need to set the following stye for the parent windows by calling the Win32 API ::SetWindowLong :

LONG styleValue = ::GetWindowLong(parentWindow.GetSafeWnd(), GWL_STYLE);
::SetWindowLong(parentWindow.GetSafeHwnd(), styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);

Why the actual layout resolution is 640 x 352, while I actually set it as 640 x 360?

Since there is a huge number of Android models in the market, and limited by some encoders only supporting the video width that can be divided by 16, which is why we unified the resolution a multiple of 16, which is why when you set the width as 360, the actual width is 352.

Why the actual layout is 1-pixel displacement compared with the actual set layout?

When the video bottom decoder is in the YUV420 format, the sampling rate of YUV is 2:1:1 in the two directions of the width and the height, so the width and height must be even, and the moving distance must be even. However, since our customized layout uses relative values, the width, height, and position of each anchor are calculated to be even when calculating the transform, resulting in a deviation of 1 pixel from the data expected by the user.

Bypass Live

Why is there a cross-domain issue when I am using a CDN test address?

The domain used by the test address mainly applies to the testing environment, but due to CDN is not configured with cross.xml, cross-domain issues exist.

How to enable and disable the Bypass Live service?

Contact sales-us@agora.io to enable or disable the Bypass Live service currently.

Self Service will be enabled in the Dashboard soon.

How to get the channel list for the current Bypass Live?

Agora does not provide the Bypass Live channel list currently, but the application layer knows the current channel list for Bypass Live.

Can we specify which channel enabled for Bypass Live?

No, currently this function is not supported. Once the function of Bypass Live is enabled, all channels will support Bypass Live. The application layer knows the current channel list for Bypass Live.

How to get the current state of the bypass channel?

The upcoming RESTful API helps you get the status of bypass channels, which will be officially supported in mid November, 2016.

How to adjust the layout of the Bypass Live?

Refer to the document Adjust Picture-in-Picture, more layouts will be supported in the later releases.

How to set the position of the host in the Bypass Live?

Refer to the document Adjust Picture-in-Picture, more layouts will be supported in the later releases.

Can we specify the resolution and bitrate for the Bypass Live?

Yes, but pushing stream with designated resolution and bitrate requires encoding and decoding again which might need extra budget:

  • Scenario 1 - only 1 host in the live broadcast: it needs extra budget;
  • Scenario 2 -more than one host in the live broadcast: blending pictures itself requires encoding and decoding again as well, thus no extra budget required;

What is the difference between the Bypass Live and Agora SDK audience?

Agora Live Broadcast includes three users:

  • Host
  • Advanced Audience
  • Normal Audience

Host and Advanced Audience needs Agora SDK, which means only the users who use the application integrated with the Agora SDK can be called as Host or Advanced Audience. Normal Audience only needs a web browser.

Compared with a normal audience, an advanced audience has the following advantages:

  • Lower latency when watching the live broadcast;
  • Stronger capability against the packet loss;
  • Switch the user role from audience to host for real-time interaction;

Can we push the stream to our own CDN?

Technically feasible, but need to contact sales-us@agora.io to clarify and confirm the requirement.

Does audio broadcast support Bypass Live?

Yes.

Is there a traffic limit on the Bypass Live?

There are two types of URLs for Bypass Live:

  • Test: The Bypass Live function is enabled immediately after the application, but it may be unstable and only valid for one week. It is free, and supports up to 5 streams simultaneously.
  • Official: The Bypass Live function is enabled 4 business days after the application. It is stable, valid according to the duration signed in the contract, no restrictions on the concurrency, and not free.

Why is the latency of HLS much higher than RTMP?

HLS includes m3u8 index file and TS media slicing file. In Apple document, the shortest ts file is 2s as a slice, while m3u8 is an index at least with 3 slice files, which means the latency is 6s at least. RTMP is usually a direct pass with a short buffer, so the delay is much lower than the HLS.

Why is there no image, only audio in the Bypass Live and recordings of the Bypass Live?

Check whether the API setVideoCompositingLayout is called correctly. For details, refer to Adjust Picture-in-Picture.

Recording and Storage

Can I specify the channels for recording?

Yes, refer to the document CDN Recording for Live Broadcast.

How to playback the recordings?

The recording callback returns the URL of the recordings, which allows you to playback the recordings. For details, refer to the document CDN Recording for Live Broadcast.

Can the storage duration of the previous recordings be extended once the duration is newly updated?

No, for example,

The first time you configured the duration as 15 days, then later you modified the it to one month, and after the settings take effect: the previous recordings before the second configuration can only be stored for 15 days, but the recordings after the second configuration will be stored for one month.

Why is the screen blurred sometimes when recording the live broadcast?

In order to provide users with the best experience, the video is optimized with dynamic resolution and bitrate. The screen blurring issue is caused by CDN initially not supporting dynamic switching, and the issue is now fixed in CDN, and the servers will be updated gradually.

Will there be another callback after the recording callback failed?

No.

Can we configure the resolution and bitrate for live broadcast recording?

Yes, but pushing stream with designated resolution and bitrate requires encoding and decoding again which might need extra budget:

  • Scenario 1 - only 1 host in the live broadcast: it needs extra budget;
  • Scenario 2 -more than one host in the live broadcast: blending pictures itself requires encoding and decoding again as well, thus no extra budget required;

How can we call the source video file of the recordings for future usage?

The recording callback returns the recording results. For details, refer to the document CDN Recording for Live Broadcast.

Why did I get a black screen in the recordings?

ARS(Agora Recording Server) only support recording the communication channels, not for live broadcast. Record the live broadcast at the CDN side, for details, refer to the document CDN Recording for Live Broadcast.

Sample Code and API

Why can’t I compile the open live sample code?

It requires the users to use their own App ID to compile the Open Live. Enter the App ID in the places where an error occurs during the compilation.

Where can I get the App ID?

You can get App ID under your default or newly created project after registering at: http://www.agora.io/en/ .

You can also find the detailed procedure in Obtaining and Using an App ID.

Why can’t I join a channel, nor preview a local video after entering App ID in the Open Live code?

Check whether App Certificate is enabled for the project on the dashboard. Once it is enabled, you must use a Channel Key to join the channel.

For the details on the difference between App ID and Channel Key, refer to the document Agora Keys User Guide.

How long is the Channel Key valid? Does it impact the live broadcast once expired?

Channel Key includes two fields related to time/duration:

  • Authorization Timestamp: The timestamp, represented by the number of seconds elapsed since 1-1-1970. The user can use the Channel Key to join a channel within 5 minutes after the Channel Key is generated. If the user does not join a channel after 5 minutes, this Channel Key is no longer valid.
  • Expiration Timestamp: It Indicates the exact time when a user can no longer use the Agora service (for example, when someone is forced to leave the live broadcast). It is infinite by default but users can customize it according to actual needs.

Video Capture and Processing

Can I capture the video by myself, and ask Agora SDK to process afterwards?

Technically feasible, but need to contact sales-us@agora.io to clarify and confirm the requirements.

Does Agora SDK support ReplayKit?

ReplayKit is the built-in screen recording function of iOS 10, but Agora SDK currently does not support it.

However, users can capture the video by themselves, and ask Agora SDK to process it.

How to switch the main host window when a PC has multiple cameras for shooting from different angles?

For a PC with multiple external USB cameras, the users can capture the source video from different cameras, then input to the SDK for screen switching, or directly hot swap the screen on the application side. Agora SDK supports hot swap among the multiple USB cameras of a PC.

Does it support one host with the video of several streams display simultaneously?

Yes. The following shows how to implement it:

  • App captures the screen and host video, mixes them as one stream and inputs to Agora SDK (Here, it is not recommended to use the way of blending the host video stream and the SDK built-in screen-capture stream, due to extra efficiency loss. Agora will provide technical support for how to capture screen using a PC client.)
  • The user joins as a host with a PC app, and joins as an audience with a mobile app, then switch the audience role in the mobile to host to display as a small window in the live broadcast.
  • In a PC app, switch from an audience to host to display the host video in the live broadcast.

Does Agora support watermark in live broadcast video?

No, but you can add it using the preprocessing and post-processing interfaces to implement functions.

Can Agora support auto pornography detection?

Yes, Agora supports the following two ways:

  • Directly identify the sensitive contents;
  • Capture the screenshots of the sensitive contents and send to the developer to identify them;

Backend Data

Can I get the duration of the audiences in the live channel?

It is recommended to calculate by yourself via the signaling layer. Later Agora will provide non real-time reconciliation interface.

Billing

What is the pricing of the Agora Live Broadcast?

Contact sales-us@agora.io .

What is the pricing of Bypass Live, Recording, Storage and Pornography Detection?

Contact sales-us@agora.io .

Is the pricing the same at home and abroad?

Contact sales-us@agora.io .

Why does the Dashboard usage statistics display the minutes for audio live since my project is for video live?

If you found audio minutes displaying in a video communication or video live, it does not mean it is a billing error, it might be caused by the following reasons:

  • Somebody turned off the camera and only transmissed audio streams;
  • The video or images could not be transmissed due to the bad network conditions;
  • Single channel will be calculated as audio mutes, which means there is only one person in the channel. For example, A joined the channel before B joined or the rest people in the channel were disconnected.