JT/T 1078 协议基本介绍与解析

1078 协议,全称为 《JT/T 1078-2016 道路运输车辆视频通信协议》,是配合 JT808(车辆定位协议) 使用的,用于 道路运输车辆视频监控和传输。它是 中国车载视频传输的国家/行业标准协议。


一、JT/T 1078 协议基本介绍

项目内容
标准名称JT/T 1078-2016 道路运输车辆视频通信协议
发布单位中华人民共和国交通运输部
发布时间2016年12月
实施时间2017年7月1日
主要功能视频传输、音频传输、远程控制、录像回放、抓拍、音视频实时流管理等
应用场景校车、危化品运输、客运车辆、营运车辆监管系统

二、JT/T 1078 与 JT808 的关系

  • JT808 负责基础通信、定位、调度、报警等功能

  • JT1078 负责车载视频音频的传输、控制与回放

  • JT1078 依附于 JT808 协议,通过 JT808 的消息转发机制进行音视频数据的交互

三、JT1078 协议核心功能

功能描述
实时视频预览视频通道(最多4个/8个),实时流拉取
远程录像回放指定时间段、通道、文件类型进行录像回放
抓拍控制远程触发抓拍并上传图片
音频监听开启远程麦克风监听通话
语音对讲远程向车内广播语音
视频流参数设置分辨率、码率、帧率、编码格式
音视频通道管理多路通道(如前后摄像头、行车记录仪)状态管理

四、JT1078 数据结构概览

4.1、消息结构:

| 起始标识 0x7E | 消息头 | 消息体 | 校验码 | 结束标识 0x7E |

4.2、消息类型(部分):

消息 ID (十六进制)名称
0x9101实时音视频传输请求
0x9102音视频实时传输控制
0x9201远程录像回放请求
0x9202文件上传请求
0x9301抓拍指令

五、Java 中如何解析 JT1078 协议数据?

根据《JT/T 1078-2016》的协议文档来写每个消息体的解析规则。

5.1、JT1078 消息 ID 对照表

消息 ID消息方向名称描述
0x9101平台 → 终端实时音视频传输请求
0x9102平台 → 终端实时音视频传输控制指令
0x9103平台 → 终端关闭音视频通道请求
0x9201平台 → 终端音视频回放请求
0x9202平台 → 终端回放控制指令
0x9203平台 → 终端文件上传请求
0x9204平台 → 终端文件上传控制
0x9205平台 → 终端查询音视频资源列表
0x9301平台 → 终端抓拍指令
0x9302平台 → 终端抓拍立即上传命令
0x1003终端 → 平台上传音视频资源目录
0x1005终端 → 平台文件上传完成通知
0x1001终端 → 平台实时音视频数据上报
0x1002终端 → 平台音视频事件通知
0x1004终端 → 平台文件上传数据包
0x1006终端 → 平台音视频数据检索应答
0x1007终端 → 平台终端主动上传抓拍
0x1008 | 终端 → 平台 | 终端上传通道参数(通道列表) 

5.2、消息分类

🟢 控制类(平台下发):0x910x / 0x920x / 0x930x

🔵 数据类(终端上报):0x100x

🟡 文件传输/列表类:0x9203, 0x9205, 0x1003, 0x1004

5.3、伪代码结构

由于 JT1078 与 JT808 格式类似,可以 基于 JT808 的框架结构进行消息类型识别和扩展处理。

伪代码结构如下:

public void handleJT1078Message(byte[] packet) {
    int msgId = getMessageId(packet); // 解析消息 ID
    switch (msgId) {
        case 0x9101:
            handleRealTimeVideoRequest(packet);
            break;
        case 0x9201:
            handlePlaybackRequest(packet);
            break;
        case 0x9301:
            handleSnapshotRequest(packet);
            break;
        default:
            System.out.println("未知 JT1078 消息类型");
    }
}

说明

  • JT1078 基于 JT808 协议扩展,依赖 JT808 的消息头和校验机制。

  • 所有音视频数据采用 UDP/RTP 推流(如实时视频),也可以按文件方式传输(回放/抓拍)。

六、JT1078 常见视频参数

参数示例
分辨率1920x1080、1280x720
视频编码H.264、H.265
音频编码G.711、AAC
码率500~3000 kbps
帧率15~30 fps

七、和 GB/T 28181 的区别?

协议特点
JT/T 1078专为交通运输车辆制定,依托 JT808
GB/T 28181公安视频监控专用协议,基于 SIP 和 RTP,更接近国标平台

八、Java 示例代码( JT1078 协议中的实时视频传输请求)

下面是一份用于解析 JT1078 协议中的实时视频传输请求(消息ID 0x9101) 的 Java 示例代码。此示例假设你已经具备基础的 JT808 数据结构解析能力(如消息头、校验、分包等解析能力)。

8.1、解析 0x9101 消息体

public class Msg9101 {

    private int logicalChannelNo; // 逻辑通道号
    private int mediaType;        // 音视频类型
    private int streamType;       // 码流类型(主/子)
    private int storageType;      // 存储器类型
    private int playbackMode;     // 回放方式(实时0/回放1)
    private int playbackSpeed;    // 播放速度
    private String serverIp;      // 服务端 IP
    private int serverTcpPort;    // TCP 端口
    private int serverUdpPort;    // UDP 端口

    public static Msg9101 parse(byte[] body) throws UnsupportedEncodingException {
        ByteBuffer buffer = ByteBuffer.wrap(body);
        Msg9101 msg = new Msg9101();

        byte ipLength = buffer.get(); // IP地址长度
        byte[] ipBytes = new byte[ipLength];
        buffer.get(ipBytes);
        msg.serverIp = new String(ipBytes, "GBK");

        msg.serverTcpPort = buffer.getShort() & 0xFFFF;
        msg.serverUdpPort = buffer.getShort() & 0xFFFF;
        msg.logicalChannelNo = buffer.get() & 0xFF;
        msg.mediaType = buffer.get() & 0xFF;
        msg.streamType = buffer.get() & 0xFF;
        msg.storageType = buffer.get() & 0xFF;
        msg.playbackMode = buffer.get() & 0xFF;
        msg.playbackSpeed = buffer.get() & 0xFF;

        return msg;
    }

    @Override
    public String toString() {
        return "Msg9101{" +
                "serverIp='" + serverIp + '\'' +
                ", serverTcpPort=" + serverTcpPort +
                ", serverUdpPort=" + serverUdpPort +
                ", logicalChannelNo=" + logicalChannelNo +
                ", mediaType=" + mediaType +
                ", streamType=" + streamType +
                ", storageType=" + storageType +
                ", playbackMode=" + playbackMode +
                ", playbackSpeed=" + playbackSpeed +
                '}';
    }
}

8.2、示例原始数据(十六进制)

hex

0C3139322E3136382E312E3130 1F90 1F91 01 00 00 01 00 01
字段含义
0CIP长度 12
313932…3130IP地址192.168.1.10
1F90TCP端口8080
1F91UDP端口8081
01逻辑通道号
00媒体类型:视频
00码流类型:主码流
01存储类型:实时
00播放模式:实时
01播放速度:1倍速

8.3、使用方式

byte[] data = ...; // 从JT808协议消息中提取的 9101 消息体部分
Msg9101 msg = Msg9101.parse(data);
System.out.println(msg);

在这里插入图片描述


樱花明白自己终将零落,
依然要盛放得轰轰烈烈。
人与人之间最动人的部分,
有时恰恰存在于期限明确的相遇里——
因为没有来日方长的侥幸,
所以每个瞬间都被赋予钻石般的密度。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值