声网提供以下示例项目,演示了发送和接收 PCM 格式的音频流和 H.264 格式的音频流。
sample_send_h264_pcm
sample_receive_h264_pcm
你可以先按照本文所列步骤编译和运行示例项目,体验发送和接收媒体流,然后通过实现媒体流传输了解集成基本流程和阅读示例代码,理解声网 RTSA Pro SDK 的 API,在此基础上将相应的功能集成到你自己的项目中。
请确保你的开发环境满足以下要求:
Ubuntu 14.04 及以上版本,建议 18.04
内存不小于 2 GB。
CMake 3.6.0 及以上版本。可通过以下命令安装:
$ sudo apt install cmake
// 确认 CMake 版本
$ cmake --version
搭建 Native Development Kit (NDK) 环境:
在 NDK 官网下载最新版并解压。
参考以下步骤配置 NDK 环境参数:
// 1. 打开 ~/.bashrc 文件
$ sudo vim ~/.bashrc
// 2. 设置环境变量
$ export ANDROID_NDK="<the_path_of_your_ndk_package>"
// 3. 指定 NDK 路径
$ export PATH=${PATH}:$ANDROID_NDK
// 4. 使配置生效
$ source ~/.bashrc
Java Development Kit (JDK)。可通过以下命令安装 :
$ sudo apt install openjdk-8-jdk
一台拥有 root 权限的 Android 设备(实体机、虚拟机或云手机)。
安装 ADB 工具包,用于将示例项目部署到拥有 root 权限的 Android 的设备。
下载最新版媒体流加速(原实时码流加速) Pro SDK。
在编译和运行示例项目前,你首先需要通过以下步骤获取声网 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。如果你需要在生产环境使用 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 ,稍后运行示例项目时会用到。
为了在 Android 设备上运行这些示例项目,你需要将 bin
文件夹 push 到 Android 设备上某个有执行权限的目录,例如 /data
目录,并且在运行示例项目前指定动态库的搜索路径。具体步骤如下:
// 1. 检查是否已经连接 Android 设备
$ adb devices
// 2. 将 bin 文件夹 push 到 Android 设备的 /data 目录
$ adb push bin /data
// 3. 进入 android 设备的命令行工具
$ adb shell
// 4. 进入 data 目录
$ cd /data
// 5. 进入 bin 目录
$ cd ./bin
// 6. 添加执行权限
$ chmod a+x ./*
// 7. 指定动态库的搜索路径
$ export LD_LIBRARY_PATH=./libs
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
文件用于存储接收到的音频流和视频流。