Compile and run the sample project

Updated

Set up, compile, and run the sample Server Gateway project provided by Agora.

Agora provides a runnable sample project with the Server Gateway SDK. This page shows you how to run the sample project to send and receive media streams.

Get the sample project

Download the latest x86-64 SDK package and decompress the file. If you need the SDK build for other architectures, submit a ticket to technical support.

Compile the sample project

Run the following commands to compile the sample project:

# Switch to the sample project folder
cd agora_rtc_sdk/example
# Build the sample project
./build-x86_64.sh
# Sync and video/audio data needed by the project
cd out
../sync-data.sh
# Export the libraries from the SDK to LD_LIBRARY_PATH
export LD_LIBRARY_PATH=../../agora_sdk:$LD_LIBRARY_PATH

Send media streams from the server

This section uses the sample_send_h264_pcm project to demonstrate sending media streams from the server.

Run the sample

Run the following command to execute the sample_send_h264_pcm sample project.

# Run sample_send_h264_pcm to send video in H.264 format and audio in PCM format
./sample_send_h264_pcm --token YOUR_RTC_TOKEN --channelId demo_channel --videoFile test_data/send_video.h264 --audioFile test_data/send_audio_16k_1ch.pcm

Replace the parameter value of --token, with your Video SDK temporary token. Replace the parameter value of --channelId with the value of your Video SDK channel ID.

Use the same Video SDK channel ID that you used to generate the temporary token.

Use the web demo to receive streams sent from the server

To simulate a client receiving data in a browser, use the Agora Web demo.

  1. Use a PC or mobile device to open the Agora Video SDK Web SDK sample project and fill in the following fields:

    • APP ID:Specify your Agora app ID. The ID must be the same as the one you used for your server.
    • Channel Name:Specify the same channel name you used for the server.
    • Token: Specify a valid Video SDK temporary token.
  2. Click Join to receive media streams from the server.

Receive media streams from the client

This section uses the sample_receive_h264_pcm project to demonstrate receiving media streams from the client.

Run the sample

Run the following command to launch the sample_receive_h264_pcm project.

# Run sample_receive_h264_pcm to receive video in H.264 format and audio in PCM format
./sample_receive_h264_pcm --token YOUR_RTC_TOKEN --channelId demo_channel

Replace the parameter value of --token, with your Video SDK temporary token. Replace the parameter value of --channelId with the value of your Video SDK channel ID.

When the sample project is running, the console outputs the following information:

[ APP_LOG_INFO ] Subscribe streams from all remote users
[ APP_LOG_INFO ] Start receiving audio & video data ...
[ APP_LOG_INFO ] Created file received_audio.pcm to save received PCM samples
[ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 4088243221, state 1, reason 0
[ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 4088243221, state 2, reason 6
[ APP_LOG_INFO ] onUserInfoUpdated: userId 4088243221, msg 0, val 0
[ APP_LOG_INFO ] onUserInfoUpdated: userId 4088243221, msg 4, val 1
[ APP_LOG_INFO ] onUserInfoUpdated: userId 4088243221, msg 8, val 1
[ APP_LOG_INFO ] onUserInfoUpdated: userId 4088243221, msg 1, val 1

Use the web demo to send media streams to the server

  1. Use a PC or mobile device to open the Agora Video SDK Web SDK sample project and specify the following fields:

    • APP ID:Specify your Agora app ID. The ID must be the same as the one you used for your server.
    • Channel Name:Specify the same channel name you used for the server.
    • Token: Specify a valid Video SDK temporary token.
  2. Click Join to send media streams to the server.

    When the sample server project is running, the console prints the following information:

    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 0, val 1
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 4, val 1
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 8, val 1
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 1, val 1
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 0, val 0
    [ APP_LOG_INFO ] onUserInfoUpdated: userId 436868190, msg 1, val 0
    [ APP_LOG_INFO ] onUserVideoTrackSubscribed: userId 436868190, codecType 1, encodedFrameOnly 1
    [ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 436868190, state 1, reason 0
    [ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 436868190, state 2, reason 6
    [ APP_LOG_INFO ] Created file received_video.h264 to save received H264 frames
    [ APP_LOG_INFO ] onUserAudioTrackStateChanged: userId 436868190, state 0, reason 7

    The received video and audio data is saved to the received_video.h264 and received_audio.pcm files, respectively.