logo
当前页

录制单流


功能简介

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

前提条件

注意

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

使用步骤

设置回调监听

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

  • 接口原型:

    Untitled
    ZEGO_API bool SetCallback(ICallback* pCB)
    
    1
    Copied!
  • 参数:

    pCB:回调对象指针。

  • 备注:

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

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

初始化 SDK

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

  • 接口原型:

    Untitled
    ZEGO_API bool InitSDK(unsigned int uiAppID)
    
    1
    Copied!
  • 参数:

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

  • 异步回调接口:

    Untitled
    class ICallback
    {
    public:
        virtual void OnInitSDK(int errorCode) {}
    }
    
    1
    Copied!

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

设置 token

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

  • 接口原型:

    Untitled
    ZEGO_API void SetCustomToken(const char *thirdPartyToken)
    
    1
    Copied!
  • 参数:

    thirdPartyToken:鉴权 Token。

登录房间

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

  • 接口原型:

    Untitled
    ZEGO_API bool LoginRoom(const char* pszRoomID)
    
    1
    Copied!
  • 参数:

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

  • 异步回调接口:

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

开始录制

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

    Untitled
    ZEGO_API bool StartRecordSingleStream(const char* pszStreamID, const char *pszPathAndName, MuxerStreamType nMuxerStreamType = MuxerStreamTypeBoth, int nFragmentSeconds = 2)
    
    1
    Copied!
  • 参数:

    pszStreamID:待录制的流 ID。

    pszPathAndName:录制文件全路径(包括文件名),且必须以 .mp4、.m3u8、.flv、.mp3、.aac 结尾(其中 .mp3 和 .aac 只支持录制纯音频),SDK 内部会自动创建对应路径,若有相同的文件会直接覆盖原文件。

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

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

  • 异步回调接口:

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

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

停止录制

  • 接口原型:

    Untitled
    ZEGO_API bool StopRecordSingleStream(const char* pszStreamID)
    
    1
    Copied!
  • 参数:

    pszStreamID:流 ID。

  • 异步回调接口:

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

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

    1. 调用 LogoutRoom 退出房间。
    2. 调用 LIVEROOM::SetCallback(nullptr); 去掉回调监听。
    3. 调用 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退出房间

Previous

集成

Next

录制混流