当前位置: 首页 > news >正文

部标(JT/T1078)流媒体对接说明

1.前言

最近在配合客户开发流媒体相关的服务的时候,整理了一些对接过程资料,这里做个分享与记录。流媒体的对接主要牵扯到4个方面:
(1)平台端:业务端系统,包含前端呈现界面。

(2)JT/T808网关:部标设备接入网关,这个是非常重要的,是设备与平台进行数据交换的桥梁,流媒体相关的指令操作也必须依赖它完成。

(3)部标视频机:符合JT/T808协议的车载视频机器。

(4)流媒体服务:符合JT/T1078协议的流媒体服务,用来接收部标视频机的音视频流,并进行转发。

2.交互流程

2.1.实时音视频点播与控制流程

2.2.双向语音对讲流程

2.3.历史音视频回放流程

3.实时音视频点播与控制指令详解

3.1.平台下发拉流指令

命令采用0x9101消息

命令组包示例:

7e91010016138110121350fef70e3132342e3232332e36302e3233341b590000010001097e

 示例解释:

7e 
9101 --拉流的命令ID
0016 --消息体属性
138110121350 --设备ID,不足12位前面补0,如果是2019的协议,不足20位前面补0
fef7 --消息流水号
0e --流媒体地址IP地址长度,14个字节
3132342e3232332e36302e323334  --IP 地址(124.223.60.234)
1b59 --流媒体地址TCP端口(7001)
0000 --流媒体地址UDP端口(0)
01 --视频通道号,即:设备上的摄像头的通道号,看哪个摄像头对哪个摄像头进行拉流
00 --拉流的数据类型(0:音视频;1:视频;2:双向对讲;3:监听;4:中心广播;5:透传,视频点播用音视频或者视频,但是一般都用音视频,对讲用2
01 --码流类型(0:主码流;1:子码流),设备上报的码流类型,一般默认用子码流,流畅度会高些,但是清晰度会稍微差点
09 --校验码
7e

3.2.设备应答拉流指令

设备对拉流指令采用的是通用应答:0x0001消息进行应答

3.3.组成拉流地址

平台收到设备指令应答后,后台组成拉流地址,返回给前端,组包示例如下:

"flv": "http://apollo.aovx.com:8088/00000000018026966027/1.live.flv",
"https_flv": "https://apollo.aovx.com:18443/00000000018026966027/1.live.flv",
"ws_flv": "ws://apollo.aovx.com:8088/00000000018026966027/1.live.flv",
"wss_flv": "wss://apollo.aovx.com:18443/00000000018026966027/1.live.flv",
"fmp4": "http://apollo.aovx.com:8088/00000000018026966027/1.live.mp4",
"https_fmp4": "https://apollo.aovx.com:18443/00000000018026966027/1.live.mp4",
"ws_fmp4": "ws://apollo.aovx.com:8088/00000000018026966027/1.live.mp4",
"wss_fmp4": "wss://apollo.aovx.com:18443/00000000018026966027/1.live.mp4",
"hls": "http://apollo.aovx.com:8088/00000000018026966027/1/hls.m3u8",
"https_hls": "https://apollo.aovx.com:18443/00000000018026966027/1/hls.m3u8",
"ws_hls": "ws://apollo.aovx.com:8088/00000000018026966027/1/hls.m3u8",
"wss_hls": "wss://apollo.aovx.com:18443/00000000018026966027/1/hls.m3u8",
"ts": "http://apollo.aovx.com:8088/00000000018026966027/1.live.ts",
"https_ts": "https://apollo.aovx.com:18443/00000000018026966027/1.live.ts",
"ws_ts": "ws://apollo.aovx.com:8088/00000000018026966027/1.live.ts",
"rtmp": "rtmp://apollo.aovx.com:8935/00000000018026966027/1",
"rtsp": "rtsp://apollo.aovx.com:8554/00000000018026966027/1",
"rtsps": "rtsps://apollo.aovx.com:8332/00000000018026966027/1",

其中:apollo.aovx.com是服务器的IP或者域名,后面是每种拉流方式对应的端口
00000000018026966027:对应的是设备的ID,为了兼容JT/T808-2019的协议,所以返回默认20位(前面补0即可)
1.live.flv:其中1指的是通道号,.live.flv流媒体的后缀,不同的拉流方式可能不一样。
前端通过这个地址拉流即可。

3.4.流控制命令

流控制命令采用的是0x9102命令

流控制命令组包示例:

7e91020004138110121350c52e01000001af7e

 示例解释:

7e
9102 --流控制的命令ID
0004 --消息体属性
138110121350 --设备ID,不足12位前面补0,如果是2019的协议,不足20位前面补0
c52e --消息流水号
01 --视频通道号,即:设备上的摄像头的通道号
00 --控制指令(0:关闭音视频传输指令;1:切换码流;2:暂停该通道所有流的发送;3:回复暂停前流的发送;4:关闭双向对讲)
00 --关闭音视频类型(0:关闭该通道有关的音视频数据;1:只关闭该通道有关的音频;2:只关闭该通道的视频)
01 --切换码流类型(0:新申请码流为主码流;1:新申请码流为子码流)
af --校验码
7e

3.5.设备应答流控制命令

设备流控制命令采用的是通用应答:0x0001消息进行应答

4.双向语音对讲指令详解

 4.1.平台下发语音对讲指令

命令采用0x9101消息,语实时拉流一致主要区别是数据类型采用2双向对讲

命令组包示例:

7e9101001601802696602709fc0e3132342e3232332e36302e3233341b590000010201527e

 示例解释:

7e
9101 --对讲的命令ID
0016 --消息体属性
018026966027 --设备ID,不足12位前面补0,如果是2019的协议,不足20位前面补0
09fc --消息流水号
0e --流媒体地址IP地址长度,14个字节
3132342e3232332e36302e323334 --IP 地址(124.223.60.234)
1b59 --流媒体地址TCP端口(7001)
0000 --流媒体地址UDP端口(0)
01 --对讲通道号
02 --数据类型
01 --码流类型(0:主码流;1:子码流),设备上报的码流类型,一般默认用子码流,流畅度会高些,但是清晰度会稍微差点
52 --校验码
7e

4.2.设备应答对讲指令

设备对拉流指令采用的是通用应答:0x0001消息进行应答

4.3.组成推流与拉流地址

平台收到设备指令应答后,后台组成拉流地址,返回给前端,组包示例如下:

"flv": "http://apollo.aovx.com:8088/00000000018026966027/1.live.flv",
"https_flv": "https://apollo.aovx.com:18443/00000000018026966027/1.live.flv",
"ws_flv": "ws://apollo.aovx.com:8088/00000000018026966027/1.live.flv",
"wss_flv": "wss://apollo.aovx.com:18443/00000000018026966027/1.live.flv",
"fmp4": "http://apollo.aovx.com:8088/00000000018026966027/1.live.mp4",
"https_fmp4": "https://apollo.aovx.com:18443/00000000018026966027/1.live.mp4",
"ws_fmp4": "ws://apollo.aovx.com:8088/00000000018026966027/1.live.mp4",
"wss_fmp4": "wss://apollo.aovx.com:18443/00000000018026966027/1.live.mp4",
"hls": "http://apollo.aovx.com:8088/00000000018026966027/1/hls.m3u8",
"https_hls": "https://apollo.aovx.com:18443/00000000018026966027/1/hls.m3u8",
"ws_hls": "ws://apollo.aovx.com:8088/00000000018026966027/1/hls.m3u8",
"wss_hls": "wss://apollo.aovx.com:18443/00000000018026966027/1/hls.m3u8",
"ts": "http://apollo.aovx.com:8088/00000000018026966027/1.live.ts",
"https_ts": "https://apollo.aovx.com:18443/00000000018026966027/1.live.ts",
"ws_ts": "ws://apollo.aovx.com:8088/00000000018026966027/1.live.ts",
"rtmp": "rtmp://apollo.aovx.com:8935/00000000018026966027/1",
"rtsp": "rtsp://apollo.aovx.com:8554/00000000018026966027/1",
"rtsps": "rtsps://apollo.aovx.com:8332/00000000018026966027/1",
"ws_tts": "ws://apollo.aovx.com:7002/00000000018026966027/1?type=0&pt=pcm&vendorType=0",
"wss_tts": "wss://apollo.aovx.com:4443/00000000018026966027/1?type=0&pt=pcm&vendorType=0"

平台端对音频采集通过ws_tts或者wss_tts进行推流,并通过拉流地址进行音频拉流。

4.4.对讲控制命令

对讲控制命令采用的是0x9102命令,当控制指令为4的时候关闭双向对讲

流控制命令组包示例:

7e91020004138110121350c52e01040001ab7e

 示例解释:

7e
9102 --流控制的命令ID
0004 --消息体属性
138110121350 --设备ID,不足12位前面补0,如果是2019的协议,不足20位前面补0
c52e --消息流水号
01 --视频通道号,即:设备上的摄像头的通道号
04 --控制指令(0:关闭音视频传输指令;1:切换码流;2:暂停该通道所有流的发送;3:回复暂停前流的发送;4:关闭双向对讲)
00 --关闭音视频类型(0:关闭该通道有关的音视频数据;1:只关闭该通道有关的音频;2:只关闭该通道的视频)
01 --切换码流类型(0:新申请码流为主码流;1:新申请码流为子码流)
ab --校验码
7e

4.5.设备应答对讲控制命令

设备对讲控制命令采用的是通用应答:0x0001消息进行应答

5.历史音视频回放指令详解

5.1.获取视频回放列表

视频回放列表获取采用的是:0x9205命令

指令示例: 

7E920500140139070096834F900224092300000024092323595900000000000000577E

 示例解释:

7E
9205 --查询设备视频列表的命令ID
0014 --消息体属性
013907009683 --设备ID,不足12位前面补0,如果是2019的协议,不足20位前面补0
4F90 --消息流水号
02 --视频通道号,即:设备上的摄像头的通道号
240923000000 --查询时间段的开始时间(yyMMddHHmmss)
240923235959 --查询时间段的结束时间(yyMMddHHmmss)
00000000 --报警标志
00  --音视频类型(0:音视频,1:音频,2:视频,3:视频或音视频)
00  --码流类型(0:主码流或子码流;1:主码流;2:子码流)
00  --存储器类型(0:主存储器或者灾备存储器,1:主存储器;2:灾备存储器)
57  --校验码
7E

5.2.设备应答视频列指令

设备对获取视频列表的应答采用的是:0x1205消息进行应答

 应答示例:

7E1205000601868057086104B39F1600000000167E

 示例解释:

7E 
1205 --设备应答视频列表的命令ID
211E --消息体属性(发生了分包)
013907009683 --设备ID,不足12位前面补0,如果是2019的协议,不足20位前面补0
003B --当前消息流水号
0005 --总包数
0001 --当前包序号
97F8 --应答流水号
0000002A --视频资源总数01 --通道号
240923091728 --开始时间
240923091938 --结束时间
0000000000000000 --报警标志
00 --音视频资源类型(0:音视频;1:音频;2:视频)
01 --码流类型(1:主码流;2:子码流)
01 --1:主存储器;2:灾备存储器
0C7F425E --文件大小,单位BYTE01
240923091937
240923092128
0000000000000000
00
01
01
0C7FEC45
0124092309212724092309231900000000000000000001010C7FA9B90124092309231724092309250900000000000000000001010C7FA0210124092309250824092309270000000000000000000001010C7FF0300124092309265924092309285000000000000000000001010C7FF9600124092309284924092309304000000000000000000001010C7FD7EB0124092309

5.3.历史视频点播

历史视频点播采用的是:0x9201命令

 

指令示例:

7e9201002513811012135011190e3132342e3232332e36302e3233341b5900000100000000002404301356182404301439236d7e

 示例解释:

7e
9201 --进行历史视频回放命令ID
0025 --消息体属性
138110121350 --设备ID,不足12位前面补0,如果是2019的协议,不足20位前面补0
1119 --消息流水号
0e --流媒体地址IP地址长度,14个字节
3132342e3232332e36302e323334  --IP 地址(124.223.60.234)
1b59 --流媒体地址TCP端口(7001)
0000 --流媒体地址UDP端口(0)
01 --视频通道号,即:设备上的摄像头的通道号,看哪个摄像头对哪个摄像头进行拉流
00 --音视频类型(0:音视频,1:音频,2:视频,3:视频或音视频)
00 --码流类型(0:主码流或子码流;1:主码流;2:子码流)
00 --存储器类型(0:主存储器或者灾备存储器,1:主存储器;2:灾备存储器)
00 --回放类型(0:正常回放;1:快进回放;2:快退回放;3:关键帧播放;4:单帧上传)
00 --快进或者快退倍数;0:无效;1:1倍;2:2倍;3:4倍;4:8倍;5:16倍
240430135618 --对应的历史视频列表中某个录像文件的开始时间(yyMMddHHmmss)
240430143923 --对应的历史视频列表中某个录像文件的结束时间(yyMMddHHmmss)
6d --校验码
7e

5.4.设备应答拉流指令

设备对拉流指令采用的是通用应答:0x0001消息进行应答

5.5.组成拉流地址

平台收到设备指令应答后,后台组成拉流地址,返回给前端,组包示例如下,与实时视频一致:

        "flv": "http://apollo.aovx.com:8088/00000000018026966027/1.live.flv","https_flv": "https://apollo.aovx.com:18443/00000000018026966027/1.live.flv","ws_flv": "ws://apollo.aovx.com:8088/00000000018026966027/1.live.flv","wss_flv": "wss://apollo.aovx.com:18443/00000000018026966027/1.live.flv","fmp4": "http://apollo.aovx.com:8088/00000000018026966027/1.live.mp4","https_fmp4": "https://apollo.aovx.com:18443/00000000018026966027/1.live.mp4","ws_fmp4": "ws://apollo.aovx.com:8088/00000000018026966027/1.live.mp4","wss_fmp4": "wss://apollo.aovx.com:18443/00000000018026966027/1.live.mp4","hls": "http://apollo.aovx.com:8088/00000000018026966027/1/hls.m3u8","https_hls": "https://apollo.aovx.com:18443/00000000018026966027/1/hls.m3u8","ws_hls": "ws://apollo.aovx.com:8088/00000000018026966027/1/hls.m3u8","wss_hls": "wss://apollo.aovx.com:18443/00000000018026966027/1/hls.m3u8","ts": "http://apollo.aovx.com:8088/00000000018026966027/1.live.ts","https_ts": "https://apollo.aovx.com:18443/00000000018026966027/1.live.ts","ws_ts": "ws://apollo.aovx.com:8088/00000000018026966027/1.live.ts","rtmp": "rtmp://apollo.aovx.com:8935/00000000018026966027/1","rtsp": "rtsp://apollo.aovx.com:8554/00000000018026966027/1","rtsps": "rtsps://apollo.aovx.com:8332/00000000018026966027/1",

5.6.历史视频回放拉流控制

历史视频回放拉流控制采用的是:0x9202命令

 

 指令示例:

7e92020009138110121350f7b90102002404180000003f7e

 示例解释:

7e
9202 --进行历史视频回放控制命令ID
0009 --消息体属性
138110121350 --设备ID,不足12位前面补0,如果是2019的协议,不足20位前面补0
f7b9 --消息流水号
01 --视频通道号
02 --回放控制类型(0:开始回放;1:暂停回放;2:结束回放;3:快进回放;4:关键帧快退回放;5:拖动回放;6:关键帧播放)
00 --如果是快进或者快退(快进或者快退倍数;0:无效;1:1倍;2:2倍;3:4倍;4:8倍;5:16倍)
240418000000 --如果是拖动回放,则是拖动到的时间(yyMMddHHmmss)
3f --校验码
7e

5.7.设备应答控制指令

设备对视频回放控制采用的是通用应答:0x0001消息进行应答

6.结语

对接过程中有很多的坑,特别是双向对讲,如果采集音频并通过流媒体抓发给设备,还有设备使用的那种编码格式,如何兼容海思头等等,如有兴趣的朋友可以一起交流沟通。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • POI操作EXCEL插入图片
  • 两数之和、三数之和、四数之和
  • PTA矩阵转置
  • Vue|插件
  • 2024双11买什么东西比较好?2024双十一好物推荐
  • 【Qt】背景介绍
  • 6-1 jmu-Java-04面向对象进阶-01-接口-匿名内部类ActionListener
  • SQL Server2012保姆安装教程----带你快速上手数据库创建
  • 通过service访问Pod
  • JavaScript 内存管理
  • 1.4 边界值分析法
  • ECharts的特点
  • Python中set的用法详解
  • 【2024W32】肖恩技术周刊(第 10 期):太阳神鸟
  • HT8693 10W防破音单声道D类音频功放 9W单声道AB类音频功放
  • 【node学习】协程
  • android 一些 utils
  • bootstrap创建登录注册页面
  • Github访问慢解决办法
  • httpie使用详解
  • iOS | NSProxy
  • iOS 颜色设置看我就够了
  • Java IO学习笔记一
  • Java反射-动态类加载和重新加载
  • JS学习笔记——闭包
  • PV统计优化设计
  • Python3爬取英雄联盟英雄皮肤大图
  • Python爬虫--- 1.3 BS4库的解析器
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 警报:线上事故之CountDownLatch的威力
  • 盘点那些不知名却常用的 Git 操作
  • 深入浅出Node.js
  • 网页视频流m3u8/ts视频下载
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​flutter 代码混淆
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • !!java web学习笔记(一到五)
  • #pragma once与条件编译
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (C)一些题4
  • (C++哈希表01)
  • (搬运以学习)flask 上下文的实现
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (一)SpringBoot3---尚硅谷总结
  • (一)SvelteKit教程:hello world
  • (一一四)第九章编程练习
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (轉貼) UML中文FAQ (OO) (UML)
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .NET 服务 ServiceController