nimeet 文档中心
English

核心概念

Engine / EngineConfig / 录制模式 / 状态机 / 回调 / 文件布局的字段与不变量。

版本 v1.1.0 · 更新于 2026-10-26 · 修订 1

核心概念

录制引擎

IRecordingEngine(agora 命名空间,Legacy 3.x 面)与 IAgoraMediaRtcRecorder(4.x 面)是同一份录制能力的两种公开面。二者都由 Linux 录制 SDK 的同一套录制管线驱动:

text
宿主媒体帧 ──▶ RecordingPipeline ──▶ IRecordingSink ──▶ 产物(MP4 / egress job)
                    │
                    └── 状态机 + 回调 + 产物校验

sink(录制目的地)

sink 决定「录到哪里」,由宿主注入:

sink真实性产物
FfmpegFileSink真实:把 YUV420p 帧通过管道交给系统 ffmpeg,写出 H.264 MP4<storageDir>/<name>.mp4
EgressWorkerSink真实:调用本地 egress worker REST 录制运行中的房间egress job 的 files[]

没有空 sink:没有注入 sink 时管线拒绝启动(-ERR_NOT_INITIALIZED),并且 Stop 只有在产物通过校验(存在、非空、容器头正确、ffprobe 读到正的时长)时才允许进入 stopped。

会话与产物

一次「加入频道 → 离开频道」(或 startRecording → stopRecording)对应一个会话与一个 RecordingOutput:路径、字节数、时长、容器类型、校验结论。output.verified 为 true 才代表落盘可播放。

帧从哪来

本 SDK 不内置声网 RTC 媒体栈,因此帧由宿主推入:

  • 旧面:joinChannel 之后调用 RecordingEngine::PushVideoFrame,或安装 IFrameSource 后调用 PumpFrames;
  • 新面:startRecording 之后调用 RtcRecorder::PushVideoFrame;
  • 使用 egress sink 时无需推帧(由 egress 直接录制房间)。

这条边界在产品文档与文档里都必须如实表述:录制管线是真的,Agora 频道接入不是。

本页由文档构建流水线生成 · 2026-10-31 01:24:02 UTC · 文档中心 v1.1.0.

内容依据公开 API 定义.

ni-meet 是自建 RTC PaaS,媒体面基于 LiveKit(Apache-2.0),并与声网 API 兼容。