服务器录制
  • 平台类型
  • 框架 / 引擎

录制单流

更新时间:2020-05-18 20:50

1 功能简介

本地服务器录制 SDK 支持录制房间内的单条音视频流,集成 SDK 后,即可开始使用 SDK 的单流录制功能。

2 使用步骤

2.1 设置回调监听

在初始化之前需要先继承实现 ICallback,并设置回调监听。

  • 接口原型:

    ZEGO_API bool SetCallback(ICallback* pCB)

  • 参数:

    pCB:回调对象指针。

  • 备注:

    在初始化 SDK 前可以根据需要调用如下接口:

    SetLogDirAndSize 设置日志文件路径和大小

    SetUseTestEnv 设置是否使用测试环境

2.2 初始化 SDK

使用获取的 ZEGO AppID、AppSign 来初始化 SDK,不初始化 SDK 将导致 SDK 相关功能异常。若没有 AppID、AppSign,请在 即构管理控制台 申请;如何申请请查看 获取 AppID 和 AppSign 指引

  • 接口原型:

    ZEGO_API bool InitSDK(unsigned int uiAppID, unsigned char* pBufAppSignature, int nSignatureSize)

  • 参数:

    uiAppID:ZEGO 派发的数字 ID,各个开发者的唯一标识。

    pBufAppSignature:ZEGO 派发的签名,用来校验对应 AppID 的合法性。

    nSignatureSize:签名长度(字节)

  • 异步回调接口:

    class ICallback
    {
     public:
        virtual void OnInitSDK(int errorCode) {}
    }

    errorCode == 0 表示初始化成功。

2.3 登录房间

在初始化成功之后,录制之前需要先登录房间。

  • 接口原型:

    ZEGO_API bool LoginRoom(const char* pszRoomID)

  • 参数:

    pszRoomID:房间 ID,正在推流的房间的 ID。

  • 异步回调接口:

    class ICallback
    {
     public:
        virtual void OnLoginRoom(int errorCode, const char *pszRoomID) = 0;
    }

2.4 开始录制

  1. 此接口必须在初始化成功后调用。
  2. 建议在登录房间后并收到 OnStreamUpdate 流信息更新回调后,根据增加流信息来开启录制。
  3. 可在开始录制之前调用 GetMaxRecordCount 获取 SDK 支持的最大同时录制流数,根据其值处理同时录制的流数量。
  • 接口原型:

    ZEGO_API bool StartRecordSingleStream(const char* pszStreamID, const char *pszPathAndName, MuxerStreamType nMuxerStreamType = MuxerStreamTypeBoth, int nFragmentSeconds = 2)

  • 参数:

    pszStreamID:待录制的流 ID。

    pszPathAndName:录制文件全路径(包括文件名),且必须以 .mp4 结尾,SDK 内部会自动创建对应路径,若有相同的文件会直接覆盖原文件。

    nMuxerStreamType:录制流类型,请参考 MuxerStreamType,默认录制音视频。

    nFragmentSeconds:录制文件分片间隔(0~10s),0表示不分片,大于0表示分片;默认间隔为2s。进行分片能保证录制发生异常中断等问题时,已保存的录制文件可以正常播放;注意,这儿的分片是 SDK 内部处理录制文件的一个逻辑概念,而不是将录制文件按间隔时间分成多个小文件存储。

  • 异步回调接口:

    class ICallback
    {
     public:
        virtual void OnStreamRecordBegin(const char* pszStreamID, const char *pszPathAndName) = 0;
    }

    录制启动成功会收到录制开始的回调。

2.5 停止录制

  • 接口原型:

    ZEGO_API bool StopRecordSingleStream(const char* pszStreamID)

  • 参数:

    pszStreamID:流 ID。

  • 异步回调接口:

    class ICallback
    {
     public:
        virtual void OnStreamRecordEnd(const char* pszStreamID, const char *pszPathAndName, RecordEndReason reason) = 0;
    }
  • 备注:

    建议在不需要再录制的时候,做以下处理:

    1. 调用 LogoutRoom 退出房间。
    2. 调用 LIVEROOM::SetCallback(nullptr); 去掉回调监听。
    3. 调用 UnInitSDK 反初始化 SDK。

3 API 参考列表

方法 描述
SetUseTestEnv 设置是否使用测试环境,开发阶段可使用测试环境测试
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 退出房间