声网提供以下示例项目,演示了发送和接收 PCM 格式的音频流和 H.264 格式的音频流。
sample_send_h264_pcm
sample_receive_h264_pcm
你可以先按照本文所列步骤编译和运行示例项目,体验发送和接收媒体流,然后通过实现媒体流传输了解集成基本流程和阅读示例代码,理解声网 RTSA Pro SDK 的 API,在此基础上将相应的功能集成到你自己的项目中。
请确保你的开发环境满足以下要求:
$ sudo apt install cmake
在编译和运行示例项目前,你首先需要通过以下步骤获取声网 App ID:
由于该示例项目需要使用声网 RESTful API,因此你需要进行 HTTP 基本认证。你需要获取声网提供的客户 ID 和客户密钥。
在 SDK 包中 example
目录下通过以下命令下载声网提供的用于测试的音视频文件:
$ ./sync-data.sh
运行完成后,会在 example
目录下生成 test_data
文件夹,内含各种格式的音视频文件。
在 SDK 包中 example
目录下通过以下命令编译示例项目:
$ ./build.sh
参数说明:
-b
: 编译方式,可设为 build
、rebuild
和 clean
,默认为 build
。编译完成后,会在 example
目录下生成 build/bin
文件夹,内含一些可执行文件。
自 v2.1.1 起,SDK 下载包中包含了许可证文件,因此你无需购买商用 License 即可直接试用 RTSA Pro SDK。试用时效为 90 天且存在 10 路并发限制。如果你需要在生产环境使用 RTSA Pro SDK,请联系 sales@agora.io 购买商用 License。
如果你使用 SDK 包自带的许可证文件进行免费体验,可跳过此步骤。
如果你已经购买了商用 License,可以先通过 license_query 查询你的 App ID 下的所有 License key。
$ ./license_query --appId YOUR_APPID --customerKey YOUR_KEY --customerSecret YOUR_SECRET
其中:
YOUR_APPID
需要替换为你创建的 App ID。YOUR_KEY
需要替换为你刚才保存的 key_and_secret.txt
文件里的 key 值。YOUR_SECRET
需要替换为你刚才保存的 key_and_secret.txt
文件里的 secret 值。运行以下命令激活 License,生成对应的证书。
$ ./license_activator --appId YOUR_APPID --customerKey YOUR_KEY --customerSecret YOUR_SECRET --deviceId YOUR_DEVICE_ID --certOutputDir .
其中:
YOUR_APPID
需要替换为你创建的 App ID。YOUR_KEY
需要替换为你刚才保存的 key_and_secret.txt
文件里的 key 值。YOUR_SECRET
需要替换为你刚才保存的 key_and_secret.txt
文件里的 secret 值。YOUR_DEVICE_ID
需要替换为设备的唯一标识码,比如设备的 IMEI 号码。该唯一标识码长度不得超过 128 字节。每次激活成功后,会消耗一个商业 License。激活成功后,默认在当前目录生成 certificate.bin ,稍后运行示例项目时会用到。
sample_send_h264_pcm
示例项目演示了发送 PCM 格式的音频流和 H.264 格式的视频流,支持以下参数:
--token
: 必填,你在声网控制台获取的 App ID 或临时 Token。--channelId
: 必填,待加入频道的名称。--userId
: 用户 ID。默认值为 0,SDK 随机分配一个用户 ID。--audioFile
: 待发送的 PCM 音频文件路径,默认值为 test_data/test.pcm
。--videoFile
: 待发送的 H264 视频文件路径,默认值为 test_data/test_multi_slice.h264
。--sampleRate
: 待发送音频的采样率,默认值为 48000。--numOfChannels
: 待发送音频的声道数,默认值为 1,单声道。--fps
: 待发送视频的帧率,默认值为 30。在 SDK 包中 example
目录下通过以下命令运行示例项目,将媒体流发送至一个频道:
$ build/bin/sample_send_h264_pcm --token <your_temp_token> --channelId rtsatest
运行成功后,你可以按如下步骤进行验证:
克隆 API-Examples-Web 到本地,在浏览器中打开 Demo/index.html
文件。
点击 basicvideocalling 下的 tryitnow,进入视频通话 demo 界面。
输入你的 App ID、RTC 临时 Token、频道名 rtsatest
及任意用户名,点击 join。成功加入频道后,你就可以看到和听到实时音视频流了。
sample_receive_h264_pcm
示例项目演示了接收 PCM 格式的音频流和 H.264 格式的视频流,支持以下参数:
--token
: 必填,你在声网控制台获取的 App ID 或临时 Token。--channelId
: 必填,待加入频道的名称。--userId
: 用户 ID。默认值为 0,SDK 随机分配一个用户 ID。--remoteUserId
: 远端用户 ID,表示仅订阅该远端用户发送的媒体流。无默认值,如不指定,表示订阅所有远端用户发送的媒体流。--audioFile
: 待接收的 PCM 音频流的存储路径和文件名,默认值为 received_audio.pcm
。--videoFile
: 待接收的 YUV 视频流的存储路径和文件名,默认值为 received_video.h264
。--sampleRate
: 待接收音频的采样率,默认值为 48000。--numOfChannels
: 待接收音频的声道数,默认值为 1,单声道。你可以先通过声网的 API-Examples-Web 加入一个频道,然后在 SDK 包中 example
目录下通过以下命令运行示例项目,接收同一频道的音视频流:
$ build/bin/sample_receive_h264_pcm --token <your_temp_token> --channelId rtsatest
运行成功后,SDK 会在 example
目录下生成 received_audio.pcm
和 received_video.h264
文件用于存储接收到的音频流和视频流。