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

news2024/11/16 20:31:03

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命令

指令示例: 

7e920500140186805708619f160124091800000024091823595900000000000100107e

 示例解释:

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

5.2.设备应答视频列指令

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

 应答示例:

7E1205000601868057086104B39F1600000000167E

 示例解释:

7E 
1205 --设备应答查询设备视频列表的命令ID
0006 --消息体属性
018680570861 --设备ID,不足12位前面补0,如果是2019的协议,不足20位前面补0
04B3 --消息流水号
9F16 --应答查询命令的消息流水号
00000000 --音视频资源总数(需要设备插入TF卡或者硬盘才有视频记录,这个需要注意)
16 --校验码
7E

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.结语

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

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

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

相关文章

Spring IDEA 2024 自动生成get和set以及toString方法

1.简介 在IDEA中使用自带功能可以自动生成get和set以及toString方法 2.步骤 在目标类中右键,选择生成 选择Getter和Setter就可以生成每个属性对应的set和get方法, 选择toString就可以生成类的toString方法,

推荐一款PS VR2电脑PC适配器 / 转接板方案

一、引言 随着虚拟现实技术的不断发展,PS VR2 为用户带来了沉浸式的游戏和娱乐体验。然而,为了让 PS VR2 能够与电脑连接,充分发挥其性能并拓展使用场景,需要开发一款电脑适配器 / 转接板。本技术文档方案旨在详细阐述该适配器 / …

Linux软件包管理器、Linux开发工具、vim的配置等的介绍

文章目录 前言一、Linux软件包管理器yum二、Linux开发工具1. 命令模式2. 插入模式3. 底行模式4. 三种模式的切换5. 命令模式下的快捷键 三、vim的配置总结 前言 Linux软件包管理器、Linux开发工具、vim的配置等的介绍 一、Linux软件包管理器yum 关于rzsz 这个工具用于 window…

【深度学习】聊一聊正则化

在机器学习中,正则化是一种常用的技术,用于控制模型的复杂度,减少过拟合的风险。它通过在损失函数中引入额外的项来对模型的参数进行约束或惩罚,使模型更加简单、平滑或稀疏。我们在实际应用中,经常使用的是L1和L2正则…

JAVA连接世界驾驭未来国际版二手车交易市场系统小程序源码

🚗【连接世界,驾驭未来 —— 探索国际版二手车交易市场系统】🚗 🌍 开篇:梦想无界,车行天下 🌍 在这个日新月异的时代,我们对未来的憧憬不再局限于脚下的土地。你是否曾梦想过&…

VM-Ubantu中使用vscode头文件报错——解决办法

问题 系统中头文件明明存在但是却报错 解决方法 在报错的文件中点击,shift ctrl p选择Edit Configurations(JSON) 修改文件内容 原文件内容 修改之后的内容 {"configurations": [{"name": "Linux","includePath":…

How can I integrate OpenAI Whisper model into a Kotlin app?

题意: 如何将 OpenAI Whisper 模型集成到 Kotlin 应用程序中? 问题背景: I require guidance on incorporating Whisper OpenAI into my Android application developed with Kotlin in Android Studio. Unfortunately, I havent come across any rele…

Trapezoidal Decomposition梯形分解算法(TCD)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言Trapezoidal Decomposition梯形分解算法(TCD)原理(1)第一种原理(2…

粒子向上持续瀑布动画效果(直接粘贴到记事本改html即可)

代码&#xff1a; 根据个人喜好修改即可 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>宽粒子向上…

技术周总结 09.16~09.22 周日

文章目录 一、09.16 周一1.1&#xff09;问题01&#xff1a; 软件质量属性中"质量属性场景"、"质量属性环境分析"、"质量属性效用树"、"质量属性需求用例分析"分别是什么&#xff1f;1.2&#xff09;问题02&#xff1a; 软件质量属性中…

Sharding-Jdbc+Mybatis+SpringBoot的分库分表实现

Sharding-JdbcMybatisSpringBoot的分库分表实现 1、sharding jdbc简介 Sharding-JDBC定位为轻量级java框架&#xff0c;使用客户端直连数据库&#xff0c;以jar包形式提供服务&#xff0c;未使用中间层&#xff0c;无需额外 部署&#xff0c;无其他依赖&#xff0c;DBA也无需…

SQL - 进阶语法(一)

1. SELECT TOP SELECT TOP Number|Percentage column1 from ... 选择所需要的数据的前多少行&#xff0c;Number表示具体数值&#xff0c;Percentage表示百分比 2. LIKE 搜索列元素的指定模式&#xff0c;匹配对应的信息进行自定义搜索 通常需要搭配通配符进行使用 %替代…

FPGA与Matlab图像处理之直方图均衡化

文章目录 一、什么是直方图?二、什么是直方图均衡化&#xff1f;三、Matlab实现直方图均衡化的步骤第一步&#xff1a; 彩色图像转成灰度图像第二步&#xff1a;提取亮度通道的直方图第三步&#xff1a;累计亮度通道的像素值频率第四步&#xff1a; 映射到新的灰度值 四、Veri…

使用pe工具制作ubuntu备份系统和还原系统

使用pe工具制作ubuntu备份系统和还原系统 备份系统还原系统修复磁盘教程修复引导教程为什么使用pe工具 1,因为我个人觉得这个工具实现起来比systemback软件操作起来报错少些,而且装的快,其他系统同理 实验准备 1,一个电脑,一个pe启动U盘 备份系统 插入U盘,开机进入pe系…

数据结构|二叉搜索树

&#x1f36c; mooridy-CSDN博客 &#x1f36c;数据结构专栏&#xff08;更新中&#xff09; 目录 1. ⼆叉搜索树的概念 2. ⼆叉搜索树的性能分析 3.⼆叉搜索树key和key/value key搜索场景 key/value搜索场景 4. 二叉搜索树的代码实现 4.1 ⼆叉搜索树的插⼊ 4.2 ⼆叉搜索…

harbor私有镜像仓库,搭建及管理

私有镜像仓库 docker-distribution docker的镜像仓库&#xff0c;默认端口号5000 做个仓库&#xff0c;把镜像放里头&#xff0c;用什么服务&#xff0c;起什么容器 vmware公司在docker私有仓库的基础上做了一个web页面&#xff0c;是harbor docker可以把仓库的镜像下载到本地&…

docker入门总结(附错误处理,持续更新)

安装、启动、卸载 卸载掉旧版本的 Docker yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engineDocker安装&#xff08;选其一&#xff09;…

CTC loss 博客转载

论文地址&#xff1a; https://www.cs.toronto.edu/~graves/icml_2006.pdf 为了对应这个图&#xff0c;我们假设一种符合的模型情况&#xff1a; 英文OCR&#xff0c;37个类别&#xff08;26个小写字母10个汉字空格&#xff09;&#xff0c;最大输出长度8个字符 模型预测结果…

C++:多态(协变,override,final,纯虚函数抽象类,原理)

目录 编译时多态 函数重载 模板 运行时多态 多态的实现 实现多态的条件 协变 析构函数的重写 override 关键字 final 关键字 重载、重写、隐藏对比 纯虚函数和抽象类 多态的原理 多态是什么&#xff1f; 多态就是有多种形态 多态有两种&#xff0c;分别是编译时…

【Linux-基础IO】C语言文件接口回顾 系统文件概念及接口

目录 一、C语言文件接口回顾 C语言基础知识 C中文件操作示例 二、系统文件概念及接口 重定向基本理解的回顾 文件的基本概念 系统调用接口 open read write close lseek 什么是当前路径 一、C语言文件接口回顾 引言&#xff1a;我们并不理解文件&#xff01;从语…