本地服务端录制
  • Linux : C++
  • 概述
  • 下载
  • 跑通示例源码
  • 快速开始
  • 性能数据
  • API 文档
  • 常见问题
  • 文档中心
  • 本地服务端录制
  • 快速开始
  • 录制单流

录制单流

更新时间:2024-02-19 11:27

1 功能简介

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

2 前提条件

ga01596a1c8 之前的 ZEGO 本地服务端录制 SDK 版本(2022-03-23 之前发布)需要在 ZEGO 控制台 申请有效的 AppID,并联系 ZEGO 技术支持获取 AppSign。若您需要升级鉴权方式,可参考 如何从 AppSign 鉴权升级为 Token 鉴权

3 使用步骤

3.1 设置回调监听

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

  • 接口原型:

    ZEGO_API bool SetCallback(ICallback* pCB)
  • 参数:

    pCB:回调对象指针。

  • 备注:

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

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

3.2 初始化 SDK

调用 InitSDK 接口初始化 SDK,将申请到的 AppID 传入参数 “uiAppID”。

  • 接口原型:

    ZEGO_API bool InitSDK(unsigned int uiAppID)
  • 参数:

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

  • 异步回调接口:

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

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

3.3 设置 token

在登录房间之前调用 SetCustomToken 接口将 Token 传入 SDK。

  • 接口原型:

    ZEGO_API void SetCustomToken(const char *thirdPartyToken)
  • 参数:

    thirdPartyToken:鉴权 Token。

3.4 登录房间

录制之前需要先登录房间。

  • 接口原型:

    ZEGO_API bool LoginRoom(const char* pszRoomID)
  • 参数:

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

  • 异步回调接口:

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

3.5 开始录制

  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、.m3u8、.flv、.mp3、.aac 结尾(其中 .mp3 和 .aac 只支持录制纯音频),SDK 内部会自动创建对应路径,若有相同的文件会直接覆盖原文件。

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

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

  • 异步回调接口:

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

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

3.6 停止录制

  • 接口原型:

    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。

4 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 退出房间
本篇目录