logo
当前页

录制单流


功能简介

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

前提条件

使用步骤

设置事件回调监听

初始化 SDK 之前,首先通过 setZegoRoomCallbacksetZegoStreamRecordCallback 接口分别设置房间回调、录制回调,便于接收音视频流录制过程中的相关事件通知。

Untitled
private static IZegoRoomCallback mRoomCallback = new IZegoRoomCallback() {
    //处理房间回调
};

private static IZegoStreamRecordCallback mStreamRecordCallback = new IZegoStreamRecordCallback() {
    //处理录制事件回调
};

public void setZegoRoomCallback(IZegoRoomCallback callback)

public void setZegoStreamRecordCallback(IZegoStreamRecordCallback callback)
1
Copied!

初始化 SDK 之前,您还可以根据需要,调用 setLogDirAndSize 接口,设置日志文件路径和大小,便于问题定位与分析。

初始化 SDK

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

Untitled
public boolean initSDK(long appID, IZegoInitSDKCompletionCallback callback)
1
Copied!

注册异步回调 onInitSDK,用于接收初始化 SDK 过程中的相关事件通知。

Untitled
public interface IZegoInitSDKCompletionCallback {
    void onInitSDK(int errorCode);
}
1
Copied!

设置 Token

初始化 SDK 之后、登录房间之前,需要调用 setCustomToken 接口,传入您获取到的 Token,用于鉴权。

Token 的获取方式,请参考 使用 Token 鉴权

Untitled
public void setCustomToken(String thirdPartyToken);
1
Copied!

登录房间

鉴权通过后,调用 loginRoom 接口登录房间。

Untitled
public boolean loginRoom(String roomID, IZegoLoginCompletionCallback callback)
1
Copied!

注册异步回调 onLoginCompletion,用于接收登录房间过程中的相关事件通知。

Untitled
public interface IZegoLoginCompletionCallback {
    void onLoginCompletion(int errorCode, String roomID);
}
1
Copied!

开始录制

登录房间成功后,调用 startRecordSingleStream 接口,开始录制音视频流。

Note
  • 建议您在登录房间成功、并收到 onStreamUpdate 流信息更新的回调通知,确认增加流的信息后,再调用 startRecordSingleStream 接口开启录制单流。
  • 您可以在开始录制之前,调用 getMaxRecordCount 接口,获取 SDK 支持的最大同时录制流数,根据其值处理同时录制的流数量。
Untitled
public boolean startRecordSingleStream(String streamID, String pathAndName, int muxerStreamType, int fragmentSeconds, ZegoRecordSingleStreamConfig config)
1
Copied!

其中:

  • streamID:指您需要进行录制的流 ID。
  • pathAndName:录制后生成文件的存档路径(包括文件名)。
    • 必须以 .mp3/.mp4/.flv/.m3u8 结尾。
    • SDK 内部会自动创建对应路径;如果路径下有相同的文件存在,会直接覆盖原文件。
  • muxerStreamType:录制流类型,请参考 ZegoMuxerStreamType,默认录制音视频。
  • fragmentSeconds:录制文件的分片间隔,单位为秒。
    • m3u8 格式取值范围为 [2, 60],其他格式取值范围为 [0, 10]。
    • 取值为 0 表示不分片;大于 0 表示分片;默认值为 2。
    • 进行分片,可以避免录制过程中发生异常、导致中断时,已保存的录制文件无法正常播放等问题发生。
  • config:进行单流录制的各项配置,详情请参考 ZegoRecordSingleStreamConfig
注意

分片 是 SDK 内部处理录制文件的一个逻辑概念,并非将录制的文件按间隔时间分成多个小文件存储。

注册异步回调 onStreamRecordBegin,用于接收录制过程中的相关事件通知。

Untitled
public interface IZegoStreamRecordCallback {

    void onStreamRecordBegin(String streamID, String pathAndName);
}
1
Copied!

录制启动成功后,会收到 onStreamRecordBegin 回调。

停止录制

当不需要录制、或录制完成后,调用 stopRecordSingleStream 接口停止录制。

Untitled
public boolean stopRecordSingleStream(String streamID)
1
Copied!

注册异步回调 onStreamRecordEnd,用于接收停止录制时的相关事件通知。

Untitled
public interface IZegoStreamRecordCallback {
    void onStreamRecordEnd(String streamID, String pathAndName, int reason);
}
1
Copied!

然后:

  1. 调用 logoutRoom 接口退出房间。
  2. 调用 setZegoRoomCallback(null)、setZegoStreamRecordCallback(null) 接口,停止回调监听。
  3. 调用 unInitSDK 反初始化 SDK。

Previous

集成

Next

录制混流