第 18 章 流媒体管理
18.1 功能说明
流媒体管理是 ZLMediaKit(ZLM)节点的运维台,覆盖节点生命周期、调度策略、服务配置、在线流与会话巡检、外部源接入、调度审计五部分。日常值班主要用「运行总览」与「流与会话」;规划调整用「节点管理」与「节点详情」。
菜单路径:「流媒体管理」,下设「运行总览」「节点管理」「流与会话」「接入管理」「调度日志」。其中「接入管理」在侧边栏中默认隐藏,可通过路由 /media/ingress 访问。
18.2 运行总览
路由 /media/overview。用途:查看单个节点的实时负载、媒体吞吐与运行风险。页面强制选定一个节点,不是全局视图。
18.2.1 界面元素
| 区块 | 内容 |
|---|---|
| 工具栏 | 「数据更新于 HH:mm:ss」/「正在更新数据」/「等待首次采样」;「刷新」;「自动刷新」开关 |
| 六张 KPI 卡 | 「在线媒体流」「媒体观看者」「媒体吞吐」「网络会话」「NetThread 负载」「正在录制」 |
| 「实时媒体速率」 | 「实时上行」「实时下行」面积图 |
| 「对象实例」 | 各类 ZLM 对象数量;「查看全部对象」打开抽屉 |
| 「事件线程负载」 | 「线程总数」「平均负载」「最高负载」「高负载线程」;「线程负载矩阵」「负载分布」「热点线程排行」 |
18.2.2 KPI 卡与跳转
| 卡片 | 单位 | 说明 | 点击 |
|---|---|---|---|
| 「在线媒体流」 | 路 | 当前活跃流数 | 「查看流媒体」→ /media/monitoring?view=streams |
| 「媒体观看者」 | 个 | 在线 readerCount 合计 | — |
| 「媒体吞吐」 | — | 在线流 bytesSpeed 合计 | — |
| 「网络会话」 | 个 | 当前连接数 | 「查看网络会话」→ ?view=sessions |
| 「NetThread 负载」 | % | 网络线程平均负载;≥ 0.8 转危险色 | — |
| 「正在录制」 | 路 | MP4 或 HLS 录制标记数 | — |
18.2.3 对象实例
点击「查看全部对象」打开抽屉(宽 720),说明「中文名称用于日常判断,英文名称对应 ZLM getStatistic 返回的技术对象。」
| 中文 | 英文 |
|---|---|
| 媒体源 | MediaSource |
| 多协议媒体复用器 | MultiMediaSourceMuxer |
| TCP 服务监听 | TcpServer |
| TCP 会话 | TcpSession |
| UDP 服务监听 | UdpServer |
| UDP 会话 | UdpSession |
| TCP 客户端 | TcpClient |
| 网络套接字 | Socket |
| 视频帧实现 | FrameImp |
| 视频帧 | Frame |
| 缓冲对象 | Buffer |
| 原始缓冲 | BufferRaw |
| 字符串缓冲 | BufferLikeString |
| 缓冲列表 | BufferList |
| RTP 数据包 | RtpPacket |
| RTMP 数据包 | RtmpPacket |
18.2.4 提示与空态
| 提示 | 含义 |
|---|---|
| 「本次采样失败:{原因};页面保留 {时间} 的上一次成功结果。」 | 采样失败但保留旧数据 |
| 「当前节点仅返回部分运行指标,缺失值以破折号表示。」 | 部分指标不可用 |
| 「当前节点运行态不可用,请检查节点连接与生命周期。」 | 节点离线或未启用 |
| 「等待运行态采样」+「后端将持续保留最近 5 分钟趋势。」 | 首次加载 |
刷新周期 5 秒。
界面如图 18-1 所示。

图 18-1 运行总览
18.3 节点管理
路由 /media/nodes。页面自上而下为「调度策略」面板与「节点列表」面板。
18.3.1 调度策略
标题「调度策略」,副标题「选择新媒体分配策略;已经建立的流和会话不会迁移。」
| 策略 | 说明 |
|---|---|
| 「轮询」 | 依次分配,节点能力相近时最公平;无状态依赖 |
| 「加权轮询」 | 按节点权重比例分配,适合 CPU、带宽不同的异构集群 |
| 「最小负载」 | 按 NetThread 与 WorkThread 负载选择节点,需要可靠心跳数据 |
| 按钮 | 作用 | 提示 |
|---|---|---|
| 「刷新」 | 重新读取当前策略 | — |
| 「保存策略」 | 提交切换(保存中显示「保存中…」) | 成功「已切换到 {策略},只影响新点播」;失败提示切换失败且「旧策略”{名}“仍保留在当前页面;请刷新确认实际状态。」 |
徽标「当前生效 {策略}」。无权限时只读并提示「当前账号没有调度策略管理权限,当前页面为只读。」
注意 - 切换策略只影响新点播,已建立的流不会迁移。切换后若发现分配不均,需等旧流自然结束或手工清理。 - 「最小负载」依赖心跳数据质量。若节点心跳不稳定,可能把新流分配到实际负载高的节点。
18.3.2 节点列表筛选
| 条件 | 选项 |
|---|---|
| 搜索 | 「节点名称 / Host / mediaid」 |
| 「管理状态」 | 「启用」「停用」 |
| 「在线状态」 | 字典 media_node_state 的取值 |
| 「健康度」 | 「健康」「告警」「严重」「未知」 |
| 「查询」「重置」 | — |
| 「刷新(Ns)」 | 10 秒倒计时自动刷新 |
刷新失败时警告条「本次刷新失败:{原因}。已保留上一次节点列表。」
18.3.3 节点列表列
| 列 | 说明 |
|---|---|
| 「节点」 | 名称 + host:apiPort;mediaid 可点击复制 |
| 「收流模式」 | 「单端口 · {端口}」或「多端口 · {起始}-{结束}」 |
| 「管理状态」 | 「启用」「停用」 |
| 「在线状态」 | 状态点 + 文案 |
| 「健康度」 | 徽标;恢复中额外显示「恢复隔离」 |
| 「流」 | 当前流数 |
| 「会话」 | 「{mediaSourceCount} / {sessionCount}」;离线显示 — |
| 「调度」 | 「不参与」「可调度 · {权重}」「等待收敛」 |
| 「最后心跳」 | 「从未上报」「时间未知」「N 秒前」「N 分钟前」「N 小时前」「N 天前」 |
| 「操作」 | 见下 |
注意 - 「最后心跳」显示「从未上报」通常意味着平台接入晚于 ZLM 启动,节点不主动发心跳。此时修改回调地址往往救不回,需重启 ZLM 或等待平台主动探测刷新存活时间。若长时间保持「从未上报」,请联系管理员。
18.3.4 节点行操作
| 按钮 | 前置条件 | 行为 | 提示 |
|---|---|---|---|
| 「服务配置」 | — | 跳转节点详情 | — |
| 「编辑」 | zlm:node:manage | 打开编辑弹窗 | 见 18.3.5 |
| 「启用」/「停用」 | zlm:node:manage | 切换管理状态 | 「节点已启用,可参与新任务调度」/「节点已启用,在线后将自动参与调度」/「节点已停用,不再接收新任务;现有流不会中断」 |
| 「删除」 | zlm:node:manage | 打开节点动作对话框 | 见 18.3.6 |
| mediaid 复制 | — | 复制 mediaid | 「mediaid 已复制」/「复制失败,请手动选择后复制」 |
无权限时提示「没有执行该节点操作的权限」。
注意 - 「停用」只阻止新任务分配,不会中断现有流。需要彻底清空节点请使用「驱逐全部会话」或「重启 ZLM 服务」。
18.3.5 添加/编辑节点
新增(两步):
第 1 步「必填参数 / 填写 ZL 连接信息」:
| 字段 | 必填 | 说明 |
|---|---|---|
| 「节点别名」 | 否 | 占位「例如 zlm-bj-1」 |
| 「IP 地址 / 管理地址(API Host)」 | 是 | ZLM 的 HTTP API 地址 |
| 「API 端口」 | 是 | 1–65535 |
| 「API Secret」 | 是 | 最长 512 字符;只写入不回显 |
点击「连接并读取」,后端先探测连通性。
第 2 步「ZL 信息确认 / 读取后确认添加」:
标题「ZL 连接成功」,副标题「已从 {host}:{apiPort} 读取服务配置,请确认后添加节点。」
展示项:「节点别名」「IP 地址」「API 端口」「API Secret」(显示「已填写(不回显)」)、「mediaServerId」(「未配置(登记后由平台生成)」)、「HTTP PORT」「HTTPS PORT」「RTSP PORT」「RTSPS PORT」「RTMP PORT」「RTMPS PORT」「RTP Proxy PORT」「ONVIF PORT」(无值显示「未开放」)、「RTP 端口范围」、协议状态(RTSP、RTMP、HLS、TS、fMP4 · 启用/关闭)。
点击「确认添加」,成功「节点已验证并创建」。
编辑:
额外字段:
| 字段 | 说明 |
|---|---|
| 「节点名」 | 必填,占位「例如 北京一楼弱电间」 |
| 「设备推流地址(sdpIp)」 | 设备送流的目标 IP |
| 「调度权重」 | 0–100;「0 表示不参与加权调度」 |
| 「收流端口模式」 | 单端口/多端口开关 |
| 「RTP 收流端口」 | 只读,读取实际值 |
| 「RTP 端口范围」 | 只读,分隔符「至」 |
| 「平台回调地址(hookIp)」 | ZLM 回调平台的地址 |
| 「播放地址(playbackHost)」 | 播放器访问的主机名 |
「API Secret」编辑态留空表示不修改。
按钮「取消」「上一步」「连接并读取」「验证并保存」。成功「节点配置已保存,收流模式仅影响新会话」。
提示:「后端会先探测 ZL 连通性,成功后才登记节点;API Secret 只写入,不会从服务端回显。」(新增)/「连接字段会作为候选配置先由后端探测;探测或收敛失败时保留旧节点,当前表单不会被清空。」(编辑)
注意 - 「收流端口模式」改动只影响新会话,已建立的流仍用旧端口。改端口后必须同步放行防火墙,否则新点播收不到流。 - 「调度权重」设为 0 表示该节点完全不参与加权调度,等同手动排除。 - 修改「平台回调地址」错误会导致心跳、播放鉴权、按需拉流、录像索引全部失效。
18.3.6 节点高危动作
节点动作包括:「切换维护态/维护」「驱逐全部会话/驱逐」「删除媒体节点/删除」「重启 ZLM 服务/重启」。
流程:
- 点击动作后,先弹「获取节点影响」,显示「正在从后端读取活动流、录制和会话影响…」。
- 影响条目:「活动流 N 路」「录制任务 N 个」「网络会话 N 个」;被截断时提示「影响结果已截断,实际数量可能更多」。
- 预检失败时显示「未执行任何管理动作」与错误,按钮「取消」「重新预检」「强制移除」(仅删除时出现)。
- 「强制移除」二次确认:「确认强制移除该节点?」+「后端会先探一次:此刻如果读得通就会拒绝删除。」+「由于读不到影响,它上面是否还有流、录制和级联会话是未知的;重新上线后需手动清理残留。」+「指向它的设备「首选节点」会被重置为自动调度。」
- 继续后进入「高风险操作确认」窗口:
| 元素 | 说明 |
|---|---|
| 警示 | 「操作执行前会再次校验节点、目标和影响指纹;任一项变化都必须重新打开本窗口确认。」 |
| 摘要 | 「节点 {名称}(#{id})」「目标 {动作}」 |
| 「预计影响」 | 影响列表;无则「当前未识别到业务持有,但仍将按高风险操作执行。」 |
| 「操作理由」 | 必填,≤ 256 字,占位「请输入可审计的操作理由」 |
| 「确认短语」 | 必须逐字输入「{动词} {节点名}」 |
- 点击动作按钮(如「确认执行」)。
结果提示:重启「重启已受理,操作号 {id}」或「重启已受理,等待节点状态推进」;强制移除「已移除节点「{名}」,{n} 个设备的首选节点已重置为自动调度」。
409 冲突提示:「{原因};节点已停用,等待活动流、录制和会话排空后重试删除」或「{原因};后端返回影响:{items};影响已变化,请重新打开确认」。
注意 - 「重启 ZLM 服务」会中断该节点上全部媒体会话,包括所有正在观看的用户、正在进行的录制与级联会话。务必在业务低峰执行。 - 「删除节点」若预检显示仍有活动流,后端会先停用节点并要求排空后重试。强行「强制移除」会导致该节点上的录像文件失去索引,需人工清理。 - 确认短语必须逐字一致(含空格),这是防止误操作的强制门禁。
界面如图 18-2 所示。

图 18-2 节点管理列表
界面如图 18-3 所示。

图 18-3 「添加节点」表单
界面如图 18-11 所示。

图 18-11 调度策略
18.4 节点详情与服务配置
路由 /media/nodes/:id。标题「服务配置」,描述「查看或修改指定媒体节点的服务配置。」
18.4.1 界面结构
| 区域 | 内容 |
|---|---|
| 提示条 | 「热更新项保存后立即生效,重启后生效项保存后需重启媒体节点;保存结果必须经过 ZLMediaKit 实际值回读。Secret 不会回显。」 |
| 左栏 | 「配置分类」树 |
| 右栏 | 配置表 |
配置分组(固定顺序):「GB28181 国标」「运行时策略」「WebRTC」「协议开关」「录制与截图」「Hook 回调」「性能调优」「网络端口」「安全」。
搜索:「搜索配置 key 或说明」。有草稿时显示「{n} 项未保存 · 轮询已暂停」。
18.4.2 配置表列
| 列 | 说明 |
|---|---|
| 「配置项」 | key + 说明;无说明显示「暂无说明」 |
| 「当前 / 草稿值」 | 字典项为下拉,其余为输入框;改动项显示「还原」 |
| 「默认值」 | 空显示 — |
| 「编辑模式」 | 见下表 |
| 编辑模式 | 颜色 | 说明 |
|---|---|---|
| 「可热更新」 | 绿 | 「保存后由后端下发并立即回读核对实际值」 |
| 「重启后生效」 | 橙 | 「保存到媒体节点并回读核对,重启媒体节点后生效」 |
| 「平台管理」 | 橙 | 「该项由 UVP 平台管理,不能在服务器配置页覆盖」 |
| 「需重启(不支持)」 | 红 | 「当前版本不支持重启后应用,页面不会构造提交」 |
| 「只读」 | 灰 | 「该项为只读配置,仅供查看,页面不会构造提交」 |
18.4.3 按钮
| 按钮 | 条件 | 作用 | 提示 |
|---|---|---|---|
| 「测试连通性」 | — | 探测节点 | 成功「节点在线,HTTP 端口 {port}」;失败「节点不可达,请检查候选地址、端口和密钥」 |
| 「刷新」 | 无草稿 | 重读配置 | 有草稿时禁用 |
| 「放弃草稿」 | 有草稿 | 清空未保存改动 | 「未保存草稿已放弃」 |
| 「保存配置」 | 有草稿 | 提交改动 | 见 18.4.4 |
| 「重启媒体节点」 | 有保存未生效项时出现 | 由外层发起重启 | 见 18.4.5 |
18.4.4 保存前警告
涉及端口与回调的改动会弹警告框(按钮「继续保存」「取消」):
| 标题 | 正文要点 |
|---|---|
| 「修改网络端口配置」 | 「网络端口保存后需重启媒体节点生效。」修改 http.port 需同步节点登记的 API 端口;修改单端口监听需同步登记收流端口;修改端口范围平台会自动同步,无需手工改动但要放行防火墙。末尾「请确认新端口可达,否则节点可能失联或无法收流。是否继续保存?」 |
| 「修改 WebRTC 端口」 | 「UDP 与 TCP 会自动对齐同号…新值会写回部署端口规划,重启后仍然生效;保存后需重启媒体节点才会真正换端口。」 |
| 「修改 Hook 回调配置」 | 「关闭 Hook 或修改回调地址可能导致节点心跳、播放鉴权、按需拉流、录像索引和流量统计失效。是否继续保存?」 |
18.4.5 保存结果
保存后展示「最近一次保存与回读」,说明「命令返回不等于实际生效;以下四列分别保留事实。」
| 列 | 说明 |
|---|---|
| 「配置项」 | key |
| 「旧值」「新值」 | 变更前后 |
| 「命令结果」 | 「已回读生效」「已保存,重启媒体节点后生效」「回读不一致」「后端拒绝:未知配置」「未确认生效」 |
| 「实际值」 | 从 ZLMediaKit 回读的真实值 |
汇总提示:
| 提示 | 含义 |
|---|---|
| 「配置已下发并完成实际值回读」 | 全部生效 |
| 「配置已保存,部分配置需重启媒体节点后生效」 | 有重启项 |
| 「配置命令已返回,但存在回读不一致或未确认项」 | 需人工核实 |
| 「没有可提交的配置改动」 | 空提交 |
18.4.6 重启节点
- 点击「重启当前节点」或提示条上的重启按钮。
- 确认框标题「重启媒体节点」,内容「将重启”{节点名}“,该节点全部媒体会话会中断。后端受理后页面会持续等待离线、心跳恢复和配置收敛。」。
- 点击「确认重启」。
- 页面进入状态跟踪:
| 状态 | 说明 |
|---|---|
| 「已受理」 | 后端已接受 |
| 「等待节点离线」 | 等待 ZLM 停止 |
| 「等待心跳恢复」 | 等待 ZLM 重新上报 |
| 「配置收敛中」 | 等待配置实际值一致 |
| 「已恢复」 | 完成 |
| 「恢复失败」 | 失败,需人工介入 |
| 「未执行重启」 | 初始态 |
提示:「重启已受理,正在等待离线、心跳恢复和配置收敛」;「媒体节点已恢复,心跳与配置收敛均已确认」。
阻塞原因:
| 原因 | 处理 |
|---|---|
| 「重启已受理,正在等待节点离线、心跳恢复和配置收敛」 | 等待 |
| 「还有 {n} 项改动未保存,先保存或放弃草稿再重启」 | 先处理草稿 |
| 「当前账号没有重启媒体的权限」 | 申请 gb28181:zlm:restart |
| 「重启会中断该节点上全部媒体会话」 | 确认后执行 |
轮询:配置 15 秒,重启状态 2 秒。
注意 - 重启节点会中断该节点上全部媒体会话,正在观看的用户画面会黑屏并需重新点播,正在录制的任务会中断并可能产生不完整文件。请务必在低峰期执行。 - 存在未保存草稿时,自动轮询与节点切换都会暂停,避免覆盖编辑内容。 - 「回读不一致」说明命令发出但 ZLM 实际值未变,通常是该配置项被其他配置文件覆盖,需登录服务器排查。
界面如图 18-5 所示。

图 18-5 节点详情
界面如图 18-6 所示。

图 18-6 节点服务配置
18.5 流与会话
路由 /media/monitoring。三个页签:「流媒体」「网络会话」「媒体观看者」。
18.5.1 「流媒体」页签
筛选:Schema、VHost、App、Stream ID、「录制状态」(「MP4 录制」「HLS 录制」);「查询」「重置」「刷新(Ns)」。
| 列 | 说明 |
|---|---|
| 「媒体身份」 | app/stream + schema·vhost;点击进入详情 |
| 「来源」 | 节点名 + originTypeName |
| 「观看 / 累计」 | 当前观看者 / 累计观看数 |
| 「吞吐」 | 实时码率 |
| 「在线时长」 | — |
| 「录制」 | 「MP4+HLS」或「未录制」 |
| 「操作」 | 「详情」、「强关」 |
「强关」流程:
- 点击「强关」。
- 确认框标题「确认强关媒体流?」,内容「节点 #{id} · {schema}😕/{vhost}/{app}/{stream}。此操作会中断当前观看连接。」。
- 点击「确认强关」。
- 结果:「关闭完成:成功 N,已不存在 N。」或「关闭已返回:成功 N,已不存在 N;部分结果需重新回读。」
「媒体流详情与观看者」抽屉(宽 760)字段:「节点」「完整身份」「来源」「在线 / 当前吞吐」「累计流量」「业务归属」「Tracks」;子区「业务持有来源」(空则「后端未返回可证明的持有来源。」)、「媒体轨道」(编码/类型/就绪/分辨率/FPS)、「观看者(N)」(标识/远端/本地/类型)。
业务归属取值:「管理资源」「业务持有」「持有冲突」「归属未知」「未登记」。
横幅提示:
| 提示 | 含义 |
|---|---|
| 「当前账号仅可查看流运行态;强关按钮按独立权限隐藏。」 | 只读 |
| 「部分节点采集失败,仍展示已返回的 N 条数据,不清空整页。」 | 部分失败 |
| 「本次刷新失败:{原因};保留上一次分页与筛选结果。」 | 刷新失败 |
空态「没有符合当前筛选的媒体流」+「筛选条件与分页由后端执行,不会加载全量流到浏览器。」;分页「共 N 路(结果已由后端截断)」。轮询 10 秒。
18.5.2 「网络会话」页签
sessions 视图:
筛选:「远端 IP」「本地端口」;「查询」「重置」「刷新」。文案「当前范围:{范围}」。
列:「节点」「会话 ID」「远端」「本地」「类型」「类型 ID」「可执行操作」(固定「仅观测」)。
viewers 视图:
需先填完整媒体身份(Schema/VHost/App/Stream),提示「需完整 MediaIdentity,踢除还需 kickable=true」;未填时提示「请输入完整媒体身份」+「Schema、VHost、App、Stream 缺一不可,页面不会猜默认值。」
列:「节点」「观看标识」「远端」「本地」「类型」「操作」(「踢除」/「不可踢除」)。
踢除流程:
- 点击「踢除」。
- 对话框确认短语「踢除 {identifier}」,目标「{app}/{stream} · {identifier}」。
- 填写理由(非必填)。
- 点击「确认踢除」。
- 结果命中:「观看会话已断开」「观看会话已踢除」「踢除结果未确认,请刷新回读」;快照变化「观看会话快照已变化,未执行踢除」。
横幅:「当前展示全部可见节点的会话数据,结果保留节点来源。」;无权限「当前账号可查看会话,但没有 gb28181:zlm:session:kick 权限;踢除按钮不会显示。」。自动刷新为 10 秒,刷新按钮显示倒计时;点击可立即刷新并重新计时。
18.5.3 强关确认短语
| 场景 | 短语 |
|---|---|
| 单个普通关闭 | 「关闭 {stream}」 |
| 批量关闭 | 「关闭 N 路流」 |
| 强制关闭 | 「强制关闭 {stream}」 |
拦截文案:「后端没有批量强制关闭契约,请逐路预检并强制关闭。」;「N 路被后端判定为业务持有、冲突或归属未知;普通批量关闭受保护。」
注意 - 「强关」会中断该流的所有观看者。若该流由业务(如录像任务、级联会话)持有,普通关闭会被拒绝,需使用强制关闭并填写理由。 - 「踢除」只能断开单个观看会话,不影响流本身。 - 分页与筛选均由后端执行,前端不会加载全量数据,因此「共 N 路」可能小于真实总数(后端有界截断)。
界面如图 18-7 所示。

图 18-7 流列表
界面如图 18-8 所示。

图 18-8 会话(媒体观看者)列表
18.6 接入管理
路由 /media/ingress。四个页签:「拉流代理」「推流代理」「FFmpeg 源」「RTP 服务」。
前置要求: 必须先在顶部选择具体节点。选择「全部节点」时提示「全部节点范围」+「代理列表和所有节点级写操作都需要先选择一个具体节点。」
18.6.1 拉流代理 / 推流代理
| 列 | 说明 |
|---|---|
| 「媒体身份」 | app/stream |
| 「地址摘要」 | 「认证信息已隐藏」或「不返回路径与查询参数」 |
| 「真实状态」 | 「在线」「失败」「离线」标签 + 状态文本或 code {status} |
| 「运行信息」 | 时长/速率/N 读者 |
| 「重试」 | 「拉 N / 推 N」 |
| 「来源」 | 「管理台」「业务」「未知」 |
| 「操作」 | 「删除」 |
创建:
- 点击「创建代理」。
- 弹窗字段:「Schema」(必填,占位
rtsp)、「VHost」(必填,占位__defaultVhost__)、「App」(必填,占位live)、「Stream」(必填,占位camera-01)、「源地址」/「目标地址」(必填,密码框)、「重试次数」(留空用默认,0–10)、「RTP 类型」(留空用默认)、「超时(秒)」(0.1–30)。 - 点击「确认创建」,成功「代理 {key} 已由后端确认创建」。
删除:确认短语「删除代理 {key}」,填写理由(非必填),结果「代理已删除并完成账本回读」。
提示:「完整地址仅在本次创建请求中提交;列表只展示后端脱敏摘要。」
18.6.2 FFmpeg 源
| 列 | 说明 |
|---|---|
| 「源标识」 | key + 「模板:{templateKey}」 |
| 「源地址摘要」 | 含指纹 |
| 「目标地址摘要」 | 含指纹 |
| 「来源」 | 「管理台」/「业务未知」+「用户 #id」或「无创建人」 |
| 「操作」 | 「释放」 |
创建弹窗:「模板」(必填,下拉)、「源地址」(必填,密码框)、「目标地址」(必填,密码框,例如 rtmp://media.example/live/camera)、「超时(毫秒)」(默认 3000,1–300000)、「输出能力」(复选「生成 HLS」「生成 MP4」)。
释放:确认短语「释放 FFmpeg {key}」。
18.6.3 RTP 服务
| 列 | 说明 |
|---|---|
| 「媒体身份」 | app/stream + vhost·key |
| 「实际端口」 | 端口 + 「已释放」/「监听中」 |
| 「传输」 | 「TCP 被动」「TCP 主动」「UDP」;轨道「仅音频」「仅视频」「自动」 |
| 「SSRC」 | — |
| 「Ownership」 | 「管理台创建」+「用户 #id」或「业务/未知」+「普通关闭不可用」 |
| 「操作」 | 「关闭」「强制」 |
创建弹窗:「VHost」「App」「Stream」必填;「监听端口」(留空或 0 由 ZLM 自动分配)、「TCP 模式」(0 UDP/1 TCP 被动/2 TCP 主动)、「轨道模式」(0 自动/1 仅音频/2 仅视频)、「SSRC」(≤ 32 位十进制数字)、「本地 IP」(留空由节点决定)、「端口复用」(开启时必须填写明确端口)。
关闭预检原因文案:
| 文案 | 含义 |
|---|---|
| 「正在等待后端预检。」 | 预检中 |
| 「后端回读确认 RTP 服务已释放。」 | 已释放 |
| 「强制关闭将中断所有持有者,必须填写理由。」 | 需强制 |
| 「缺少 RTP 强制关闭权限。」 | 无权限 |
| 「业务持有或归属未知,普通关闭已保护。」 | 需强制 |
| 「后端确认该 RTP 服务由管理台创建,可执行普通关闭。」 | 可普通关闭 |
确认短语:「关闭 RTP {stream}」或「强制关闭 RTP {stream}」。
注意 - 接入管理中的写操作均要求选定具体节点。误选「全部节点」时页面会阻止提交。 - 「强制关闭」会中断所有持有者,必须填写可审计的理由。 - 代理地址中的认证信息只在创建时提交,列表只显示脱敏摘要,无法回读明文。遗失需删除后重建。
界面如图 18-9 所示。

图 18-9 接入管理—RTP
界面如图 18-10 所示。

图 18-10 接入管理—拉流代理
18.7 调度日志
路由 /media/scheduling。用于审计媒体节点的分配决策。
| 条件 | 选项 |
|---|---|
| 时间范围 | 区间,含时分 |
| 节点 | 「全部节点」或具体节点(带状态) |
| 策略 | 「全部策略」「轮询」「加权轮询」「最小负载」 |
| 调度状态 | 「全部调度状态」「已命中」「未命中」 |
| 业务流 StreamID | 文本 |
列:「时间」「策略」「命中节点」「业务流」(无则 —)「设备 / 通道」「调度状态」「未命中原因」。
图表区:「调度命中分布」「命中节点」,周期「24h」「7d」。
按钮「查询」「重置」。空态「当前筛选没有调度日志」+「调整筛选条件后重新查询。」;失败「本次查询失败:{原因};保留上一次已完成样本。」
自动刷新 30 秒。分页「共 N 条调度日志」。
注意 - 「未命中」表示本次调度未分配到节点,常见原因是全部节点处于停用/维护态或超出并发上限。查看「未命中原因」可定位。 - 调度日志按「路由决策」记录,一次点播可能产生多条记录。
界面如图 18-12 所示。

图 18-12 调度日志
18.8 常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
| 节点显示「从未上报」心跳 | 平台接入晚于 ZLM 启动 | 重启 ZLM 节点,或等待平台主动探测刷新 |
| 节点健康度「严重」但流正常 | 部分指标超阈值 | 查看运行总览的负载与线程指标 |
| 新点播都分配到同一节点 | 策略为轮询但权重异常,或「最小负载」心跳异常 | 检查节点「调度」列是否为「可调度」 |
| 保存配置后提示「回读不一致」 | 配置被 ZLM 配置文件覆盖 | 登录服务器核对配置文件 |
| 强关被拒绝 | 流被业务持有 | 使用强制关闭并填写理由 |
| 接入管理无法创建 | 未选具体节点或能力未探测 | 选定节点后重试 |