跳到主要内容
版本:4.0

集成架构与系统/模块职责

本文说明 GT-Streaming 在企业系统中的位置,以及企业应用、媒体服务、终端网关、消息队列与车载终端之间的协作关系。阅读本文后,就知道:某个操作该由哪一侧实现、数据沿哪条路径流转

产品级功能概览见 简介;应用侧集成入口见 应用指南概览

总体架构

系统概览

┌─────────────┐     HTTP / WebSocket API      ┌──────────────────┐
│ 企业应用 │ ◄──────────────────────────► │ GT-Streaming │
│ (客户端) │ FLV / HLS / RTSP │ 媒体服务 │
└─────────────┘ ◄──────────────────────────── └────────┬─────────┘

RabbitMQ │
(消息队列) │

┌─────────────┐ JT/T 808 / 1078 等 ┌──────────────────┐
│ 车载终端 │ ◄──────────────────────────► │ 企业终端网关 │
└─────────────┘ └──────────────────┘

总体交互方式: 企业应用只与 GT-Streaming 媒体服务 的 API 交互;媒体服务通过 消息队列 驱动 终端网关 向终端下发指令;终端将码流直接推送到媒体服务,再由媒体服务转码后输出给客户端。

各系统/模块职责

企业应用 / 客户端

  • 调用媒体服务 API:登录、打开/控制/关闭媒体请求、查询录像与附件等
  • 使用返回的 playUrl 创建播放器(FLV / HLS / RTSP)
  • 周期性调用保活接口(POST /strm/keep_alive),或在 WebSocket API / strm-js 中由库自动处理

GT-Streaming 媒体服务

  • 鉴权与会话(token)管理
  • 创建与管理媒体请求(reqId),维护请求生命周期
  • 经 MQ 向网关下发终端媒体指令(如 9101 实时音视频、9201 远程回放、9206 文件上传、9208 报警附件上传等)
  • 接收终端推送的 1078 码流,在进程内完成转码与协议转换
  • 向客户端输出 FLV、HLS、RTSP 等媒体流
  • 主动安全附件的接收、存储与查询;服务端转储;809 相关流媒体能力等

消息队列(RabbitMQ)

媒体服务与网关/企业后端之间的 异步协作通道。GT-Streaming 4 起,MQ 是标准集成方式之一。

队列(默认名)发布者订阅者用途
term-cmd媒体服务终端网关下发媒体相关终端指令
cmd-state-chg终端网关媒体服务终端对指令的应答与状态变更
av-upload媒体服务企业应用远程录像上传进度通知
fetch-alm-att企业应用媒体服务请求提取主动安全报警附件
fetch-alm-att-completed媒体服务企业应用附件提取任务结束通知

队列名可配置。完整说明见 消息队列集成接口概览

企业终端网关

  • 维持与车载终端的长连接(JT/T 808 等)
  • 订阅 term-cmd 队列,将媒体服务下发的指令转发给对应终端
  • 接收终端应答,向 cmd-state-chg 队列发布状态变更通知
  • 监测主动安全报警等业务事件(附件提取场景下,由企业应用决策是否向 fetch-alm-att 发请求)

终端必须先经网关在线,媒体服务才能成功打开实时或回放。打开失败且提示终端不在线时,应先在网关或演示站确认终端状态。

车载视频终端

  • 接收网关转发的媒体指令
  • 媒体服务(而非企业应用)推送音视频 1078 码流
  • 存储远程录像、响应回放与文件上传指令
  • 在主动安全场景下,按 9208 等指令向媒体服务上传报警附件

典型数据流:实时音视频播放

以企业应用在浏览器中播放一路实时视频为例:

1. [企业应用]  POST /login                          → 获得 token
2. [企业应用] POST /strm/live/open → 媒体服务创建请求
3. [媒体服务] 发布 term-cmd 消息 → 请求网关下发 9101
4. [终端网关] 转发 9101 至终端 → 终端收到指令
5. [终端] 向媒体服务推 1078 码流
6. [终端网关] 发布 cmd-state-chg(终端应答/推流状态)
7. [媒体服务] 转码,生成 playUrl;通知客户端(或同步返回 ready)
8. [企业应用] 播放器加载 playUrl → 用户看到画面
9. [企业应用] 周期 POST /strm/keep_alive → 维持请求
10.[企业应用] 关闭播放器 + 关闭媒体请求 → 释放资源

异步模式下,步骤 7 可能通过 STOMP/WebSocket 推送「流已准备好」通知;WebSocket API 则在同一连接上接收。详见 音视频请求的生命周期

典型数据流:主动安全报警附件

此场景 企业应用与网关均需参与,媒体服务负责存储与查询:

1. [终端网关]  检测到主动安全报警
2. [企业应用] 按业务规则决定是否提取附件
3. [企业应用] 向 fetch-alm-att 队列发布提取请求(或调用 HTTP/MQ 相关接口)
4. [媒体服务] 经 term-cmd 下发 9208,接收终端上传的附件并存储
5. [媒体服务] 向 fetch-alm-att-completed 发布任务结束通知
6. [企业应用] 调用查询接口,通过返回 URL 下载附件

流程步骤亦见 客户端编程基本流程 · 主动安全附件

消息队列何时必需?

场景企业应用终端网关 + MQ
实时播放 / 远程回放调用媒体 API 即可必需 — 网关收指令、转发终端、上报状态
终端录像上传调用查询与上传 API必需
主动安全附件提取发 MQ 请求或调 API必需 — 网关监测报警;媒体服务经 MQ 协作
纯 RTSP 网络摄像头调用打开 API视部署而定,无 JT/T 终端时网关可不参与

结论: 凡涉及 JT/T 1076 车载终端 的媒体能力,终端网关与 MQ 都是集成中的必要环节;仅企业应用对接媒体 API 无法独立完成播放。

HTTP API 与 WebSocket API

维度HTTP APIWebSocket API(v4,推荐)
调用方式REST + 独立 STOMP WebSocket 收通知单 WebSocket 连接调用 API 并收通知
token 与连接需分别管理 HTTP token 与 STOMP 连接strm-jsStrmWsApi 统一处理
适用legacy 系统、极简同步播放新应用、多路并发、长连接场景
客户端库自行组合 axios + stomp + 播放器strm-js

示例对比见 应用指南概览 · 集成示例索引

集成前置条件

在开始应用开发前,请确认:

检查项说明
媒体服务已部署并可访问部署概要
终端网关已运行且接入 MQ与媒体服务使用同一 RabbitMQ
终端已在网关侧在线可在演示站或自有监控系统确认
网络与端口终端能推流到媒体服务;客户端能访问 API 与播放地址
鉴权方式已确定本地用户表或外部 token 验证,见 会话与 token

关键概念(集成视角)

概念含义
终端识别号终端在平台中的唯一标识(协议中的「终端手机号」)
通道号逻辑音视频通道,通常 1–4;打开实时/回放时需指定
reqId一次媒体请求的唯一 ID,保活、控制、关闭时使用
playUrl客户端播放器加载的地址(FLV / HLS / RTSP)
token会话令牌,除登录外每次 API 调用需在请求头携带
dataType实时打开类型:音视频、仅视频、监听、对讲等

更完整的状态机与共享打开规则见 音视频请求的生命周期

下一步