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

文章目录

    • 一、JT/T 1078 协议基本介绍
    • 二、JT/T 1078 与 JT808 的关系
    • 三、JT1078 协议核心功能
    • 四、JT1078 数据结构概览
      • 4.1、消息结构:
      • 4.2、消息类型(部分):
    • 五、Java 中如何解析 JT1078 协议数据?
      • 5.1、JT1078 消息 ID 对照表
      • 5.2、消息分类
      • 5.3、伪代码结构
    • 六、JT1078 常见视频参数
    • 七、和 GB/T 28181 的区别?
    • 八、Java 示例代码( JT1078 协议中的实时视频传输请求)
      • 8.1、解析 0x9101 消息体
      • 8.2、示例原始数据(十六进制)
      • 8.3、使用方式

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); // 解析消息 IDswitch (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;      // 服务端 IPprivate 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;}@Overridepublic 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);

在这里插入图片描述


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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机为电脑提供移动互联网络的3种方式

写作目的 在当今数字化时代,电脑已成为人们日常工作和生活中不可或缺的工具,而网络连接更是其核心功能之一。无论是处理工作任务、进行在线学习、还是享受娱乐资源,稳定的网络环境都是保障这些活动顺利开展的关键。然而,在实际使用过程中,电脑网络驱动故障时有发生,这可…

Linux的 /etc/sysctl.conf 笔记250404

Linux的 /etc/sysctl.conf 笔记250404 /etc/sysctl.conf 是 Linux 系统中用于 永久修改内核运行时参数 的核心配置文件。它通过 sysctl 工具实现参数的持久化存储,确保系统重启后配置依然生效。以下是其详细说明: 📂 备份/etc/sysctl.conf t…

deepseek v3-0324 Markdown 编辑器 HTML

Markdown 编辑器 HTML 以下是一个美观的 Markdown 编辑器 HTML 页面&#xff0c;支持多种主题切换和实时预览功能&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&q…

Linux make 检查依赖文件更新的原理

1. 文件的时间戳 make 主要依靠文件的时间戳来判断依赖文件是否有更新。每个文件在文件系统中都有一个时间戳&#xff0c;记录了文件的三种重要时间&#xff1a; ​​访问时间&#xff08;Accesstime&#xff09;​​&#xff1a;文件最后一次被访问的时间。​​修改时间&…

HDEBits中组合逻辑类的部分题目练习

文章目录 1. More logic gates2. Truth tables3. 256-to-1 4-bit multiplexer4. 3-bit binary adder5. Signed addition overflow6. 4-digit BCD adder7. Minimum SOP and POS8. Karnaugh map9. K-map implemented with a multiplexer总结 1. More logic gates 题目&#xff1…

Apache httpclient okhttp(2)

学习链接 Apache httpclient & okhttp&#xff08;1&#xff09; Apache httpclient & okhttp&#xff08;2&#xff09; okhttp github okhttp官方使用文档 okhttp官方示例代码 OkHttp使用介绍 OkHttp使用进阶 译自OkHttp Github官方教程 SpringBoot 整合okHttp…

【git项目管理】长话短说

目录 主要分为三种使用情况 安装git后第一次使用创建新仓库并管理克隆仓库并管理 初次使用git 首先确定电脑的用户名是纯英文&#xff0c;没有中文和奇怪的符号&#xff0c;如果不满足这个条件&#xff0c;参考这个 链接 修改用户名 git config --global user.name "…

算法刷题记录——LeetCode篇(3.2) [第211~212题](持续更新)

更新时间&#xff1a;2025-04-04 算法题解目录汇总&#xff1a;算法刷题记录——题解目录汇总技术博客总目录&#xff1a;计算机技术系列博客——目录页 优先整理热门100及面试150&#xff0c;不定期持续更新&#xff0c;欢迎关注&#xff01; 215. 数组中的第K个最大元素 给…

【linux学习】linux系统调用编程

目录 一、任务、进程和线程 1.1任务 1.2进程 1.3线程 1.4线程和进程的关系 1.5 在linux系统下进程操作 二、Linux虚拟内存管理与stm32的真实物理内存区别 2.1 Linux虚拟内存管理 2.2 STM32的真实物理内存映射 2.3区别 三、 Linux系统调用函数 fork()、wait()、exec(…

react redux的学习,多个reducer

redux系列文章目录 第一章 简单学习redux,单个reducer 前言 前面我们学习到的是单reducer的使用&#xff1b;要知道redux是个很强大的状态存储库&#xff0c;可以支持多个reducer的使用。 combineReducers ‌combineReducers‌是Redux中的一个辅助函数&#xff0c;主要用于…

Oracle数据库数据编程SQL<3.5 PL/SQL 存储过程(Procedure)>

存储过程(Stored Procedure)是 Oracle 数据库中一组预编译的 PL/SQL 语句集合,存储在数据库中并可通过名称调用执行。它们是企业级数据库应用开发的核心组件。 目录 一、存储过程基础 1. 存储过程特点 2. 创建基本语法 3. 存储过程优点 4. 简单示例 二、没有参数的存储…

手撕AVL树

引入&#xff1a;为何要有AVL树&#xff0c;二次搜索树有什么不足&#xff1f; 二叉搜索树有其自身的缺陷&#xff0c;假如往树中插入的元素有序或者接近有序&#xff0c;二叉搜索树就会退化成单支树&#xff0c;时间复杂度会退化成O(N)&#xff0c;因此产生了AVL树&#xff0c…

《 C语言中的变长数组:灵活而强大的特性》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 一、变长数组的定义二、变长数组的优势三、变长数组的使用示例示例1&#xff1a;动态输入数组大小示例2&#xff1a;变长数组在函数中的应用 四、变长数组的…

【微服务】基础概念

1.什么是微服务 微服务其实就是一种架构风格&#xff0c;他提倡我们在开发的时候&#xff0c;一个应用应该是一组小型服务而组成的&#xff0c;每一个服务都运行在自己的进程中&#xff0c;每一个小服务都通过HTTP的方式进行互通。他更加强调服务的彻底拆分。他并不是仅局限于…

Linux make与makefile 项目自动化构建工具

本文章将对make与makefile进行一些基础的讲解。 假设我们要建造一座房子&#xff0c;建造过程涉及很多步骤&#xff0c;比如打地基、砌墙、安装门窗、粉刷墙壁等。每个步骤都有先后顺序&#xff0c;并且有些步骤可能依赖于其他步骤的完成。比如&#xff0c;你必须先打好地基才…

如何判断多个点组成的3维面不是平的,如果不是平的,如何拆分成多个平面

判断和拆分三维非平面为多个平面 要判断多个三维点组成的面是否为平面&#xff0c;以及如何将非平面拆分为多个平面&#xff0c;可以按照以下步骤进行&#xff1a; 判断是否为平面 平面方程法&#xff1a; 选择三个不共线的点计算平面方程&#xff1a;Ax By Cz D 0检查其…

多layout 布局适配

安卓多布局文件适配方案操作流程 以下为通过多套布局文件适配不同屏幕尺寸/密度的详细步骤&#xff0c;结合主流适配策略及最佳实践总结&#xff1a; 一、‌创建多套布局资源目录‌ ‌按屏幕尺寸划分‌ 在 res 目录下创建以下文件夹&#xff08;根据设备特性自动匹配&#xff…

Java 大视界 -- Java 大数据在智能农业无人机植保作业路径规划与药效评估中的应用(165)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

美关税加征下,Odoo免费开源ERP如何助企业破局?

近期&#xff0c;美国特朗普政府推行的关税政策对全球供应链和进出口企业造成巨大冲击&#xff0c;尤其是依赖中美贸易的企业面临成本激增、利润压缩和合规风险。在此背景下&#xff0c;如何通过数字化转型优化管理效率、降低运营成本成为企业生存的关键。本文以免费开源ERP系统…

go游戏后端开发25:红中麻将规则介绍

一、游戏基础规则介绍 在开发红中麻将游戏之前&#xff0c;我们需要先了解其基础规则。红中麻将的牌面由 a、b、c、d 四种花色组成&#xff0c;其中 a、b、c 分别代表万、条、筒&#xff0c;每种花色都有 1 - 9 的九种牌&#xff0c;每种牌各有四张&#xff0c;总计 36 张 4 …