部标(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.结语

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

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

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

相关文章

物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——STM32代码实现篇

STM32代码实现 开启本章节需要完成下方的前置任务: 点击跳转: 物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——汇总 目标 1.连接OneNET:STM32使用串口与ESP8266/01s连接发送…

Linux网络命令:用于请求和配置网络地址的命令dhclient详解

目录 一、概述 二、功能描述 三、基本使用 1. 命令格式 2. 常用选项 3. 获取帮助 ​编辑 4. 基本操作 四、工作原理 1. 发送DHCP请求 2. 接收DHCP响应 3. 请求IP地址 4. 确认IP地址 5. 配置网络接口 五、功能特点 六、配置文件 七、常用命令和示例 1、启动…

QT客户端发送HTTP请求此时服务器到底收到了哪些数据?

一个Http请求包括 请求行 请求头 空行 请求体 下面是示例: 1,2,3,4分别代表上面的四个部分,我只是做了一些解析,具体可以结合代码 1. post / HTTP/1.1 2.GET请求头包括Host(主机名),user-agent(客户端标识符)&am…

SiMBA:基于FFT变换和Mamba的图像分类模型算法解析

目录 1 算法原理1 EinFFT:1.1 频谱变换1.2 频域通道混频 & 频谱门控网络1.3 逆频谱变换 2 整体计算公式3 SiMBA:4 小结 2 代码大致逻辑EinFFT模块MambaBlock模块MambaLayer模块PVT2FFN和FFN模块ClassBlock和Block_mamba模块DownSamples模块Stem模块定…

统信服务器操作系统【targetcli部署】

targetcli部署方案 文章目录 功能概述功能介绍1.安装targetcli2.targetcli语法及参数说明3.示例1. 配置2.访问功能概述 SCSI 即小型计算机系统接口(Small Computer System Interface;简写:SCSI) iSCSI,internet SCSI 网络磁盘 ,提供一对一的网络存储, 主机A 提供xx存储设…

gitlab 的CI/CD (二)

前言 上文完成了gitlab-runner的基础配置及将gitlab的制品上传至软件包库(产品库)的脚本编写; 本文实现gitlab的ci/cd对远程服务器的操作; 介绍 要让Gitlab Runner部署到远程机器,远程机器必须信任gitlab runner账…

当大语言模型应用到教育领域时会有什么火花出现?

当大语言模型应用到教育领域时会有什么火花出现? LLM Education会出现哪些机遇与挑战? 今天笔者分享一篇来自New York University大学的研究论文,另外一篇则是来自Michigan State University与浙江师范大学的研究论文,希望对这个话题感兴趣…

构建高效企业客户管理系统:SpringBoot应用

1 绪论 1.1研究背景 随着网络不断的普及发展,企业客户管理系统依靠网络技术的支持得到了快速的发展,首先要从员工的实际需求出发,通过了解员工的需求开发出具有针对性的首页、个人中心、员工管理、客户信息管理、行业类型管理、项目信息管理、…

读取t x t文件生成exce

读取t x t文件生成excel package com.moka.api.custom.core.controller; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermode…

JetBrains系列产品无限重置免费试用方法

JetBrains系列产品无限重置免费试用方法 写在前面安装插件市场安装插件 写在前面 支持的产品: IntelliJ IDEA AppCode CLion DataGrip GoLand PhpStorm PyCharm Rider RubyMine WebStorm为了保证无限重置免费试用方法的稳定性,推荐下载安装2021.2.2及其…

基于milvus数据库的RAG-Demo

1.上传文本并将文本向量化 import os from django.conf import settings from langchain.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitter from langchain.vectorstores import Chroma from l…

Linux系统容器化部署中,构建Docker 镜像中包含关键指令和参数的文件dockerfile的详细介绍

目录 一、Dockerfile的用处 1、自动化构建 2、可重复性 3、可移植性 4、版本控制 5、优化镜像大小 6、便于分享和分发 二、Dockerfile 的基本结构 1、基础镜像(FROM) 2、维护者信息(MAINTAINER/LABEL maintainer) 3、设置工作目…

Leetcode 543. 124. 二叉树的直径 树形dp C++实现

问题:Leetcode 543. 二叉树的直径(边权型) 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之…

说一说Zookeeper的应用场景及其原理

一 ZooKeeper简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名…

vue3/Element-Plus/路由的使用

我们来实现一个简单的二级路由 1.准备主页和要配置的组件 主页面 <template><!-- 加载配置路由 --><RouterView></RouterView> </template><style scoped></style>组件1 <template><div>考试组件</div> </t…

关于区块链的安全和隐私

背景 区块链技术在近年来发展迅速&#xff0c;被认为是安全计算的突破&#xff0c;但其安全和隐私问题在不同应用中的部署仍处于争论焦点。 目的 对区块链的安全和隐私进行全面综述&#xff0c;帮助读者深入了解区块链的相关概念、属性、技术和系统。 结构 首先介绍区块链…

吉林省自闭症寄宿学校:提供个性化培养方案

在吉林省的怀抱中&#xff0c;隐藏着一片温馨而特殊的天地——星贝育园自闭症儿童寄宿制学校。这里&#xff0c;不是简单的教育场所&#xff0c;而是无数自闭症儿童梦想启航的港湾&#xff0c;是他们感受爱、学习成长、绽放自我光芒的温馨家园。 自闭症&#xff0c;一个逐渐被…

【Python常用模块】_cx_Oracle模块详解

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…

idea插件开发的第四天-完善JSON工具

介绍 Demo说明 本文基于maven项目开发,idea版本为2022.3以上,jdk为1.8本文在Tools插件之上进行开发本次demo将使用idea的一些组件优化 Tools插件说明 Tools插件是一个Idea插件,此插件提供统一Spi规范,极大的降低了idea插件的开发难度,并提供开发者模块,可以极大的为开发者开…

Q必达任务脚本

文章目录 1.购买服务器地址2.部署教程3. 代码如下4. 如何联系我 1.购买服务器地址 服务器购买地址 https://t.aliyun.com/U/rUHk58 若失效&#xff0c;可用地址 https://www.aliyun.com/activity/wuying/dj?source5176.29345612&userCode49hts92d 2.部署教程 2024年最…