播放网络摄像头示例 (RTSP → FLV/HLS)
本示例演示媒体服务 从 RTSP 网络摄像头拉流,再转为 FLV/HLS 供浏览器播放。流程与 JT/T 1076 终端实时播放类似,但 无需终端网关,打开接口通过 rtspSrc 指定摄像头地址。
| 项目 | 说明 |
|---|---|
| 示例页面 | live-example-4-rtsp |
| 示例代码 | live-example-4-rtsp.zip |
| 依赖库 | axios、mpegts.js、hls.js、stomp-websocket |
| 打开模式 | 同步或异步均可(示例支持切换) |
相关文档:简介 · 多源接入 · 打开实时音视频 · RtspSource
适合场景
- 接入 IP 摄像头、NVR RTSP 输出,而非车载 1076 终端
- 媒体服务能 网络访问 摄像头 RTSP 地址
- 希望与车载流 同一套播放 API(
live/open+ 播放器)
与车载终端示例的差异
| 车载终端(example-2) | RTSP 摄像头(本示例) | |
|---|---|---|
| 码流来源 | 终端经网关推 1078 | 媒体服务拉 RTSP |
| 终端网关 / MQ | 必需 | 通常不需要 |
simNo | 真实终端识别号 | 应用自定义(如 rtsp-1) |
| 关键参数 | channel、dataType | rtspSrc |
| 打开接口 | 同上 POST /strm/live/open | 同上 |
整体流程

1. (部署)媒体服务可访问摄像头 RTSP URL
2. POST /login
3. STOMP 订阅(异步模式时)
4. POST /strm/live/open + rtspSrc
5. 媒体服务拉流 → 转 FLV/HLS → ready 通知
6. 播放器加载 playUrl → keep_alive → close
异步模式步骤与 example-2-live 一致;同步模式可参考 example-1-live(省略 WebSocket)。
准备工作
- RTSP 地址 可被 GT-Streaming 服务器访问(内网/公网、防火墙放通)
- 为每路摄像头分配
simNo:符合 终端识别号字符集,且与系统内其它设备不冲突(如rtsp-1、cam-gate-01) - 若摄像头需鉴权,提供用户名/密码(见下文
rtspSrc)
打开接口:核心参数
与车载打开相比,请求体 更简单——主要传 simNo、proto、async 和 rtspSrc:
axios.post(apiUrlPrefix() + 'strm/live/open', {
simNo: 'rtsp-1', // 应用自定义,用于区分设备
proto: proto(), // 0: FLV, 1: HLS
async: async(), // false: 同步, true: 异步
rtspSrc: {
url: 'rtsp://192.168.1.100:554/stream1',
user: 'admin', // 可选;也可写在 url 中(不推荐)
password: 'secret' // 可选
}
}, {
headers: { 'X-Auth-Token': token }
});
rtspSrc 说明
| 字段 | 必要 | 说明 |
|---|---|---|
url | 是 | RTSP 地址,须媒体服务可达 |
user / password | 否 | 设备鉴权;若 url 已含 user:pass@,则忽略 |
不必传 channel、dataType 等车载字段(除非业务需要)。
应答与后续
应答结构与车载 live/open 相同:reqId、playUrl、ready、mediaTyp。之后:
- 异步:等
act=ready或ready=true后播放 - 保活:
POST /strm/keep_alive - 停止:
POST /strm/close
播放器创建同 example-2-live / example-3-live-hls(按 proto 选 FLV 或 HLS)。
检查清单
- 媒体服务到摄像头 RTSP 端口网络通
-
simNo唯一且符合字符集 - 鉴权信息正确(账号错误或 URL 格式错误会导致 open 失败/超时)
- 异步模式已订阅 STOMP
常见错误
| 现象 | 处理 |
|---|---|
-5 超时 | 摄像头不可达、RTSP 路径错误或鉴权失败 |
| 能 open 无画面 | 摄像头编码不支持;查服务端日志 |
| 与车载 simNo 冲突 | 更换自定义 simNo |
下一步
| 目标 | 文档 |
|---|---|
| 车载实时异步 | example-2-live |
| HLS 播放 | example-3-live-hls |
| simNo 规则 | sim-no-charset |