单流录制

更新时间: 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 视频文件。
同时录制音视频
  • 每个成员生成一个 wav 或 m4a 音频文件和一个 yuv 或 mp4 视频文件。
  • 通过 mixed_audio_video 参数可以合并音频和视频文件,生成一个音视频混合的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);
此文档是否对你有帮助?
有帮助
去反馈
  • 实现方法
  • 音频编码配置
  • 视频编码配置
  • 示例代码