录制单流
功能简介
本地服务端录制 SDK 支持录制房间内的单条音视频流,集成 SDK 后,即可开始使用 SDK 的单流录制功能。
前提条件
- 已在项目中集成 ZEGO 本地服务端录制 SDK,详情请参考 快速开始 - 集成。
- 已在 ZEGO 控制台 创建项目,并申请有效的 AppID,详情请参考 控制台 - 项目管理 中的“项目信息”。
Version: ga01596a1c8 之前的 ZEGO 本地服务端录制 SDK 版本(2022-03-23 之前发布)需要在 ZEGO 控制台 申请有效的 AppID,并联系 ZEGO 技术支持获取 AppSign。若您需要升级鉴权方式,可参考 如何从 AppSign 鉴权升级为 Token 鉴权。
使用步骤
设置回调监听
在初始化之前需要先继承实现 ICallback,并设置回调监听。
-
接口原型:
UntitledZEGO_API bool SetCallback(ICallback* pCB)
1 -
参数:
pCB
:回调对象指针。 -
备注:
在初始化 SDK 前可以根据需要调用如下接口:
SetLogDirAndSize 设置日志文件路径和大小
初始化 SDK
调用 InitSDK 接口初始化 SDK,将申请到的 AppID 传入参数 “uiAppID”。
-
接口原型:
UntitledZEGO_API bool InitSDK(unsigned int uiAppID)
1 -
参数:
uiAppID
:ZEGO 派发的数字 ID,各个开发者的唯一标识。 -
异步回调接口:
Untitledclass ICallback { public: virtual void OnInitSDK(int errorCode) {} }
1errorCode == 0 表示初始化成功。
设置 token
在登录房间之前调用 SetCustomToken 接口将 Token 传入 SDK。
-
接口原型:
UntitledZEGO_API void SetCustomToken(const char *thirdPartyToken)
1 -
参数:
thirdPartyToken
:鉴权 Token。
登录房间
录制之前需要先登录房间。
-
接口原型:
UntitledZEGO_API bool LoginRoom(const char* pszRoomID)
1 -
参数:
pszRoomID
:房间 ID,正在推流的房间的 ID。 -
异步回调接口:
Untitledclass ICallback { public: virtual void OnLoginRoom(int errorCode, const char *pszRoomID) = 0; }
1
开始录制
- 此接口必须在初始化成功后调用。
- 建议在登录房间后并收到 OnStreamUpdate 流信息更新回调后,根据增加流信息来开启录制。
- 可在开始录制之前调用 GetMaxRecordCount 获取 SDK 支持的最大同时录制流数,根据其值处理同时录制的流数量。
-
接口原型:
UntitledZEGO_API bool StartRecordSingleStream(const char* pszStreamID, const char *pszPathAndName, MuxerStreamType nMuxerStreamType = MuxerStreamTypeBoth, int nFragmentSeconds = 2)
1 -
参数:
pszStreamID:待录制的流 ID。
pszPathAndName:录制文件全路径(包括文件名),且必须以 .mp4、.m3u8、.flv、.mp3、.aac 结尾(其中 .mp3 和 .aac 只支持录制纯音频),SDK 内部会自动创建对应路径,若有相同的文件会直接覆盖原文件。
nMuxerStreamType:录制流类型,请参考 MuxerStreamType,默认录制音视频。
nFragmentSeconds:录制文件分片间隔(0~10s),0表示不分片,大于0表示分片;默认间隔为2s。进行分片能保证录制发生异常中断等问题时,已保存的录制文件可以正常播放;注意,这儿的分片是 SDK 内部处理录制文件的一个逻辑概念,而不是将录制文件按间隔时间分成多个小文件存储。
-
异步回调接口:
Untitledclass ICallback { public: virtual void OnStreamRecordBegin(const char* pszStreamID, const char *pszPathAndName) = 0; }
1
录制启动成功会收到录制开始的回调。
停止录制
-
接口原型:
UntitledZEGO_API bool StopRecordSingleStream(const char* pszStreamID)
1 -
参数:
pszStreamID:流 ID。
-
异步回调接口:
Untitledclass ICallback { public: virtual void OnStreamRecordEnd(const char* pszStreamID, const char *pszPathAndName, RecordEndReason reason) = 0; }
1 -
备注:
建议在不需要再录制的时候,做以下处理:
- 调用 LogoutRoom 退出房间。
- 调用
LIVEROOM::SetCallback(nullptr);
去掉回调监听。 - 调用 UnInitSDK 反初始化 SDK。
API 参考列表
方法 | 描述 |
---|---|
SetCallback | 设置回调监听 |
InitSDK | 初始化 SDK |
LoginRoom | 登录房间 |
GetMaxRecordCount | 获取 SDK 支持的最大同时录制流数 |
StartRecordSingleStream | 开始单流录制 |
StopRecordSingleStream | 停止单流录制 |
SetMuxerOutType | 设置录制数据输出方式 |
SetLogDirAndSize | 设置 SDK log 路径和单个 log 文件大小 |
SetConfig | 设置配置信息 |
SetMuxerCacheSize | 设置文件落地前的缓存大小(64KB~1MB) |
GetSDKVersion | 获取 SDK 版本 |
UploadLog | 上传 log 文件到 ZEGO 后台 |
UnInitSDK | 反初始化 SDK |
LogoutRoom | 退出房间 |