录制模式
出于不同业务场景的需要,云端录制支持多种录制模式,可以录制单人的音频或视频流,也可以把多路音视频合流录制,本文档为您介绍云端录制的录制模式及录制模式的设置方式。
录制模式
云端录制支持以下三种录制模式:
合流录制模式。
房间内参与合流录制的成员,其音视频流混合录制为一个音视频文件。
单流录制模式。
房间内参与单流录制的成员,分开录制其音视频流,每位成员均有其对应的音视频文件。
合流+单流录制。
同时录制合流内容和单流内容。录制结束后,产生以下媒体文件:
- 房间内参与合流录制成员的音视频混合文件。
- 房间内参与单流录制成员的单人音视频文件。
例如,A、B、C 三人进行音视频通话,A 端设置参与合流+单流录制,B 端设置只参与合流录制,C 端设置只参与单流录制,录制结束后会产生以下文件包:
- 文件包 1:包含 A 和 B 的音视频数据的录制文件。
- 文件包 2:只包含 A 的音视频数据的录制文件。
- 文件包 3:只包含 C 的音视频数据的录制文件。
录制文件
云端录制支持录制视频或音频流,根据录制模式生成不同的文件类型。
- 如果仅开启音频录制,则生成
.aac
音频文件。 - 如果开启了视频录制,则生成
.mp4
视频文件。
注意:
- 如果需要同时录制音频和视频,请同时开启音频和视频录制开关。开启后,如果参与录制的房间成员未发送视频流,则生成
.aac
音频文件。- 音视频录制均开启时,默认情况下仅生成
.mp4
视频文件。如果您需要额外保存一份.aac
音频文件,请联系商务经理咨询并开通相关服务。
实现方法
您可以通过服务端或客户端 API 设置录制模式,并实现云端录制。
服务端 API:
调用服务端接口实现云端录制时,可以设置音视频通话全局的录制相关参数。例如设置录制模式为单流录制模式,对房间内所有成员生效。
开启音频或视频录制开关,可以开启云端录制;同时关闭音频和视频开关,关闭云端录制。
客户端 API:
客户端加入房间时需要通过客户端接口设置通话参数,同时设置本端参与的录制模式。例如开启录制时设置为单流录制模式,则本端只参与单流录制,合流录制时不录制的音频流或视频流。
房间中首位参与录制的成员加入房间时自动启动录制,房间成员关闭音频和视频开关,本端退出云端录制。所有录制的参与者均关闭音频和视频开关或退出房间时自动关闭录制。
服务端API
调用云端录制接口,开启或关闭云端录制、设置音视频通话全局的录制相关参数。
Android
在初始化之前,通过 NERtc.getInstance().setParameters(mRtcParameters); 设置通话参数,设置本端参与的录制模式。
NERtcParameters parameters = new NERtcParameters();
parameters.set(NERtcParameters.KEY_SERVER_RECORD_AUDIO, true);
parameters.set(NERtcParameters.KEY_SERVER_RECORD_VIDEO, true);
parameters.set(NERtcParameters.KEY_SERVER_RECORD_MODE, MIX_AND_SINGLE);
parameters.set(NERtcParameters.KEY_SERVER_RECORD_SPEAKER, false);
NERtc.getInstance().setParameters(parameters);
...
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,callback,null);
iOS
在初始化之后,加入频道前,调用音视频实例的 - (int)setParameters:(NSDictionary *)parameters 方法设置通话参数,同时设置本端参与的录制模式。
[coreEngine setupEngineWithContext:context];
...
[coreEngine setParameters:@{kNERtcKeyRecordAudioEnabled: @YES}];
[coreEngine setParameters:@{kNERtcKeyRecordVideoEnabled: @YES}];
[coreEngine setParameters:@{kNERtcKeyRecordType: @(0)}];
[coreEngine setParameters:@{kNERtcKeyRecordHostEnabled: @NO}];
[coreEngine setParameters:params];
Windows&macOS
在初始化之后,加入频道前,调用音视频实例的 setParameters 方法设置通话参数,同时设置本端参与的录制模式。
rtc_engine_->setParameters("{\"kNERtcKeyRecordAudioEnabled\":true}");
rtc_engine_->setParameters("{\"kNERtcKeyRecordVideoEnabled\":true}");
rtc_engine_->setParameters("{\"kNERtcKeyRecordType\":type}");
rtc_engine_->setParameters("{\"kNERtcKeyRecordHostEnabled\":false}");
Web
加入频道时,通过 joinChannelRecordConfig 设置通话参数,同时设置本端参与的录制模式。
rtc.client.join({
channelName: '房间名称',
uid: uid,
token: token,
joinChannelRecordConfig:{
recordAudio:1,
recordVideo:1,
recordType:0,
isHostSpeaker:0
}
}).then((obj) => {
console.info('加入房间成功...')
})


此文档对你是否有帮助

