# 服务器音视频录制
# 简介
在音视频通话过程中,您可以开启音视频录制功能,菊风会将录制后的视频上传到开发者指定的七牛云存储或阿里云存储。按照文档步骤实现服务器音视频录制功能。
# 前提条件
集成服务器音视频录制功能前,请确保您已经集成了基础的多方音视频通话功能。
WARNING
SDK 不支持模拟器运行,请使用真机。
# 功能说明
平台 | 功能描述 |
---|---|
合流录制 | 支持将房间内所有用户的音视频合流录制 |
录制内容可选 | 房间内同时录制输出音频和视频两种文件 |
视频截图 | 支持房间内所有用户的音视频的截图 |
自定义布局 | 支持房间视频画面自定义布局 |
# 适用场景
应用行业 | 场景说明 |
---|---|
社交直播 | 直播中录制精彩瞬间;直播后回放精彩内容 |
金融双录 | 业务办理过程中同步录音录像,符合业务监管要求 |
远程医疗 | 远程问诊过程中在线录制,完成线上问诊的同时能够有效避免医患纠纷 |
在线教育 | 同步进行课程录制,课后学生可回顾,家长可回放检查课程质量 |
# 集成步骤
# 设置录制参数
音视频录制的文件将由服务器上传到七牛云,您需要设置录制参数以指定文件存储地址。
# 七牛云存储
通过下述步骤指定七牛云存储地址:
- 获取 七牛云 (opens new window) 存储信息:
bucketName
、secretKey
、accessKey
。 - 创建录制参数字符串。
- 将上述字符串赋值给recordParams (opens new window) 属性。
- 调用 joinChannel (opens new window) 加入频道。
示例:七牛云存储
interface recordParams {
type: number,//存储类型 OSS: 0 ,七牛云 :1
video: boolean,//是否录制视频
bucketName: string,//bucketName
secretKey: string,//secretKey
accessKey: string,//accessKey
fileName: string,//录制文件名
uploadEndPoint?: string//uploadEndPoint
videoConfig?:videoConfig//视频录制参数
}
//入会
this.JRTCEngine.joinChannel(channelId:string, channelConfig?:{
recordParam:recordParams,
...rest,
})
TIP
如果进行音频录制,需要将 recordParams 中的第二个参数 video
设置为 false
。
# 录制器状态监听
监听CHANNEL_UPDATE (opens new window)事件内获取recordstate
参数
this.JCEngine.on(JRTCEventType.CHANNEL_UPDATE, (channelInfo) => {
const { creenUserId, recordState } = channelInfo;
console.log("channel_update", channelInfo, screenUserId, recordState);
});
recordState
如下所述
状态 | 值 | 说明 |
---|---|---|
RECORD_STATE_NONE | 0 | 无法进行录制 |
RECORD_STATE_READY | 1 | 可以开启录制 |
RECORD_STATE_RUNNING | 2 | 录制中 |
# 开启/关闭音视频录制
调用 enableRecord (opens new window) 开启或关闭音视频录制。传入 true
表示开启音视频录制,false
表示关闭音视频录制。
当 enable
为 true
时,可以更改由 joinChannel (opens new window) 时传入的录制参数,不需更改则填 null
。
this.JCEngine.enableRecord(true, recordConfig);
# 完整示例代码
this.JCEngine.on(JRTCEventType.CHANNEL_UPDATE, (channelInfo) => {
const { creenUserId, recordState } = channelInfo;
console.log("channel_update", channelInfo, screenUserId, recordState);
if (recordState == 1) {
//判断是否可以录制
this.JCEngine.enableRecord(true, recordConfig); //开始录制
}
});