本文介绍如何调用 API 进行通话或直播录制。 你也可以通过命令行录制 进行录制。命令行录制和调用 API 录制实现的是相同的功能,根据自己的需要选择一种即可。

开始前请确保你已经完成集成录制 SDK

创建实例

IRecordingEngineEventHandler *handler = {<prepare>};
IRecordingEngine* engine = createAgoraRecordingEngine(<APPID>, handler);

在加入频道进行录制之前,需要调用 createAgoraRecordingEngine 方法创建一个录制实例,并将其与应用程序相关联。可根据需要创建多个实例同时录制。在该方法中你需要传入与 Agora Native/Web SDK 相同的 App ID。

开始录制

RecordingConfig config = {<prepare>};
engine->joinChannel(<channelKey>, <channelId>, <uid>, config);

创建实例后,调用 joinChannel 方法加入频道开始录制,在该方法中需要填写如下参数:

  • channelKey:如果待录制的频道使用了 token,你需要在该参数中传入 token。详见校验用户权限

  • channelId:待录制频道的频道名,必填。

  • uid:录制使用的用户 ID,32 位无符号整数,取值范围 1 到 (232-1),需保证唯一性,必填。

  • config:配置录制参数,选填,如不填则使用默认配置。详见RecordingConfig

在默认情况下,录制实例加入频道后,监测到频道内有用户即开始录制。

如果你在 RecordingConfig 中将 triggerMode 设为了 MANUALLY_MODE(手动模式),需要调用 startService 开始录制,开始录制后可以调用 stopService 暂停录制。

engine->startService();
engine->stopService();

startServicestopService 必须在加入频道之后调用。

获取录制文件路径

RecordingEngineProperites ps = engine->getProperties();

加入频道后可以调用 getProperties 方法获取录制文件的存放路径。

当有用户加入频道时触发的 onUserJoined 回调中也包含录制文件的存放路径。

结束录制

engine->leaveChannel();

录制完成后,调用 leaveChannel 方法离开频道,停止录制。

录制结束后如果需要再次开始录制,必须重新创建实例。

在默认情况下,当频道空闲(无用户)超过 300 秒(在 RecordingConfig 中的 idleLimitSec 可以设置该时间)后,录制实例也会自动退出频道停止录制。

释放资源

engine->release();

待录制完成后,你需要调用 release 方法销毁录制实例,释放 SDK 使用的资源,释放资源后将无法再次使用和回调 SDK 内的其它方法。如需再次使用本地服务端录制,必须重新创建实例。

release 方法不能在回调线程中调用。

相关链接