2023/12/12 13:59:40
集成录制 SDK
本页介绍如何设置环境以及集成声网本地服务端录制 SDK。
录制某频道内的音视频信息相当于将一个特殊的观众加入该频道。该观众获取频道内的音视频信息,将获取到的信息转码并储存在 Linux 服务器上。因此你必须:
- 将本地服务端录制 SDK 集成在你的 Linux 服务器上
- 在本地服务端录制 SDK 中使用和进行音视频通话的 RTC SDK 相同的 App ID
信息
声网本地服务端录制 SDK 需要集成在你的 Linux 服务器,而不是你的 App 上。如果你不想自行部署 Linux 服务器,可尝试声网云端录制。
前提条件
下表列出了安装声网本地服务端录制 SDK 的基本要求:
硬件和网络 | 要求 |
---|---|
服务器 | 物理或虚拟:
|
网络 | 这台 Linux 服务器要接入公网,有公网 IP。 |
带宽 | 根据需要同时录制的频道数量和频道内情况确定所需带宽。以下数据可供参考:录制一个分辨率为 640 × 480 的画面需要的带宽约为 500 Kbps;录制一个有两个人的频道则需 1 Mbps;同时录制 100 个这样的频道,需要带宽为 100 Mbps。关于分辨率和带宽的关系,详见录制 API。 |
域名解析 | 服务器允许访问 qos.agoralab.co ,否则 SDK 无法上报必要的统计数据。 |
参考配置
我们测试了以下云主机配置下的录制并发性能:
- AWS:Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00 GHz
- 16 虚拟核 CPU,32 GB 内存
- 磁盘 I/O:412 MB/s
测试条件:
- 每个频道内有两个人,视频分辨率设为 320 × 240,帧率设为 15 fps。
- 对于合流录制文件,视频分辨率设为 640 × 480,视频帧率设为 15 fps,视频码率设为 500 Kbps;音频码率设为 48 Kbps。
不同频道模式和录制模式下,录制并发性能如下:
频道模式 | 录制模式 | 测试结果 |
---|---|---|
直播模式 | 视频单流录制 | 215 个频道并发时,CPU 占用为 75% 左右;建议并发 200 个频道 |
视频合流录制 | 70 个频道并发时,CPU 占用 75% 左右;建议并发 60 个频道 | |
纯音频合流录制 | 300 个频道并发时,CPU 占用为 75% 左右 | |
通信模式 | 视频单流录制 | 210 个频道并发时,CPU 占用为 75% 左右;建议并发 200 个频道 |
视频合流录制 | 60 个频道并发时,CPU 占用为 75% 左右 |
你可参考上述云主机配置和对应的录制性能,根据自己的录制需要选择和配置云主机,详见使用云容器部署录制 SDK。
下载 SDK
前往资源中心获取最新的声网本地服务端录制 SDK 软件包。软件包内容如下:
文件夹 | 描述 |
---|---|
bin | AgoraCoreService 所在的目录 |
include |
|
libs | 录制的依赖库 |
samples | 代码示例:
|
tools | 转码工具 |
准备开发环境
本地服务端录制 SDK 中包含 C++ 和 Java 两个语言的代码。根据你使用的编程语言,参考如下步骤将 SDK 集成到你的项目中。
-
为你的项目准备所需库:
- 将 include 文件夹添加到你的项目里。
- 将包含 lib 库的目录链接到 libs 文件夹下的
librecorder.a
库文件。
-
安装编译器: gcc 4.4+ 。
-
如果你的网络环境设置了防火墙限制外网访问,请使用云代理服务。
-
打开所有的录制进程所使用的 UDP 端口,端口为在
RecordingConfig
中指定的lowUdpPort
和highUdpPort
范围之间的端口。
信息
- 录制一个频道的内容需要开启一个对应的录制进程;单个录制进程需要使用 4 个 UDP 端口。进程(包括各个录制进程和系统进程)之间不得有端口冲突。
- 声网建议指定录制进程使用端口的范围。你可以为多个录制进程统一配置较大的端口范围(声网建议 40000 ~ 41000 或更大)。此时,录制 SDK 会在指定范围内为每个录制进程分配端口,并避免端口的冲突。要设置端口范围,你需要配置参数
lowUdpPort
和highUdpPort
。 - 如果不指定参数
lowUdpPort
和highUdpPort
,录制进程所使用的端口为随机端口,会有端口冲突的风险。 - 使用
iptables -L
命令查看 UDP 端口。 - 为调试方便,声网建议你打开系统的 core dump 功能以记录可能产生的程序崩溃信息。
编译代码示例
根据你选择的编程语言,参考如下步骤编译 SDK 包中的代码示例。
打开命令行工具,到 SDK 包的 samples/cpp 的目录下执行以下命令进行编译。
Shell
make
编译成功后,在该目录下会生成一个 recorder_local
可执行程序,如图所示。
下一步
你已经集成了录制 SDK,可以选择一下任意一种方式开始录制: