实现本地服务端录制
更新时间: 2021/08/31 04:08:28
本文档为您介绍通过调用 API 实现音视频通话录制的基本操作步骤。您也可以在实现基本业务逻辑的前提下,使用 NERecord SDK 提供的多种进阶核心功能。
示例项目
本地服务端录制典型场景的完整示例代码请参考 GitHub。您可以参考源代码在本地项目中实现本地服务端录制。
前提条件
请确认您已参考准备工作完成部署准备,例如创建应用、开通服务、获取 Token、部署 SDK 等。
安装环境要求
请确认您的本地环境符合以下要求:
限制 | 说明 |
---|---|
环境要求 | 支持部署在CentOS 7.3+ x64 和 Ubuntu 16.04+ x64 的操作系统中。 |
编译器 | GCC 或 G++ 编译器 5.4 及后续版本。 |
服务器 | 支持物理服务器或虚拟服务器。 |
网络 | 已接入公网,且被分配了公网 IP 地址。请根据需要同时录制的数量和房间内情况确定所需带宽。 |
操作步骤
1. 创建录制引擎实例
调用 createNERecordEngine() 创建一个录制引擎实例。
示例代码:
cppnerecord::IRecordEngine *engine = createNERecordEngine();
2. 初始化引擎实例
开始录制前,需要先调用 initialize 初始化引擎实例。
示例代码:
cppnerecord::NERecordEngineContext ctontext = {<prepare>};
engine->initialize(context);
3. 加入房间并开始录制
创建并初始化之后,需要调用 joinChannel 加入房间开始录制。默认情况下,SDK 加入房间后,监测到房间内有用户开启音视频即开始录制。
注意:本地服务端录制 SDK 加入房间之前,房间中应至少有一位成员。
示例代码:
cppengine->joinChannel(<token>, <channel>, <uid>);
参数说明:
参数 | 说明 |
---|---|
token | 安全认证签名 Token。获取 Record Token 方式请查看getRecordSdkUserChecksum。 注意: |
channel | 房间名称。加入房间之前,房间中应至少有一位成员。 |
uid | 用户的唯一标识 id,房间内每个用户的 uid 必须是唯一的。 |
注意:
- 如果 nerecord::NERecordEngineContext 中的参数 auto_subscribe_audio 和 auto_subcribe_video 设置为 false,则需要调用 updateSubscribeAudioUids() 或 updateSubscribeVideoUids() 指定录制的 uid,然后调用 startService() 开始录制,开始录制后可以调用 stopService 停止录制。
- NERecord SDK 支持通过调用 subscribeRemoteAudioStream() 或 subscribeRemoteVideoStream() 指定某个 uid 开始或停止录制。
4. 获取录制文件路径
通过 getProperties() 接口可获取录制文件保存路径。/properties/storage_dir
即日志文件所在目录。
调用 getProperties(),返回值的storage_dir字段即录制文件保存路径。
示例代码:
cppconst nerecord::NERtcRecordingEngineProperties *properties = engine->getProperties();
5. 结束录制
录制完成,调用 leaveChannel() 离开房间,离开房间时会自动停止所有录制。
录制结束后如果需要重新开始新的录制,需要重新创建实例。
注意:
录制开始后,必须通过调用 subscribeRemoteAudioStream(
示例代码:
cppengine->leaveChannel();
6. 释放资源
录制完成离开房间后,需要调用 release() 来释放资源,资源释放后将无法再次使用和回调引擎内任何资源。如果需要再次录制,必须重新创建实例。
注意:
示例代码:
cppengine->release();