没有画面或播放失败
这类故障用四层判断最快:通道、真实流、媒体地址、播放器。找到第一个失败层再处理。
flowchart LR
A[1 通道可用?] --> B[2 MediaServer 有流?]
B --> C[3 媒体地址可访问?]
C --> D[4 浏览器能解码播放?]
第 1 层:通道是否可用
- 通道存在、启用且未被软删除。
- 当前账号有播放权限。
- 设备在线或源地址可访问。
- 启动操作没有被授权在线流额度拒绝。
- 异步命令已到最终成功,不是仅接受请求。
第 2 层:MediaServer 是否有真实流
按媒体节点与 vhost/app/stream 查询。没有流时:
- ONVIF/RTSP:检查 StreamUri、凭据、TCP/UDP、设备连接上限。
- GB28181:检查 INVITE、SDP、RTP IP/端口和是否收到包。
- 自定义推流:检查推流端、鉴权和目标节点。
API 返回成功但 MediaServer 无流,问题还没到浏览器层。
第 3 层:直接媒体地址能否访问
使用与最终用户相同网络测试正确节点的 HLS/FLV/RTSP/WHEP 地址。常见问题:
- 多节点使用了错误媒体域名;
- app/stream/vhost 不一致;
- 代理路径、Host 或端口拼接错误;
- 播放票据过期或权限范围不对;
- HTTPS 页面加载 HTTP/WS 被浏览器阻止;
- CORS、Range、代理缓冲或超时不正确。
第 4 层:播放器与编码
如果直接地址在一个客户端可播、目标浏览器不可播,检查:
- 浏览器是否支持目标协议和 codec;
- HLS 是否已经产生分片与关键帧;
- HTTP-FLV 是否有 MSE,代理是否保持长连接;
- WebRTC ICE、TURN、SDP 和安全上下文;
- 自动播放策略是否要求用户手势;
- 页面控制台和 Network/Media/ WebRTC 日志。
浏览器不能原生播放 RTSP,必须选择转换后的浏览器协议。
症状速查
| 症状 | 第一检查 |
|---|---|
| 404 | 流是否在线,标识是否一致 |
| HLS 长时间等待 | 关键帧、HLS 开关、分片目录 |
| FLV 频繁断开 | 源流稳定性、代理超时与缓冲 |
| 只有 HTTPS 页面失败 | 混合内容、证书、CORS |
| 只有公网 RTC 失败 | candidate、TURN、UDP/TCP |
| 多节点偶发错误地址 | 流到 mediaServerId 的路由 |
| 有声音无画面 | 视频 codec、轨道、关键帧 |
恢复后验证
连续播放至少 15 分钟,测试短暂断网与重连,关闭页面后确认播放器和按需流释放。记录首次失败层与修复项,避免把偶然重连当作根因解决。