Co-host across Channels
Introduction
Co-hosting across channels refers to the process where the Agora SDK relays the media stream of a host from an interactive live streaming channel (source channel) to a maximum of four interactive live streaming channels (destination channels). It has the following benefits:
- All hosts in the relay channels can see and hear each other.
- The audience members in the relay channels can see and hear all hosts.
Co-hosting across channels applies to scenarios such as an online singing contest, where hosts of different channels interact with each other.
Sample project
Agora provides an open-source HostAcrossChannel sample project on GitHub. You can download the project to try it out or view the source code.
Implementation
Before relaying media streams across channels, ensure that you have implemented the basic real-time communication functions in your project.
As of v2.9.0, the Agora Native SDK supports co-hosting across channels with the following methods:
startChannelMediaRelay
updateChannelMediaRelay
stopChannelMediaRelay
Once the channel media relay starts, the SDK relays the media streams of a host from the source channel to at most four destination channels.
During the relay, the SDK reports the states and events of the channel media relay with the onChannelMediaRelayStateChanged
and onChannelMediaRelayEvent
callbacks. Refer to the following codes and their corresponding states to implement your code logic:
State codes | Event codes | The media stream relay state |
---|---|---|
RELAY_STATE_RUNNING(2) and RELAY_OK(0) | RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL(4) | The channel media relay starts. |
RELAY_STATE_FAILURE(3) | / | Exceptions occur for the media stream relay. Refer to the error parameter for troubleshooting. |
RELAY_STATE_IDLE(0) and RELAY_OK(0) | / | The channel media relay stops. |
- Any host in an interactive live streaming channel can call the
startChannelMediaRelay
method to enable channel media stream relay. The SDK relays the media streams of the host who calls the method. - During the media stream relay, if the host of the destination channel drops offline or leaves the channel, the host of the source channel receives the
onUserOffline
callback.
API call sequence
Follow the API call sequence to implement your code logic:
Sample code
API Reference
startChannelMediaRelay
updateChannelMediaRelay
stopChannelMediaRelay
onChannelMediaRelayStateChanged
onChannelMediaRelayEvent
Considerations
-
The Agora RTC SDK supports relaying media streams to a maximum of four destination channels. To add or delete a destination channel, call
updateChannelMediaRelay
. -
This feature supports integer user IDs only.
-
When setting the source channel information, ensure that you set
uid
as 0, and theuid
that you use to generate the token should also be set as 0. -
To call
startChannelMediaRelay
again after it succeeds, you must callstopChannelMediaRelay
to quit the current relay.