单流录制
更新时间: 2021/03/26 22:00:50
本地服务端录制支持单流录制和合流录制模式,默认为单流录制模式,您可以参考本文档在您的本地项目中实现本地服务端单流录制。
本地服务端录制支持以下两种录制模式:
-
单流录制模式。
分别录制房间内每个成员的音频流和视频流。每个成员均有其对应的音频文件和视频文件,您也可以指定每个成员均生成一个音视频文件。
-
合流录制模式。
房间内所有或指定成员的音视频混合录制为一个音视频文件;或房间内所有或指定成员的音频混合录制为一个纯音频文件,所有或指定成员的视频混合录制为一个纯视频文件。
-
单流+合流录制模式。
同时开启单流和合流录制模式,在分别录制房间内每个成员音频和视频流的同时,将房间内所有或指定音视频流混合录制为一个音视频文件。
- 请在开始录制前设置录制模式,开始录制后不支持切换录制模式。
- 如果有用户没有发送音频或视频流,一般不会生成该用户的音频或视频录制文件。本文档以房间内每个用户都发送音频和视频为例。
实现方法
默认为单流录制模式。该模式下您可以自己设置录制文件的音视频编码配置。
音频编码配置
初始化时通过 audioProfile 参数可以设置音频编码模式、采样率、声道数和码率。
- kNERtcAudioProfileDefault:默认音频设置,采样率 48 kHz,单声道,编码码率为 48 Kbps。
- kNERtcAudioProfileHight:高音质,采样率 48 kHz,单声道,编码码率 128 Kbps。
- kNERtcAudioProfileStero:高音质立体声,采样率 48 kHz,双声道,编码码率 128Kbps。
视频编码配置
初始化时通过 video_record_resolution 参数设置视频编码配置。推荐的视频编码配置请参考 分辨率、帧率和码率对照表。
根据录制内容的不同,录制生成的文件如下表所示:
录制内容 | 参数设置 | 录制生成文件 |
---|---|---|
仅录制音频 |
|
每个成员生成一个 wav 或 m4a 音频文件。 |
仅录制视频 |
|
每个成员生成一个 yuv 或 mp4 视频文件。 |
同时录制音视频 |
|
|
示例代码
例如,单流录制模式下自动录制所有用户的音视频,音频编码为默认值,视频编码配置为 640、480、15、 400000。
示例代码如下:
cppnerecord::IRecordEngine *engine = (nerecord::IRecordEngine *)createNERecordEngine();
nerecord::NERecordEngineContext ctx;
ctx.auto_subscribe_audio = true;
ctx.auto_subscribe_video = true;
ctx.audio_enable = true;
ctx.video_enable = true;
ctx.default_stream_type = nerecord::kNERtcRemoteVideoStreamTypeHigh;
ctx.mixed_audio_video = true;
ctx.mixing_enable = false;
ctx.decodeAudio = nerecord::kNERtcAudioFormatAAC;
ctx.decodeVideo = nerecord::kNERtcVideoFormatH264;
ctx.video_record_resolution.vanvasWidth = 640;
ctx.video_record_resolution.vanvasHeight = 480;
ctx.video_record_resolution.bps = 400000;
ctx.video_record_resolution.fps = 15;
ctx.snapshot_interval = 10;
ctx.audioProfile = nerecord::kNERtcAudioProfileDefault;
engine->initialize(ctx);
engine->joinChannel(<token>, <channel_name>, <uid>);
/*录制中*/
engine->leaveChannel();
engine->release();
destroyNERecordEngine((void *&)engine);
此文档是否对你有帮助?