nimeet 文档中心
English

状态机

录制任务的创建、运行、停止、失败与重启语义,以及幂等与恢复。

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

状态机

录制会话只有一条合法路径,任何越级调用都返回负的错误码而不是被忽略。

text
idle ──Start──▶ starting ──sink.Start 成功──▶ recording ──Stop──▶ stopping ──产物校验通过──▶ stopped
                    │                              │                    │
                    └──sink.Start 失败─────────────┴────────────────────┴──▶ error
状态含义触发
idle尚未开始初始状态
starting已校验参数,正在启动 sinkRecordingPipeline::Start
recordingsink 已就绪,可推帧sink 启动成功
stopping已停止推帧,等待封装收尾Stop
stopped产物已校验(存在、非空、容器头、时长 > 0)校验通过
error启动/写入/校验失败任一步失败,回调 onError

非法转换

调用当前状态返回
Startstarting / recording / stopping-ERR_INVALID_STATE
PushVideoFrame非 recording-ERR_INVALID_STATE
Stop非 recording/starting-ERR_INVALID_STATE
joinChannel已存在会话-ERR_ALREADY_IN_USE
leaveChannel无会话-ERR_LEAVE_CHANNEL_REJECTED

为什么 stopped 不能假

stopped 只在 VerifyRecordingFile 通过后进入。校验失败时管线转入 error、lastError 记录错误码、output.verified 保持 false,并把失败原因回传给 joinChannel/leaveChannel/stopRecording 的调用方。测试 TestNoSilentSuccess 用一个「返回成功但没有产物」的假 sink 固定了这条约束。

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

内容依据公开 API 定义.

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