本文介绍如何集成 C++ SDK 并跑通声网提供的示例项目。
确保你的服务端开发机满足以下要求。
操作系统
CPU 架构
如需支持其他架构,请联系 sales@agora.io。
性能要求
网络要求
以 Ubuntu 20.04.3 LTS 为例,在你的服务端安装以下依赖:
# 安装 aptitude
sudo apt install aptitude
# 安装 build-essential libx11-dev libxcomposite-dev libxext-dev libxfixes-dev libxdamage-dev cmake
sudo aptitude install libx11-dev libxcomposite-dev libxext-dev libxfixes-dev libxdamage-dev cmake
如果你的操作系统为 CentOS,以 CentOS 为例,在你的服务端安装以下依赖:
sudo yum groupinstall "Development Tools"
sudo yum install wget
sudo yum groupinstall X11
详见开始使用声网平台获取 声网 App ID 和 RTC 临时 Token。
获取最新的 SDK 并解压缩。你需要联系 sales@agora.io 获取 SDK 下载地址。
以 x86_64 平台的 SDK 为例,运行以下命令构建示例项目:
# 切换到示例项目目录
cd agora_rtc_sdk/example
# 构建示例项目
./build-x86_64.sh
# 同步项目所需的音视频数据
cd out
../sync-data.sh
# 将 SDK 中的库导出到 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=../../agora_sdk:$LD_LIBRARY_PATH
本文以 sample_send_h264_pcm 示例项目为例,演示服务端发流效果。
运行 sample_send_h264_pcm 示例项目。将 --token
的参数 YOUR_RTC_TOKEN
替换为你的 RTC 临时 Token。将 --channelId
的参数替换为你的声网 RTC 频道名,本文设为 demo_channel
。
# 运行 sample_send_h264_pcm 示例发送 h264 编码格式的视频和 pcm 格式的音频
./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
你可以按如下步骤进行验证:
克隆 API-Examples-Web 到本地,在浏览器中打开 Demo/index.html
文件。
点击 basicvideocalling 下的 tryitnow,进入视频通话 demo 界面。
输入你的 App ID、RTC 临时 Token、频道名 demo_channel
及任意用户名,点击 join。成功加入频道后,你就可以看到和听到实时音视频流了。
本文以 sample_receive_h264_pcm 示例项目为例,演示服务端收流效果。
运行 sample_receive_h264_pcm 示例项目。将 --token
的参数 YOUR_RTC_TOKEN
替换为你的 RTC 临时 Token。将 --channelId
的参数替换为你的声网 RTC 频道名,例如 demo_channel
。
# 运行 sample_receive_h264_pcm 示例接收 h264 编码格式的视频和 pcm 格式的音频
./sample_receive_h264_pcm --token YOUR_RTC_TOKEN --channelId demo_channel
运行成功之后,控制台会打印以下信息:
[ 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
你可以按如下步骤进行验证:
克隆 API-Examples-Web 到本地,在浏览器中打开 Demo/index.html
文件。
点击 basicvideocalling 下的 tryitnow,进入视频通话 demo 界面。
输入你的 App ID、RTC 临时 Token、频道名 demo_channel
及任意用户名,点击 join,开始发送音视频流。
服务端会收到客户端发送的音视频流:
[ 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
收到的音视频流会分别存储为 received_video.h264
和 received_audio.pcm
文件。