在进行视频通话、直播、在线教学时,用户经常需要将视频录制保存下来,方便后续其他用户点播观看。ZEGO 提供了多种录制方案,满足不同场景下的录制需求。
录制方案 | 简介 | 适用场景 |
---|---|---|
通过客户端 SDK 录制您(本地用户)的音视频,并保存到本地。 |
需要录制您(本地用户)的音视频,并保存到本地设备(手机、电脑等终端设备)中。不支持录制其他用户的音视频。
调用方式:通过调用客户端 SDK 接口开始录制。 |
|
通过 ZEGO 云服务进行录制,并将音视频保存到您开通的云存储中。 |
调用方式:通过调用 ZEGO 服务端 API 接口开始录制。 |
|
录制直播的音视频,并保存到 ZEGO CDN 上。 |
调用方式:您在 ZEGO 控制台 开通了 CDN 录制后,默认是全局录制,无需调用服务端 API 接口;如果您需要选择性录制,请调用 ZEGO 服务端 API 接口开始录制。 |
|
通过开发者自己部署的服务端进行录制。 |
调用方式:通过调用开发者自己搭建的服务器接口开始录制。 |
通话或直播过程中,将您(本地用户)预览的音视频数据录制存储到本地设备中,保存为 mp4 或其他格式的文件。不支持录制其他用户的音视频。
请参考 下载示例源码 获取源码。
相关源码请查看 “/page/example/other/recording.nvue” 目录下的文件。
在实现录制功能之前,请确保:
录制功能接口调用流程如下图所示:
开发者可以根据此回调 capturedDataRecordStateUpdate 判断文件录制的状态或者进行 UI 的提示等。
开发者可以根据此回调 capturedDataRecordProgressUpdate 判断文件录制过程进度或者对用户界面进行 UI 的提示等。
在调用 startRecordingCapturedData 开始录制之后才会收到所设置的录制回调信息。
// 设置录制回调
this.engine.on(
"capturedDataRecordStateUpdate",
(state, errorCode, config, channel) => {
this.appendCallbackInfo(
`capturedDataRecordStateUpdate:state:${state}, errorCode:${errorCode}, config:${JSON.stringify(config)}, channel:${channel}`
);
}
);
this.engine.on(
"capturedDataRecordProgressUpdate",
(progress, config, channel) => {
this.appendCallbackInfo(
`capturedDataRecordProgressUpdate:progress:${JSON.stringify(progress)}, config:${JSON.stringify(config)}, channel:${channel}`
);
}
);
开发者需要调用 startRecordingCapturedData 以开始录制。
ZegoPublishChannel 指定录制的媒体通道,若只推一条流或只做本地预览预览应使用 MAIN。
ZegoDataRecordConfig 指定录制的配置,可以指定录制的路径以及录制的类型 ZegoDataRecordType。
若希望录制音视频则应指定为 “ZegoDataRecordType.Default 或 “ZegoDataRecordType.AudioAndVideo”,若希望只录制音频则选择 “ZegoDataRecordType.OnlyAudio”,若只录制纯视频则选择 “ZegoDataRecordType.OnlyVideo”。
// 登录房间、开始推流、启动预览等接口调用
...
// 创建录制配置,录制 mp4 格式,使用默认的方式录制
var path = plus.io.convertLocalFileSystemURL('record.mp4');
var config = new zego.ZegoDataRecordConfig(path, zego.ZegoDataRecordType.Default);
// 开始录制,使用主通道录制
this.engine.startRecordingCapturedData(config);
开发者需要调用 stopRecordingCapturedData 来结束录制。
在录制过程中,若退出房间 logoutRoom,SDK 内部会主动停止录制。
this.engine.stopRecordingCapturedData();
录制文件的播放,可选两种方式进行播放。
调用系统默认的播放器进行播放。
调用 ZegoExpressEngine 中的 ZegoMediaPlayer 组件进行播放,详情可参考 媒体播放器。
本地音视频录制支持什么格式的打包文件?
目前音视频已支持 FLV 和 MP4,纯音频已支持 AAC,通过文件路径的后缀名指定格式。其中 FLV 格式只支持 H.264 编码,MP4 格式支持 H.264 和 H.265 编码,不满足会导致没有画面或者没有音频。
存储的路径有什么要求?
存储的路径为应用有权限读写的文件路径即可,如果传入目录路径,则会在回调中返回写文件失败。
录制过程如何获取到录制文件的大小?
录制进度回调 capturedDataRecordProgressUpdate 中可以获取得到录制时长和录制文件大小。
传递一个已存在文件的文件路径,SDK 如何处理?
不会出错,但原文件内容将被清空后再写入。
使用外部采集时的录制需要注意什么?
使用外部采集时,也需要在录制之前调用 SDK 的 startPreview 方法来启动。
为什么录制出来的视频会有绿边?
使用者需要注意在开启录制的过程中不要修改视频编码分辨率,开启流量控制(开启时会依据网络环境动态调整编码分辨率)。
为什么录制过程中结束推流,录制出的视频会在这时有一瞬间的卡顿?
SDK 内部处理方式的问题,目前暂时无法解决,需要用户尽量避免出现这种操作的情况。
本地媒体录制支持录 “ZegoMediaPlayer/ZegoAudioPlayer/混音功能” 的声音吗?
可以录制以上输入源的声音,但是只有混入推流中的声音才会被录制,如果仅本地播放,则不会被录制进文件。
云端录制,即通过调用 ZEGO 服务端 API 录制音视频,并保存到您指定的 CDN 上,支持录制视频通话或者直播中任意一个用户的音视频流,并且提供各种容灾、安全机制。
适用于各种需要录制功能的场景,包括但不限于音视频通话、直播、在线课堂、在线会议等。
请参考 云端录制。
CDN 录制,是指将正在通过 CDN 直播的内容保存到相应 CDN 上。需要将音视频推到 CDN 进行直播后,才能使用该方式进行录制。
开发者需要将音视频推到 CDN 进行直播后,才能使用该方式进行录制。如果开发者只是进行视频通话或者连麦,并未将音视频推到 CDN,则无法使用此功能。
您在 ZEGO 控制台 开通了 CDN 录制后,默认是全局录制,无需调用服务端 API 接口;如果您需要选择性录制,请调用 ZEGO 服务端 API 接口开始录制。
请参考 开始 CDN 录制。
开发者自行集成 ZEGO 的服务端录制插件,并部署在自己的服务器上,然后开发者通过访问自己的服务器接口开始录制,具体说明请参考 本地服务端录制。
本方案适用于您有自己的服务端开发团队,并且有能力部署专门的服务器用于音视频录制,并能够处理好大规模并发的问题。
请参考 本地服务端录制。
联系我们
文档反馈