本页介绍如何设置环境以及集成声网本地服务端录制 SDK。
你需要将声网本地服务端录制 SDK 集成在你的 Linux 服务器上而不是你的 App 上。
如果你不想自行部署 Linux 服务器,可尝试声网云端录制。
录制某频道内的音视频信息相当于将一个特殊的观众加入该频道。该观众获取频道内的音视频信息,将获取到的信息转码并储存在 Linux 服务器上。 因此,你必须:
下表列出了安装声网本地服务端录制 SDK 的基本要求:
硬件和网络 | 要求 |
服务器 | 物理或虚拟
|
网络 | 这台 Linux 服务器要接入公网,有公网 IP |
带宽 | 根据需要同时录制的频道数量和频道内情况确定所需带宽。以下数据可供参考:录制一个分辨率为 640*480 的画面需要的带宽约为 500kbps;录制一个有两个人的频道则需 1Mbps;同时录制 100 个这样的频道,需要带宽为 100Mbps。关于分辨率和带宽的关系,详见 录制 API。 |
域名解析 | 服务器允许访问 qos.agoralab.co,否则 SDK 无法上报必要的统计数据。 |
我们测试了以下云主机配置下的录制并发性能:
测试条件:
不同频道模式和录制模式下,录制并发性能如下:
频道模式 | 录制模式 | 测试结果 |
---|---|---|
直播模式 | 视频单流录制 | 215 个频道并发时,CPU 占用为 75% 左右 建议并发 200 个频道 |
视频合流录制 | 70 个频道并发时,CPU 占用 75% 左右 建议并发 60 个频道 |
|
纯音频合流录制 | 300 个频道并发时,CPU 占用为 75% 左右 | |
通信模式 | 视频单流录制 | 210 个频道并发时,CPU 占用为 75% 左右 建议并发 200 个频道 |
视频合流录制 | 60 个频道并发时,CPU 占用为 75% 左右 |
你可参考上述云主机配置和对应的录制性能,根据自己的录制需要选择和配置云主机,详见使用云容器部署录制 SDK。
在你的 Linux 服务器上进行以下操作:
下载最新的声网本地服务端录制 SDK 软件包。软件包内容如下:
文件夹 | 描述 |
bin | AgoraCoreService 所在的目录 |
include |
|
libs | 录制的依赖库 |
samples | 代码示例
|
tools | 转码工具 |
安装编译器: gcc 4.4+ 。
配置好 jdk 环境,并确保包含 jni.h。
配置好 Java 的 CLASSPATH
和 Linux 的 LD_LIBRARY_PATH
环境变量。
如果你的网络环境设置了防火墙限制外网访问,请使用云代理服务。
打开所有的录制进程所使用的 UDP 端口,端口为在 RecordingConfig
中指定的 lowUdpPort
和 highUdpPort
范围之间的端口。
- 录制一个频道的内容需要开启一个对应的录制进程;单个录制进程需要使用 4 个 UDP 端口。进程(包括各个录制进程和系统进程)之间不得有端口冲突。
- 声网建议指定录制进程使用端口的范围。你可以为多个录制进程统一配置较大的端口范围(声网建议 40000 ~ 41000 或更大)。此时,本地服务端录制 SDK 会在指定范围内为每个录制进程分配端口,并避免端口的冲突。要设置端口范围,你需要配置参数
lowUdpPort
和highUdpPort
。- 如果不指定参数
lowUdpPort
和highUdpPort
,录制进程所使用的端口为随机端口,会有端口冲突的风险。- 使用
iptables -L
命令查看 UDP 端口。
打开命令行工具,在 samples/java 路径下执行如下命令进行环境预设置。其中 jni_path
请填入 jni.h
文件绝对路径,例如 /usr/java8u161/jdk1.8.0_161/include/
:
source build.sh pre_set jni_path
在 samples/java 下执行编译脚本:
./build.sh build
编译完成,在本目录下生成一个 bin 文件夹,其中的子目录 io/agora/recording 下会包含一个 librecording.so
文件,如图所示。
完成编译后你就可以使用 demo 在命令行中进行录制了,详见命令行录制。如果你需要在自己的项目中调用 API 进行录制,还需要将 SDK 相关文件导入项目。
将以下文件复制到你的项目:
librecording.so
文件AgoraCoreService
文件(位于 bin
文件夹)samples/java/src/io/agora/recording
目录下)RecordingEventHandler.java
RecordingSDK.java
/common/Common.java
/common/RecordingConfig.java
/common/RecordingEngineProperties.java
举例来说,假设项目顶层目录为 ROOT_DIR
,将 librecording.so
文件复制到 ROOT_DIR/lib
目录下,将 AgoraCoreService
文件复制到 ROOT_DIR/bin
目录下,将上述 Java 文件复制到 ROOT_DIR/src/io/agora/recording
目录下。
运行 Java 程序时,设置 -Djava.library.path=ROOT_DIR/lib
参数来指定动态库的目录地址。此外你需要在开始录制时设置 RecordingConfig
中的 appliteDir
参数为 ROOT_DIR/bin
。
你已经集成了本地服务端录制 SDK,可以调用 API 进行录制了。详见声网 Recording Java API Reference。