Start Interactive Live Video Streaming
Use this guide to quickly start the interactive live video streaming with the Agora Video SDK for Windows.
Understand the tech
The following figure shows the workflow to integrate into your app in order to add Interactive Live Streaming Premium functionality.
As shown in the figure, the workflow for adding Interactive Live Streaming Premium in your project is as follows:
-
Set the client role Each user in an Interactive Live Streaming Premium channel is either a host or an audience member. Hosts publish streams to the channel, and the audience subscribe to the streams.
-
Retrieve a token A token is the credential that authenticates a user when your app client joins a channel. In a test or production environment, your app client retrieves tokens from a server in your security infrastructure.
-
Join a channel Call
joinChannel
to create and join a channel. App clients that pass the same channel name join the same channel. -
Publish and subscribe to audio and video in the channel After joining a channel, app clients with the role of the host can publish audio and video. For an auidence memeber to send audio and video, you can call
setClientRole
to switch the client role.
For an app client to join a channel, you need the following information:
- The App ID: A randomly generated string provided by Agora for identifying your app. You can get the App ID from Agora Console.
- The user ID: The unique identifier of a user. You need to specify the user ID yourself, and ensure that it is unique in the channel.
- A token: In a test or production environment, your app client retrieves tokens from a server in your security infrastructure. For this page, you use a temporary token with a validity period of 24 hours that you retrieve from Agora Console.
- The channel name: A string that identifies the channel for the live stream.
Sample projects
We provide open-source OpenLive-Windows and OpenLive-Windows-MFC sample projects that implements the basic interactive live video streaming on GitHub. You can download it and view the source code.
Prerequisites
- Microsoft Visual Studio 2017 or later
- A Windows device running Windows 7 or later
- A valid Agora account. (Sign up for free)
Set up the development environment
In this section, we will create a Windows project and integrate the SDK into the project.
Create a Windows project
Now, let's build a Windows project from scratch. Skip to Integrate the SDK if a Windows project already exists.
Create a Windows project
- Open Microsoft Visual Studio and click Create new project.
- On the New Project panel, choose MFC Application as the project type, input the project name, choose the project location, and click OK.
- On the MFC Application panel, choose Application type > Dialog based, and click Finish.
Integrate the SDK
Follow these steps to integrate the Agora Video SDK into your project.
1. Configure the project files
-
Go to SDK Downloads, download the latest version of the Agora SDK for Windows, and unzip the downloaded SDK package.
-
Copy the x86 or x86_64 folder of the downloaded SDK package to your project files according to your development environment.
2. Configure the project properties
Right-click the project name in the Solution Explorer window, click Properties to configure the following project properties, and click OK.
-
Go to the C/C++ > General > Additional Include Directories menu, click Edit, and input $(SolutionDir)include in the pop-up window.
-
Go to the Linker > General > Additional Library Directories menu, click Edit, and input $(SolutionDir) in the pop-up window.
-
Go to the Linker > Input > Additional Dependencies menu, click Edit, and input agora_rtc_sdk.lib in the pop-up window.
Implement the basic interactive live streaming
This section introduces how to use the Agora SDK to start the interactive live video streaming. The following figure shows the API call sequence of the interactive live video streaming.
1. Create the UI
Create the user interface (UI) for the interactive video streaming in your project. Skip to Initialize IRtcEngine if you already have a UI in your project.
If you are implementing the interactive video streaming, we recommend adding the following elements into the UI:
- The view of the host
- The exit button
When you use the UI setting of the sample project, you can see the following interface:
2. Initialize IRtcEngine
Create and initialize the IRtcEngine
object before calling any other Agora APIs.
In this step, you need to use the App ID of your project. Refer to Get Started With Agora to create an Agora project and get the App ID in Console.
Call the createAgoraRtcEngine
method and the initialize
method, and pass in the App ID to initialize the IRtcEngine
object.
You can also listen for callback events, such as when the local user joins or leaves the channel.
3. Set the channel profile
After initializing the IRtcEngine
object, call the setChannelProfile
method to set the channel profile as LIVE_BROADCASTING
.
One IRtcEngine
object uses one profile only. If you want to switch to another profile, release the current IRtcEngine
object with the release
method and create a new one before calling the setChannelProfile
method.
4. Set the client role
A LIVE_BROADCASTING
channel has two client roles: BROADCASTER
and AUDIENCE
, and the default role is AUDIENCE
. After setting the channel profile to LIVE_BROADCASTING
, your app may use the following steps to set the client role:
-
- Allow the user to set the role as
BROADCASTER
orAUDIENCE
.
- Allow the user to set the role as
-
- Call the
setClientRole
method and pass in the client role set by the user.
- Call the
Note that in the interactive live streaming, only the host can be heard and seen. If you want to switch the client role after joining the channel, call the setClientRole
method.
5. Set the local video view
After setting the channel profile and client role, set the local video view before joining the channel so that the host can see the local video in the interactive streaming. Follow these steps to configure the local video view:
- Call the
enableVideo
method to enable the video module. - Call the
setupLocalVideo
method to configure the local video display settings.
6. Join a channel
After setting the client role and the local video view, you can call the joinChannel
method to join a channel. In this method, set the following parameters:
channelName
: Specify the channel name that you want to join.
token
: Pass a token that identifies the role and privilege of the user. You can set it as one of the following values:- A temporary token generated in Console. A temporary token is valid for 24 hours. For details, see Get a Temporary Token. When joining a channel, ensure that the channel name is the same with the one you use to generate the temporary token.
- A token generated at the server. This applies to scenarios with high-security requirements. For details, see Generate a token from Your Server. When joining a channel, ensure that the channel name and
uid
is the same with those you use to generate the token.
- If your project has enabled the app certificate, ensure that you provide a token.
- Ensure that you do not set
token
as "".
uid
: ID of the local user that is an integer and should be unique. If you setuid
as 0, the SDK assigns a user ID for the local user and returns it in theonJoinChannelSuccess
callback.Once the user joins the channel, the user subscribes to the audio and video streams of all the other users in the channel by default, giving rise to usage and billing calculation. If you do not want to subscribe to a specified stream or all remote streams, call themute
methods accordingly.
For more details on the parameter settings, see joinChannel.
7. Set the remote video view
In the interactive video streaming, you should also be able to see all the hosts, regardless of your role. This is achieved by calling the setupRemoteVideo
method after joining the channel.
Shortly after a remote host joins the channel, the SDK gets the host's user ID in the onUserJoined
callback. Call the setupRemoteVideo
method in the callback and pass in the uid
to set the video view of the host.
8. Leave the channel
Call the leaveChannel
method to leave the current channel according to your scenario, for example, when the interactive streaming ends, when you need to close the app, or when your app runs in the background.
Run the project
Run the project on your Windows device. When you set the role as the host and successfully start the interactive video streaming, you can see the video view of yourself in the app. When you set the role as the audience and successfully join the interactive video streaming, you can see the video view of the host in the app.