调用 API 录制
声网服务端录制 SDK 支持使用命令行或调用 API 的方式实现录制。你可以根据自己的开发习惯选择一种方式。本文介绍如何通过调用 API 实现录制。
前提条件
开始前请确保你已经完成集成录制 SDK。
调用 API 实现录制
创建实例
在加入频道进行录制之前,需要调用 createAgoraRecordingEngine
方法创建一个录制实例,并将其与应用程序相关联。可根据需要创建多个实例同时录制。在该方法中你需要传入与声网 RTC SDK 相同的 App ID。
IRecordingEngineEventHandler *handler = {<prepare>};
IRecordingEngine* engine = createAgoraRecordingEngine(<APPID>, handler);
开始录制
创建实例后,调用 joinChannel
方法加入频道开始录制,在该方法中需要填写如下参数:
channelKey
:如果待录制的频道使用了 token,你需要在该参数中传入 token。详见校验用户权限。channelId
:待录制频道的频道名,必填。uid
:录制使用的用户 ID,32 位无符号整数,取值范围 1 到 (232-1),需保证唯一性,必填。config
:配置录制参数,选填,如不填则使用默认配置。详见RecordingConfig
。
RecordingConfig config = {<prepare>};
engine->joinChannel(<channelKey>, <channelId>, <uid>, config);
在默认情况下,录制实例加入频道后,监测到频道内有用户即开始录制。
如果你在 RecordingConfig
中将 triggerMode
设为了 MANUALLY_MODE
(手动模式),需要调用 startService
开始录制,开始录制后可以调用 stopService
暂停录制。
engine->startService();
engine->stopService();
startService
和stopService
必须在加入频道之后调用。
获取录制文件路径
加入频道后可以调用 getProperties
方法获取录制文件的存放路径。
当有用户加入频道时触发的 onUserJoined
回调中也包含录制文件的存放路径。
RecordingEngineProperites ps = engine->getProperties();
结束录制
录制完成后,调用 leaveChannel
方法离开频道,停止录制。
engine->leaveChannel();
录制结束后如果需要再次开始录制,必须重新创建实例。
在默认情况下,当频道空闲(无用户)超过 300 秒(在 RecordingConfig
中的 idleLimitSec
可以设置该时间)后,录制实例也会自动退出频道停止录制。
释放资源
待录制完成后,你需要调用 release
方法销毁录制实例,释放 SDK 使用的资源,释放资源后将无法再次使用和回调 SDK 内的其它方法。如需再次使用本地服务端录制,必须重新创建实例。
engine->release();
release
方法不能在回调线程中调用。
相关文档
在录制过程中,你还可以参考如下文档: