本文介绍如何调用 API 进行通话或直播录制。 你也可以通过命令行录制 进行录制。命令行录制和调用 API 录制实现的是相同的功能,根据自己的需要选择一种即可。
开始前请确保你已经完成集成录制 SDK。
IRecordingEngineEventHandler *handler = {<prepare>};
IRecordingEngine* engine = createAgoraRecordingEngine(<APPID>, handler);
在加入频道进行录制之前,需要调用 createAgoraRecordingEngine
方法创建一个录制实例,并将其与应用程序相关联。可根据需要创建多个实例同时录制。在该方法中你需要传入与声网 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();
startService
和stopService
必须在加入频道之后调用。
RecordingEngineProperites ps = engine->getProperties();
加入频道后可以调用 getProperties
方法获取录制文件的存放路径。
当有用户加入频道时触发的 onUserJoined 回调中也包含录制文件的存放路径。
engine->leaveChannel();
录制完成后,调用 leaveChannel
方法离开频道,停止录制。
录制结束后如果需要再次开始录制,必须重新创建实例。
在默认情况下,当频道空闲(无用户)超过 300 秒(在 RecordingConfig
中的 idleLimitSec
可以设置该时间)后,录制实例也会自动退出频道停止录制。
engine->release();
待录制完成后,你需要调用 release
方法销毁录制实例,释放 SDK 使用的资源,释放资源后将无法再次使用和回调 SDK 内的其它方法。如需再次使用本地服务端录制,必须重新创建实例。
release
方法不能在回调线程中调用。