JT905实现(一):协议的简单讲解

JT/T 1078流媒体平台对接实战指南 本文提供JT/T 1078流媒体平台对接的实战指南,详细解析了车载视频监控系统中设备、管理平台与流媒体服务三大核心角色的分工与协作流程。文章从零开始,逐步讲解设备添加、接口调用获取推流与播放地址、指令下发及前端播放器集成的完整步骤,并分享了关键配置、常见问题排查与优化经验,旨在帮助开发者快速实现稳定高效的车载视频流接入。 阅读详情

目录

背景

主线

协议

1、各方关系

2、协议简介


背景

最近在做905协议,本想着靠着度娘扒拉下代码参考一下,发现资源非常有限,于是就只有自己动手实现了一番,也踩了几个坑。

本着开源共享的精神,分享下我实现的过程,也做一个分享记录。这就是我写 JT905 的初衷。

主线

一、协议的简单讲解(本篇);

二、整体设计与协议实现;

三、netty简单讲解与接收端实现;

四、保存端实现;

协议

版本:JT/T 905.4-2014

1、各方关系

在建设实现 905 协议服务之前,需要明确各个系统间的关系,除非是终端承建平台,业务平台都是属于上级平台,只接收 905 协议的数据,所以建设的都是上级平台(接收端);而只有少数的项目,例如大数据中心等才有可能会作为下级平台推送数据。各方关系如下图:

2、协议简介

  • 在协议的 4.3 章节规定了链路流程:

  1. 下级平台登录上级平台

  2. 心跳(链路保活)

  3. 数据交互

  4. 连读断开

心跳需要注意时间规定:

4.3.1.2 链路保持流程 链路保持流程应遵循以下规定:

  a) 下级平台登录成功后,在与上级平台之间如果有应用业务数据包往来的情况下,不需要发送链路保持数据包;否则,下级平台应每隔 1min 发送一个链路保持请求数据包到上级平台以保持链路连接;

  b) 在没有应用数据包往来的情况下,上级平台连续 3min 未收到下级平台发送的链路保持请求数据包,则认为与下级平台的连接中断,将主动断开数据传输链路;

  c) 在没有应用数据包往来的情况下,下级平台连续 3min 未收到上级平台发送的链路保持应答数据包,则认为与上级平台的连接中断,将主动断开数据传输从链路。

即空闲时每分钟下级平台需要发一次心跳包,而上级平台需要回复心跳包;超时时间为3分钟。心跳包有规定,不需要携带数据体,但是依然由头标志、消息头、CRC校验码、尾标志,详见协议规定。

  • 在 4.4.3 章节规定了协议包的结构,4.4.4 到 4.4.7 章节规定了数据的含义和长度,总体如下图:

(本图请结合协议规定的结构观看会更容易理解)

消息头和消息体中的数据,只需要按照协议的规定进行解析即可,因为协议中规定了顺序和每个数据长度,复杂度不高。

需要注意的点是:消息头中的 msg_id 是消息类型,但代表的是一级类型,其值的规定在 5.1 章节中;而在 4.5.3 章节中的动态数据业务类中又规定了 子业务类型 ,这个子业务类型是消息体的 DATA_TYPE ,其值的规定在 5.2 章节中,需要注意不要搞混了。

需要吐槽的是:4.5.3.1 章节规定的实时车辆定位消息体报文中,DATA_TYPE 在最前面,是很利于数据解析的,但是在 4.5.3.3 章节规定的车辆定位信息自动补报消息体报文中,DATA_TYPE 既然被规定在了第3位,导致需要特殊处理,放在第1位难道不好么?

  • CRC16-CCITT 校验码

定义:CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。

我本来想深入学习一下,但是通过度娘找到的资料有限,没有真正弄明白,在这里就不过多的讲解。并且通过度娘找到的 CRC 计算实现代码有坑,不准确。无奈找到在线计算器,扒拉里面的逻辑写出了 CRC 校验码。

比较有用的博客(是C语言的实现):C语言版CRC-16系列校验算法_我伴你度过明天的博客-优快云博客_crc16校验

在线计算器:CRC(循环冗余校验)在线计算_ip33.com

  • 数据的转义和传输的格式

由于头标志和尾标志已经固定规定为:0x5b 和 0x5d ,在 4.4.4 章节中就规定了字符转义

4.4.4 标示位

头标识为字符 0x5b。

尾标识为字符 0x5d。

若校验码、消息头以及消息体中出现头尾标识字符,则要进行转义处理,转义规则如下:

  a) 若数据内容中有出现字符 0x5b 的,需替换为字符 0x5a 紧跟字符 0x01;

  b) 若数据内容中有出现字符 0x5a 的,需替换为字符 0x5a 紧跟字符 0x02;

  c) 若数据内容中有出现字符 0x5d 的,需替换为字符 0x5e 紧跟字符 0x01;

  d) 若数据内容中有出现字符 0x5e 的,需替换为字符 0x5e 紧跟字符 0x02。

所以实现的时候一定要注意转义。

并且从这个规定中可以看出协议中没有说明的点:数据在传输前,需要转换为16进制字符串的 byte 数组再传递,并且协议中规定的每个字段占用的 byte 数,也是指的16进制的数据,而不是原数据。

2020-09-16Netty干货分享:京东京麦的生产级TCP网关技术实践总结 1、引言 京东的京麦商家后台2014年构建网关,从HTTP网关发展到TCP网关。在2016年重构完成基于Netty4.x+Protobuf3.x实现对接PC和App上下行通信的高可用、高性能、高稳定的TCP长连接网关。早期京麦搭建HTTP和TCP长连接功能主要用于消息通知的推送,并未应用于API网关。随着逐步对NIO的深入学习和对Netty框架的了解,以及对系统通信稳定能力的愈加高要求,采用NIO技术应用网关实现API请求调用的想法,最终在2016年实现,并完全支撑业务化运行。由于诸多的改进,包括TCP长 阅读详情

相关推荐

JT∕T 905 -2014 出租汽车服务管理信息系统的相关协议研究

出租汽车服务管理信息系统(JT∕T 905 -2014) 国家的相关技术要求2014年7月正式出台,总体有四部分, 第 1 部分:总体技术要求; 第 2 部分:运营专用设备; 第 3 部分:信息数据元; 第 4 部分:数据交换与共享。相应的国标文件为: JT∕T 905.1-2014 出租汽车服务管理信息系统 JT∕T 905.2-2014 出租汽车服务管...

weixin_30588827的博客 1914

视频监控平台:支持交通部行业标准JT/T905协议(即:出租汽车服务管理信息系统)的源代码的函数和功能介绍及分享

威迪斯特视频监控接入平台AS-V1000,也可以称为:视频监控综合资源管理平台,视频监控平台,视频监控汇聚平台(或视频监控汇集平台),视频监控管理平台,视频监控综合管理平台,是一套集成了用户设备权限管理、视音频监控、大容量存储、电子地图的系统平台软件。系统平台能够实现接入不同品牌的视频监控平台、视频相关设备、外围设备等等;本C++代码定义了一个名为CNetSdkForJT905的类,该类是为了通过交通部JT/T905协议,接入符合JT/T905协议的设备进行通信而设计的,包含类定义、成员函数、成员变量。

weixin_70208651的博客 2347

JT/T905协议视频监控平台:从协议解析到SDK集成的开发实践与源码剖析

本文深入解析JT/T905协议在视频监控平台开发中的应用,从协议基础结构、消息格式到SDK集成与设备接入实战。通过详细的代码示例,分享协议解析、视频流处理、性能优化及多版本兼容性处理的核心技术,帮助开发者快速掌握出租车服务管理信息系统的视频监控开发实践。

w1x2y3的博客 631

基于netty框架的JTT808/JTT905/JTT1078协议客户端

基于netty框架的JTT808/JTT905/JTT1078协议客户端

shuiyin2013的博客 2569

部标协议JTT808/JTT905/1078.zip

包含2013版与2019版JTT808,以及2014版与2019版JTT905,交通部视频协议1078等

JT/ T905《出租汽车服务管理信息系统》标准文档

交通运输行业标准JT /T 905. 1—2014,出租汽车服务管理信息系统 JT/ T 905《出租汽车服务管理信息系统》分为四个部分: ———第 1 部分:总体技术要求; ———第 2 部分:运营专用设备; ———第 3 部分:信息数据元; ———第 4 部分:数据交换与共享。 本部分为 JT/ T 905 的第 1 部分。 本部分按照 GB/ T 1. 1—2009 给出的规则起草。

1-2 认识905,从外包月薪5K到阿里月薪15K

总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习还有更多学习笔记面试资料也分享如下:dis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习还有更多学习笔记面试资料也分享如下:[外链图片转存中…(img-Ds48PDk0-1711652704561)]

2401_83977357的博客 820

深圳出租车905协议

深圳市出租汽车服务 -2017-05-02修订版,基于国标905扩展 深圳市出租汽车服务管理信息系统车载专用设备配置指引

Android GB905协议详解

最近发现,深圳做网约车和货车的协议的公司越来越多了,之前在公司做过一些这方面的项目。就来写个这方面的文章记录下,也顺便分享下。 GB905,主要是面向网约车的一种协议,主要监控司机的行为,确保乘车安全。 首先一些协议的指令。 public class JTT905Cmd { /** * ISU通用应答 */ public static final int ISU_GENERAL_RESPONSE = 0x0001; /*** 中心通用应答 */ public static final i

美丽心情 2629

从NIO到Netty,编程实战出租车905协议-08172347.pdf

905.4-2014协议,是交通运输部公路科学研究院起草定制的一个协议标准,它也是基于TCP之上的一个应用层传输协议。 第2章,介绍在Socket编程过程中一些基础知识,让大家建立起对这块知识内容的一个整体轮廓; 第3章,结合905.4-2014协议的基本内容,动手实现NIO长连接服务端的实现,以及协议内容的设计和实现思路; 第4章,实现长连接客户端,以及采用多线程技术进行系统性能测试; 第5章,介绍Netty相关基础知识,并使用Netty实现长连接服务端的编码。 适用人群 具有一定的Java开发基础; 学习Java开发领域Spring框架之外的东西; 想快速通过实战项目提升个人能力的同学。 想通过实战入门NIO、Netty。

win10删除vmware12后,重新安装失败(遗留注册表问题)解决总结

之前安装过一次VMware虚拟机,后来由于某些已遗忘原因把它卸载了,但是没有卸载完全,为以后安装留下了一些麻烦,现在根据我google很多内容总结后写下了自己的解决办法。 一些我搜的的可以用的VM12的注册码 5A02H-AU243-TZJ49-GTC7K-3C61N ZZ510-DYX47-48ERP-D6XZG-YCKU2 YV5MU-2FX5H-M841P-LZX5X-PYHX8

Jeason的博客 2万+

905协议第四部分简单说明

905协议以5b开头5d结尾,转成ascii就是[]这两个符号,905是用中括号括起来的消息, 消息构成=[+消息头+消息体+crc+] 业务逻辑是消息头与消息体两部分组成 消息头=数据长度+消息序列号+业务类型标识(重要)+协议版本号+是否加密+密钥 消息头中最重要的就是业务类型标识,服务端与客户端根据此标识进行动作. 消息体每种都不一样,根据业务逻辑来规定 905中的业务逻辑分两大类,一种是定长的,一种是不定长的 定长的就是长度固定,按位置去解析数据 不定长的按内部标识符解析 定长消息

佳泰生活 1328

wincc 服务器授权型号,WinCC V7.5 SP1软件安装及授权方法

上篇教程给大家介绍了TIA Portal V16 安装方法,今天分享一下WinCC V7.5 SP1。目前V7.5 SP1是WinCC最新的版本,发布时间2019年11月13日。先放一个官网对WinCC V7.5 的介绍视频,感兴趣的可以先看一下。1、软件下载官网下载链接:https://support.industry.siemens.com/cs/document/109772879五个文件下...

weixin_39956110的博客 1万+

没错,我把这个协议(JT/T 905.4-2014)实现了!

文章目录905.4-2014协议协议约定内容技术要点 第一次遇到和客户做数据对接,客户不需要提供任何接口的场景…… 905.4-2014协议 905.4-2014协议,是交通运输部公路科学研究院起草定制的一个协议标准,它也是基于TCP之上的一个应用层传输协议。协议详情,请参考此文。 谈谈我对这个协议的理解。 首先,我们知道,互联网的数据是由0和1构成的,我们在浏览器中能看到对应的数据,是因为浏览器接收的数据遵循了一定的规范,专业点讲就是协议。http协议就是这样的一个协议,它把传输在网络中的数据变得

子涵先生 2430

腾讯云CodeBuddy+微信小程序:5分钟开发番茄小闹钟

番茄钟是一种简单的时间管理方法。这个方法很简单:你专注工作25分钟,然后休息5分钟。这样可以让你更专心,不容易分心,还能防止过度疲劳。 很多人用番茄钟来提高工作效率,因为它能帮助你更好地管理时间。不过,市面上的一些免费番茄钟应用常常会有广告弹出来,影响使用体验。这就是为什么我们要开发一个没有广告的番茄钟小程序,让用户可以专心工作,不被打扰。

2201_75366661的博客 1689

使用python排八字 计算八字的相合相冲五行分值等 ...

简介 八字术是一种古老的算命术。它运用阴阳、五行、干支、八卦等理论,把人的出生年月日时转化为八个字,进而推算人的富贵贫贱、祸福吉凶、穷通寿天、名利地位、家庭六亲等方面的情况 八字源自古代的中国,是一种利用天干和地支来准确记录年、月、日、时的方式,由“年干,年支”、“月干,月支”、“日干,日支”、“时干,时支”,共八个干支所组成(共八个字),年、月、日、时...

weixin_33717298的博客 5310

Android、Java,关于交通部808协议、905协议、794协议等部标协议、出租车协议、网约车协议、网约车智能终端、出租车智能终端的简要说明

作为一名有5年车辆网Android智能终端开发经验的入行人,今天跟大家分享一下我在车辆网这一领域的经历和技术。说实话,刚接触协议的时候,我感觉很懵逼,这哪里是Androi开发,简直就是跨行搞java和C去了。明人不装暗逼,直奔主题。 1. 为什么要装车辆网智能终端(GPS设备)? 方便相关部分(交委、公安)的监管和相关企业(出租车公司)的管理,以及提高司机和乘客的出行安全和出行体验...

u013049709的专栏 5649

Power BI Report Server自定义登录实战:从AD切换到Form的完整流程(附GitHub源码)

本文详细介绍了如何将Power BI Report Server的登录认证从Active Directory切换到自定义Form认证的完整流程。通过环境准备、认证模块编译、配置脚本修改等步骤,帮助用户实现品牌统一的登录界面和简化外部用户访问。附有GitHub源码,适用于需要个性化登录解决方案的企业。

pz890123456的博客 209

中间件服务实践

序言16年年底,做了一个车载行业的项目,是基于公司的设备对出租车905协议解析保持与平台和设备其他进程保持通信的中间层服务。这个服务我们暂称为TaxiUsi,他和平台以及设备进程以及Client都有通信,且都是双向的,整体来说还是比较复杂的,由于机密问题,这里只给出整体的一个实现思路和流程,作为项目的总结,下面是整体的原理图:可以看到,Client端和外设设备是通过Binder和TaxiUsi进行一

Nipuream 2067

基于libVLC的视频播放器之四:直接使用libVLC

一.效果 播放本地文件 播放网络url:rtsp://3.84.6.190/vod/mp4:BigBuckBunny_115k.mov 二.实现 既然有VLC-Qt,为什么还要直接调用libVLC呢,因为直接调用会加深对整个播放流程的理解,方便后面修改VLC-Qt源码。 注意事项: 1.编译报错:error C2065: “libvlc_media_read_cb”: 未声明的标识符。修改如下: 2.libvlc_new(0, nullptr)返回null 将plugins

草上爬的博客 5049

激光除草技术原理与应用全解析

激光除草技术通过光热、光化学等效应精准破坏杂草组织,核心参数包括功率(20-6000W)、波长(400nm-10.6μm)和脉冲宽度。主要应用于大田作物(如玉米、棉花)、经济作物(烟草、果树)及城市绿化,具有环保(无化学污染)、高效(识别率≥95%)和非接触等优势,但存在设备成本高(20-50万元)、技术门槛高等局限。当前技术融合AI识别、多光谱协同等创新,国产设备如华工智耘已实现95.3%识别精度。虽短期投入较高,但长期可降低30%除草成本,并带来环境效益(每亩减排1.2吨CO₂)

start_up_go的博客 557

C语言实现部标JTT808

C语言实现部标JTT808

shuiyin2013的博客 2698

手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战

摘要: 本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理,通过滑模观测器估算反电动势,结合PLL抑制抖振;2)系统架构,替代编码器信号;3)Simulink建模流程,涵盖Clarke变换、SMO离散化实现、PLL设计等关键步骤;4)参数整定指南和工程实践要点,如启动策略和故障处理。该方法具有成本低、可靠性高的优势,适用于家电、电动车等场景,仿真结果显示角度误差±5°,速度动态跟随良好。文章还提供了调试建议和常见问题解决方案。

MHD0815的博客 139

车辆部标协议对接政府平台的框架

car-eye JT1078-808 平台已经出了第一版,下一版可能需要紧跟部标的几个大协议JT808 JT809 JT1078 JT1077 JT796 jt905。这里面JT808 1078 是设备端协议,JT809 JT1077 JT796 主要是货运市场的平台端协议或规则。JT1905主要是出租车市场的协议。 JT905需要考虑营运数据和协议格式的兼容。JT809 主要针对政府平台上报。...

Car_eye的博客 2437

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

JT/T905《出租汽车服务管理信息系统》标准文档

JT/T905《出租汽车服务管理信息系统》标准文档 去发现同类优质开源项目:https://gitcode.com/ 这里是交通运输行业标准JT/T 905.1—2014《出租汽车服务管理信息系统》的资源文件下载仓库。该标准文档主要分为四个部分,分别为: 总体技术要求:详细规定了出租汽车服务管理信息系统的总体技术要求,为系统设计和实施提供指导。 运营专用设备:明确了出租汽车服务管理信息系统所需使...

gitblog_06796的博客 551

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: Nginx proxy_pass反向代理动态端口
下一篇: RedisTemplate同步大数据量性能实测
网上搬砖
博客等级 码龄6年 4粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值