本地音视频流录制
介绍采用本地音视频流录制时使用的方法和回调。
getMediaRecorder
获取 AgoraMediaRecorder 对象。
public static synchronized AgoraMediaRecorder getMediaRecorder(RtcEngine engine)
详情
参数
- engine
- RtcEngine 对象。
返回值
setMediaRecorderObserver
注册 IMediaRecorderCallback 对象。
public int setMediaRecorderObserver(RtcConnection connection, IMediaRecorderCallback callback)
详情
该方法需要在初始化 RtcEngine 对象后调用。
参数
- connection
- Connection 信息。详见 RtcConnection。
- callback
- 本地音视频流录制回调,详见 IMediaRecorderCallback。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
startRecording
开启本地音视频流录制。
public int startRecording(RtcConnection connection, MediaRecorderConfiguration config)
详情
成功获取 AgoraMediaRecorder 对象后,你可以调用该方法开启本地音视频流录制。
该方法录制的是本地麦克风采集的、编码为 AAC 格式的音频或本地摄像头采集的、编码为 H.264 格式的视频。只有当检测到可录制的音视频流时,才能成功生成录制文件;当没有可录制的音视频或录制中的音视频流中断超过 5 秒后,SDK 会停止录制,并触发 onRecorderStateChanged(RECORDER_STATE_ERROR, RECORDER_ERROR_NO_STREAM)
回调。
开启本地音视频流录制后,当视频分辨率在录制过程中发生变化时,SDK 会停止录制;当音频采样率和声道数发生变化时,SDK 会持续录制并生成单个 MP4 录制文件。
参数
- connection
- Connection 信息。详见 RtcConnection。
- config
- 音视频流录制配置。详见 MediaRecorderConfiguration。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
- -2: 参数无效。请确保:
- 指定的录制文件保存路径正确且可写。
- 指定的录制文件格式正确。
- 设置的最大录制时长正确。
- -4: RtcEngine 当前状态不支持该操作。可能因为录制正在进行中或录制出错停止。
- -7: RtcEngine 尚未初始化就调用方法。请确认在调用该方法前以调用 getMediaRecorder。
- -2: 参数无效。请确保:
stopRecording
停止本地音视频流录制。
public int stopRecording(RtcConnection connection)
详情
参数
- connection
- Connection 信息。详见 RtcConnection。
返回值
- 0(ERR_OK): 方法调用成功
- < 0: 方法调用失败
- -7: RtcEngine 尚未初始化就调用方法。请确认在调用该方法前已调用 getMediaRecorder。
release
释放 AgoraMediaRecorder 对象。
public void release()
详情
该方法释放 AgoraMediaRecorder 对象使用的 RtcEngine 对象和其他所有资源。调用该方法后,如果需要再次开启录制,需要重新调用 getMediaRecorder 获取 AgoraMediaRecorder 对象。
onRecorderStateChanged
录制状态发生改变回调。
void onRecorderStateChanged(int state, int error);
本地音视频流录制状态发生改变时,SDK 会触发该回调,报告当前的录制状态和引起录制状态改变的原因。
参数
- state
- 当前的录制状态:
- RECORDER_STATE_ERROR(-1):音视频流录制出错。
- RECORDER_STATE_START(2):音视频流录制开始。
- RECORDER_STATE_STOP(3):音视频流录制停止。
- error
- 录制状态出错的原因:
- RECORDER_ERROR_NONE(0):一切正常。
- RECORDER_ERROR_WRITE_FAILED(1):录制文件写入失败。
- RECORDER_ERROR_NO_STREAM(2):没有可录制的音视频流或者录制的音视频流中断超过 5 秒。
- RECORDER_ERROR_OVER_MAX_DURATION(3):录制时长超出上限。
- RECORDER_ERROR_CONFIG_CHANGED(4):录制配置改变。
onRecorderInfoUpdated
录制信息更新回调。
void onRecorderInfoUpdated(RecorderInfo info);
成功注册该回调并开启本地音视频流录制后,SDK 会根据你在 MediaRecorderConfiguration 中设置的 recorderInfoUpdateInterval 的值周期性触发该回调,报告当前录制文件的文件名、时长和大小。
参数
- info
- 录制文件信息。详见 RecorderInfo。