h# 录制相关
在小程序端,网易云信实时音视频提供服务端录制的录制方式。
服务端录制需要您联系我们的销售,开通此功能,并且需要在管理中心中成功配置消息抄送服务。实时音视频服务端录制同时支持点对点通话以及多人通话。假设A和B进行实时音视频通话,服务端录制下来的文件包括:A的纯音频文件(.aac)、A的音视频文件(.mp4)、B的纯音频文件(.aac)、B的音视频文件(.mp4)。如果是纯音频通话,则没有相应的音视频文件,如果您开通了服务端混合录制,则还会生成一个A和B的混合音视频文件(.mp4)。多人通话同理,针对每个人会录制xx的纯音频文件(.aac)、xx的音视频文件(.mp4)。如果开通混合录制,会生成混合音视频文件(.mp4)。这些录制文件的地址在音视频通话结束之后会通过抄送服务抄送到您的服务器。
服务端录制
- API介绍
- 点对点通话示例
// 发起通话请求后,等待被叫方接受通话,触发监听‘callAccepted’事件的处理函数
netcallInstance.on('callAccepted', (data) => {
let self = this
console.log('对方接听了')
console.log(data)
let mode = this.data.isAudioJoin ? netcallInstance.NETCALL_MODE_ONLY_AUDIO : netcallInstance.NETCALL_MODE_AUDIO_VIDEO
this.changeCameraAndMicro(mode)
// 开启音视频逻辑
// 实时音录制相关
let joinChannelParam = {}
if (this.data.recordType || this.data.recordType === 0) {
joinChannelParam.recordType = this.data.recordType + ''
}
joinChannelParam.recordAudio = this.data.recordAudio ? netcallInstance.RECORD_AUDIO_OPEN : netcallInstance.RECORD_AUDIO_CLOSE
joinChannelParam.recordVideo = this.data.recordVideo ? netcallInstance.RECORD_VIDEO_OPEN : netcallInstance.RECORD_VIDEO_CLOSE
Object.assign(joinChannelParam, { mode })
// 在这里使用录制参数
netcallInstance.startRtc(joinChannelParam)
.then((data) => {
console.log('开启音视频成功')
console.log(data)
self.livePusherContext = wx.createLivePusherContext()
self.setData({
loginUser: data,
streamNeedReconnect: true
})
})
})
// 响应通话请求,首先会触发‘beCalling’事件,然后弹窗让用户选择接受请求或者拒绝。如果接受请求,触发 小程序实例的 acceptCallHandler 的方法
netcallInstance.on('beCalling', (data) => {
console.log('beCalling')
console.log(data)
const {caller, cid, type} = data
showToast('text', `${caller}呼叫你`, {duration: 1000})
// 临时保存一些信息
this.setData({
callingData: data,
})
// 展示是否接受通话的操作,如果用户接受通话,将触发下方的 acceptCallHandler
this.showCallingGUI()
})
//小程序实例上的方法
acceptCallHandler(event) {
let { caller, cid, type} = this.data.callingData
netcallInstance.response({
caller: caller, // 主叫方
accepted: true, // 接受通话为true ,拒绝通话为false
type: type, // 通话类型
cid: cid //channelId
})
.then(() => {
const mode = type === netcallInstance.NETCALL_TYPE_VIDEO
? netcallInstance.NETCALL_MODE_AUDIO_VIDEO
: netcallInstance.NETCALL_MODE_ONLY_AUDIO
this.changeCameraAndMicro(mode)// 小程序实例自定义方法,声音和视频输出调整
// 开启音视频逻辑
let joinChannelParam = {}
// 实时音录制相关
if (this.data.recordType || this.data.recordType === 0) {
joinChannelParam.recordType = this.data.recordType + ''
}
joinChannelParam.recordAudio = this.data.recordAudio ? netcallInstance.RECORD_AUDIO_OPEN : netcallInstance.RECORD_AUDIO_CLOSE
joinChannelParam.recordVideo = this.data.recordVideo ? netcallInstance.RECORD_VIDEO_OPEN : netcallInstance.RECORD_VIDEO_CLOSE
Object.assign(joinChannelParam, {mode})
// 在这里使用录制参数
netcallInstance.startRtc(joinChannelParam)
})
}
- 多人通话示例
// 多人音视频通话的时候,只需要在加入房间的时候传入录制参数就可以了,下面只列举和录制相关的参数
netcallInstance.joinChannel({
// 已略去其他参数
rtmpRecord: !options.rtmpRecord ? RTMP_RECORD.RTMP_RECORD_CLOSE : options.rtmpRecord, // 外部传入:互动直播录制
recordAudio: !options.recordAudio ? RECORD_AUDIO.RECORD_AUDIO_CLOSE : options.recordAudio, // 外部传入:音频实时音录制
recordVideo: !options.recordVideo ? RECORD_VIDEO.RECORD_VIDEO_CLOSE : options.recordVideo, // 外部传入:视频实时音录制
recordType: !options.recordType ? RECORD_TYPE.RECORD_TYPE_MIX_SINGLE : options.recordType // 外部传入:录制模式 0-混单 1-只混 2-只单
})
- 参数说明
param参数属性 | 类型 | 说明 |
---|---|---|
rtmpRecord | number | 是否开启互动直播录制,默认不开 |
recordType | number | 录制模式,默认为混单 |
recordVideo | number | 是否开启视频录制,默认不开 |
recordAudio | number | 是否开启音频录制,默认不开 |
isHostSpeaker | number | 是否设置主讲人模式,1表示设置为主讲人,0表示不设置 (v6.8.0以上新增) |
本篇文档内容是否对您有帮助?
有帮助
我要吐槽
此文档对你是否有帮助
×
有帮助
我要吐槽
×