对讲集成指南
对讲通过 GT-Streaming 建立客户端与车载终端之间的 双向音频通道,实现调度员与司机的语音通话。
前置条件
- 终端经网关在线,且支持 JT/T 1078 对讲指令
- 终端
ACC ON等前置条件已满足(视终端配置而定) - 浏览器端需采用 HTTPS 协议才能调用麦克风(
getUserMedia) - 同一时刻,同一通道仅允许一路对讲;对讲不支持共享打开
与实时播放的区别
| 项目 | 实时音视频 | 对讲 |
|---|---|---|
| dataType | 0(音视频)等 | 2(双向对讲) |
| 客户端播放 | 播放 playUrl 中的终端音频 | 同左 |
| 客户端上行 | 无 | 向 taUrl / wsUrl 推送麦克风音频 |
| 共享打开 | 支持多人观看 | 不支持 |
| 通道占用 | 对讲占用后,同通道其它打开返回 -21 | 同左 |
基本流程
- (HTTP API)订阅流媒体状态通知;WebSocket API 可跳过
- 调用 打开实时音视频,设置
dataType: 2 - 若
ready为false,等待act=ready通知 - 用
playUrl播放终端音频,启动 15 秒保活 定时器 - 连接返回的 对讲推送地址,采集麦克风并推送音频:
- HTTP API:
taUrl(二进制 WebSocket,推荐)或wsUrl(STOMP) - WebSocket API:按
strm-js/ API 文档处理对讲上行
- HTTP API:
- 停止时:关闭麦克风连接 → 关闭播放器 → 关闭媒体请求
步骤清单亦见 客户端编程基本流程 · 对讲。
打开接口关键参数
{
"simNo": "13320200317",
"channel": 1,
"dataType": 2,
"proto": 0,
"async": false
}
| 参数 | 说明 |
|---|---|
dataType | 必须为 2 |
channel | 逻辑通道号;部分厂商对讲不校验通道,部分要求固定通道(如 1 或 36),请咨询终端厂商 |
proto | 播放终端音频的客户端协议,通常用 FLV(0) |
应答中的对讲地址
| 字段 | 说明 |
|---|---|
playUrl | 播放终端推来的音频 |
taUrl | 二进制 WebSocket,用于推送本端对讲音频(推荐) |
wsUrl | STOMP WebSocket,用于推送本端对讲音频(HTTP API 传统方式) |
浏览器端注意事项
麦克风权限
- 页面须通过 HTTPS 提供(localhost 除外)
- 首次对讲需用户授权麦克风
- 建议在 UI 上明确提示用户授权
音频采集与编码
- 终端侧常见格式为 G711-A 等;客户端推送格式须符合媒体服务要求
- 演示站实现可作为参考:对讲面板
协议版本(长短号)
部分终端在 JT/T 808-2019 下,对讲的报文中终端号仍用短号或长号,与协议版本不一致会导致对讲失败。演示站提供「协议选项」切换;生产环境依 Streaming 服务端配置 或厂商说明调整。
资源占用规则
来自 音视频请求的生命周期:
- 同通道已有 对讲 请求时,后续任何类型的实时打开均返回
-21 - 同通道已有 任意实时请求 时,新的 对讲 打开返回
-21 - 关闭对讲后,通道方可再次打开
常见问题
| 现象 | 可能原因 | 处理 |
|---|---|---|
返回 -21 | 通道已被占用 | 先关闭已有播放/对讲 |
| 能听到终端,终端听不到本端 | 未连接 taUrl / 麦克风未授权 | 检查 WebSocket 与 getUserMedia |
| 完全无声音 | 终端未推流或 playUrl 未加载 | 确认 ready 后再播放 |
| 2019 协议终端对讲失败 | 长短号不匹配 | 调整协议选项或服务端配置 |
| 请求被自动关闭 | 未调用 keep_alive | 每 15 秒保活 |
更多排错见 常见问题与排错。
体验与参考
- 在线演示 · 对讲面板 — 操作说明
- API:打开实时音视频、实时控制