录制相关
本章节着重介绍实时音视频有关录制的内容。网易云信实时音视频提供服务端录制和客户端录制两种录制方式。
服务端录制需要您联系我们的销售,开通此功能,并且需要在管理中心中成功配置消息抄送服务。实时音视频服务端录制目前仅支持点对点音视频通话。假设A和B进行实时音视频通话,服务端录制下来的文件包括:A的纯音频文件(.aac)、A的音视频文件(.mp4)、B的纯音频文件(.aac)、B的音视频文件(.mp4)。如果是纯音频通话,则没有相应的音视频文件,如果您开通了服务端混合录制,则还会生成一个A和B的混合音视频文件(.mp4)。这些录制文件的地址在音视频通话结束之后会通过抄送服务抄送到您的服务器。
客户端录制支持录制单个通话者的音视频文件和录制通话的混合录音。
服务端录制
API介绍
- 点对点通话的服务端录制,在下列两种方法中传入对应的参数即可
- 发起通话请求
- 响应通话请求
- 点对点通话的服务端录制,在下列两种方法中传入对应的参数即可
示例
// 发起通话请求
netcall.call({
type: Netcall.NETCALL_TYPE_VIDEO,
account: 'testAccount',
pushConfig: {},
sessionConfig:{
...
recordVideo: true,
recordAudio: true,
recordType: 0
}
})
// 响应通话请求
netcall.response({
accepted: true,
beCalledInfo: beCalledInfo,
sessionConfig: {
...
recordVideo: true,
recordAudio: true,
recordType: 0
}
})
- 参数说明
其他参数已经在最上面发起通话章节介绍过了,不再重复介绍,这里只介绍和录制相关的两个参数
param参数属性 | 类型 | 说明 |
---|---|---|
recordVideo | bool | 是否开启视频录制,默认不开 |
recordAudio | bool | 是否开启音频录制,默认不开 |
recordType | number | 录制模式,0表示参与混合录制并且录制单人文件,1表示只参与混合录制,2表示只录制单人文件,默认 0 |
客户端录制(PC Agent)
SDK提供客户端录制功能,可以通过下面的一系列方法进行音视频的录制
开始单人视频录制
API介绍
- 在通话过程中,可以通过该方法进行单人的音视频录制
示例
netcall.startRecordMp4({
account: 'testAccount',
path: 'E:/test.mp4'
}).then(function(obj) {
console.log('startRecordMp4 通知下发为正式录制', obj)
})
- 参数说明
参数名 | 类型 | 说明 |
---|---|---|
account | string | 录制的目标账号,不传或者为空时,默认录制自己 |
path | string | 录制的音视频保存路径 |
- 特殊说明
- 请注意!
路径不能选择没有权限访问的盘符!
否则会录制失败!
- 请注意!
停止单人视频录制
API介绍
- 录制过程中,可以随时调用该方法停止录制,文件将会自动保存
示例
netcall.stopRecordMp4({
account: 'testAccount'
}).then(function(obj) {
console.log('stopRecordMp4 通知下发为录制结束', obj)
})
- 参数说明
参数名 | 类型 | 说明 |
---|---|---|
account | string | 录制的目标账号,不传或者为空时,默认录制自己 |
开始混音录制
API介绍
- 在通话过程中,可以通过该方法进行所有音频的混音录制
示例
netcall.startRecordAac({
path: 'E:/test.mp4'
}).then(function(obj) {
console.log('startRecordAac 通知下发为正式录制', obj)
})
- 参数说明
参数名 | 类型 | 说明 |
---|---|---|
path | string | 录制的音视频保存路径 |
停止混音录制
API介绍
- 录制过程中,可以随时调用该方法停止录制,文件将会自动保存
示例
netcall.stopRecordAac().then(function(obj) {
console.log('stopRecordAac 通知下发为录制结束', obj)
})
客户端录制(WebRTC)
SDK提供客户端录制功能,可以通过下面的一系列方法(即 startRecordMp4、stopRecordMp4、startRecordAac、stopRecordAac 接口)进行音视频的录制
- 请注意:
该部分的接口仅支持到6.1.2版本
开始单人视频录制
API介绍
- 在通话过程中,可以通过该方法进行单人的音视频录制
示例
netcall.startRecordMp4(
account
).then(function(obj) {
console.log('startRecordMp4 通知下发为正式录制', obj)
})
- 参数说明
参数名 | 类型 | 说明 |
---|---|---|
account | string | 录制的目标账号,不传或者为空时,默认录制自己 |
- 特殊说明
- 目前只支持
webm格式
的视频录制,可以用chrome浏览器打开
- 目前只支持
停止单人视频录制
API介绍
- 录制过程中,可以随时调用该方法停止录制,停止录制时会弹框选择保存路径或者自动保存(不同类型不同版本的浏览器行为不同)
示例
netcall.stopRecordMp4().then(function(obj) {
console.log('stopRecordMp4 通知下发为录制结束', obj)
})
开始混音录制
API介绍
- 在通话过程中,可以通过该方法进行所有音频的混音录制
示例
netcall.startRecordAac().then(function(obj) {
console.log('startRecordAac 通知下发为正式录制', obj)
})
停止混音录制
API介绍
- 录制过程中,可以随时调用该方法停止录制,停止录制时会弹框选择保存路径或者自动保存(不同类型不同版本的浏览器行为不同)
示例
netcall.stopRecordAac().then(function(obj) {
console.log('stopRecordAac 通知下发为录制结束', obj)
})
高级版本地录制
6.2.0版本开始,用户请使用新的录制接口,此方案可以解决用户在录制过程中执行了切换设备的操作而导致的媒体流中断的问题
- API介绍
// 一:开启录制
netcall.startMediaRecording({
account: account, // 录制对象账号,不填则录制本地
type: type // 录制类型: camera(摄像头)、screen(屏幕共享)、video(混频,即使用混频功能时,开启录制)、audio(音频)四种
})
// 二:获取录制的下载列表
netcall.listMediaRecording() // {record_1: {endtime,id,isRecording,name,reset,startTime,status,type,uid}}
// 三、停止录制
netcall.stopMediaRecording({
recordId: record_1 // 这里的值就是前面listMediaRecording接口获取的录制列表的key
})
// 四:下载指定的录制文件
netcall.downloadMediaRecording({
recordId: record_1 // 这里的值就是前面listMediaRecording接口获取的录制列表的key
})
// 五[可选]:清除录制状态
netcall.cleanMediaRecording({
recordId: recordId // 这里的值就是前面listMediaRecording接口获取的录制列表的key
})
示例
开启录制
netcall.startMediaRecording({ account: '', //录制本地 type: 'camera' // 录制摄像头画面 })
获取录制的下载列表
var recordIdList = netcall.listMediaRecording() /* recordIdList的格式内容如下: { "local-1": { "id": "local-1", "type": "camera", "name": "local--1558015645--camera", "status": "starting", "isRecording": true, "startTime": 1558015645, "endTime": null, "uid": "local" } } */
停止录制
//之前录制的type是camera,所以这里判断type(如果多次调用startMediaRecording进行录制,recordIdList数组会有多个元素) var recordId = Object.values(recordIdList)[0].type === 'camera' && Object.values(recordIdList)[0].id netcall.stopMediaRecording({ recordId: recordId })
下载指定的录制文件
netcall.downloadMediaRecording({ recordId: recordId })
清除特定录制状态
netcall.cleanMediaRecording({ recordId: recordId })
本篇文档内容是否对您有帮助?
有帮助
我要吐槽
此文档对你是否有帮助
×
有帮助
我要吐槽
×