开源的JT1078转GB28181服务器

JT1078转GB28181流程

项目地址:

JT1078转GB28181的流媒体服务器: https://github.com/lkmio/lkm

JT1078转GB28181的信令服务器: https://github.com/lkmio/gb-cms

1. 创建GB28181 UA

调用接口: http://localhost:9000/api/v1/jt/device/add 请求体如下:

{"username": "34020000001400000001","server_id": "34020000002000000001","server_addr": "192.168.31.112:15060","transport": "udp","password": "12345678","register_expires": 3600,"keepalive_interval": 60,"name": "模拟1078设备4","sim_number":"13800138000","manufacturer":"github/lkmio","model":"gb-cms","firmware":"dev"
}

username: 自定义国标设备ID, 唯一键

sim_number: 对应的部标设备sim卡号, 唯一键

2. 添加视频通道

调用接口: http://localhost:9000/api/v1/jt/channel/add 请求体如下:

{"root_id": "34020000001400000001","device_id": "34020000001310000001","name": "视频通道","manufacturer": "github/lkmio","model": "gb-cms","owner": "github/lkmio","channel_number": 1
}

root_id: 创建GB28181 UA接口的username

device_id: 自定义国标视频通道ID

channel_number: 国标视频通道ID对应的1078视频通道号

3. 实现invite钩子

{"sip_port": 5060,"http_port": 9000,"listen_ip": "0.0.0.0","public_ip": "192.168.31.112","sip_id":"34020000002000000001","password":"123456","alive_expires": 180,"mobile_position_interval": 10,"media_server": "0.0.0.0:8080","?auto_close_on_idle": "拉流空闲时, 立即关闭流","auto_close_on_idle": true,"hooks": {"?online": "设备上线通知","online": "","?offline": "设备下线通知","offline": "","?position" : "设备位置通知","position": "","?on_invite": "被邀请, 用于通知1078信令服务器, 向设备下发推流指令","on_invite": "http://localhost:8081/api/v1/jt1078/on_invite","?on_answer": "被查询录像,用于通知1078信令服务器","on_query_record": ""}
}

用户自行实现on_invite钩子, 当上级国标服务器预览部标设备时, 会通过on_invite钩子, 通知部标信令服务器。此时部标信令服务器, 向设备下发请求视频信令,推流到lkm收流端口, lkm再转发到国标流媒体服务器。钩子示例如下:

	t.Run("hook_on_invite", func(t *testing.T) {// 创建http serverrouter := mux.NewRouter()// 示例路由router.HandleFunc("/api/v1/jt1078/on_invite", func(w http.ResponseWriter, r *http.Request) {v := struct {SimNumber     string `json:"sim_number,omitempty"`ChannelNumber string `json:"channel_number,omitempty"`}{}// 读取请求体bytes := make([]byte, 1024)n, err := r.Body.Read(bytes)if n < 1 {panic(err)}err = json.Unmarshal(bytes[:n], &v)if err != nil {panic(err)}fmt.Printf("on_invite sim_number: %s, channel_number: %s\r\n", v.SimNumber, v.ChannelNumber)w.WriteHeader(http.StatusOK)go publish()})server := &http.Server{Addr:         "localhost:8081",Handler:      router,WriteTimeout: 15 * time.Second,ReadTimeout:  15 * time.Second,}err := server.ListenAndServe()if err != nil {panic(err)}})

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

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

相关文章

元器件基础学习笔记——双极结型晶体管 (BJT)

一、概述 1.1 基本结构 双极结型晶体管&#xff08;Bipolar Junction Transistor&#xff09;由发射极&#xff08;Emitter&#xff09;、基极&#xff08;Base&#xff09;和集电极&#xff08;Collector&#xff09;三个掺杂程度不同的半导体区域组成&#xff0c;分别对应有…

Python 在金融中的应用- Part 1

早在2018年,我开始对资本市场产生兴趣。理解资本市场的基本理论对财富积累至关重要。我开始阅读所有经典著作,如《聪明的投资者》和《证券分析》。在这一系列文章中,我想与读者分享在Python编程语言背景下理解金融理论的旅程。在文章的第一大部分,我们将专注于金融模型的线…

css使用scoped之后样式失效问题

项目中的vue代码原本用的style标签来写css&#xff0c;现在想改成<style langscss scoped>&#xff0c;但是改完之后发现样式不对&#xff1a; 原来是&#xff1a; 将style改成scoped之后变成了&#xff1a;检查发现是之前定义的一些变量无法被识别&#xff0c;导致这些样…

基于 GitLab CI + Inno Setup 实现 Windows 程序自动化打包发布方案

在 Windows 桌面应用开发中&#xff0c;实现自动化构建与打包发布是一项非常实用的工程实践。本文以我在开发PackTes项目时的为例&#xff0c;介绍如何通过 GitLab CI 配合 Inno Setup、批处理脚本、Qt 构建工具&#xff0c;实现版本化打包并发布到共享目录的完整流程。 项目地…

能源领域新兴技术论坛:EMQ 实时数据引擎构建工业智能中枢

5 月 26 日&#xff0c;由沙特阿美亚洲公司主办的能源领域新兴技术论坛在上海顺利举行。本次论坛聚焦智能工厂、无人机与机器人、可靠性与完整性、先进材料四大技术赛道&#xff0c;吸引了来自全球的能源企业、技术供应商及行业专家。 作为业内知名的 MQ AI 实时数据与智能产…

【计算机网络】第2章:应用层—DNS

目录 一、PPT 二、总结 DNS&#xff08;域名系统&#xff09;详解 &#xff08;一&#xff09;DNS核心概念 &#xff08;二&#xff09;DNS查询过程&#xff08;重点❗&#xff09; &#xff08;三&#xff09;DNS资源记录&#xff08;RR&#xff09;类型…

PHP HTTP 完全指南

PHP HTTP 完全指南 引言 PHP 作为一种流行的服务器端脚本语言,广泛应用于各种Web开发项目中。HTTP(超文本传输协议)是互联网上应用最为广泛的网络协议之一,用于在Web服务器和客户端之间传输数据。本文将详细介绍 PHP 在 HTTP 通信中的应用,帮助开发者更好地理解和利用 P…

C++测开,自动化测试,业务(第一段实习)

目录 &#x1f33c;前言 一&#xff0c;实习经历怎么写简历 &#x1f339;业务理解 &#x1f382;结构化表达 二&#xff0c;实习 &#x1f982;技术和流程卡点 &#x1f511;实习收获 / 代码风格 三&#xff0c;测试理论&#xff0c;用例设计&#xff0c;工具链 &…

NodeJS全栈开发面试题讲解——P5前端能力(React/Vue + API调用)

✅ 5.1 如何使用 React/Vue 发起后端请求&#xff1f;用什么库&#xff1f; 面试官您好&#xff0c;在实际项目中我们通常使用 axios、fetch 或框架提供的封装库发起后端请求。 &#x1f527; 常用库对比&#xff1a; 库框架适配优点axios通用默认支持拦截器、取消请求、请求体…

【C/C++】cmake实现Release版本禁用调试接口技巧

在 C 中通过 CMake 实现部分接口在 Release 版本不生效&#xff0c;可以通过条件编译结合 CMake 的构建类型判断来实现。以下是详细步骤&#xff1a; 1. 在 CMakeLists.txt 中定义配置相关宏 # 设置构建类型&#xff08;可选&#xff0c;但推荐显式设置&#xff09; if(NOT C…

Spring Boot中的WebSocket技术实现

WebSocket协议基础 WebSocket作为现代实时通信的核心技术,通过全双工TCP通道实现了接近实时的数据传输能力。该协议主要包含以下核心特性: 协议特点与通信机制 全双工通信:与HTTP等传统协议不同,WebSocket允许客户端和服务端同时发送和接收数据,消除了请求-响应模式的限…

无法发布到PowerBI?试试拆分它

无法发布到PowerBI&#xff1f;试试拆分它 在进行PowerBI发布时&#xff0c;可能会遇到如下两种无法发布到PowerBI的情况&#xff1a; 第一种&#xff0c;文件太大&#xff0c;无法发布&#xff0c;如图&#xff1a; 第二种&#xff1a;远程主机强迫关闭了一个现有的连接&…

光伏功率预测 | LSTM多变量单步光伏功率预测(Matlab完整源码和数据)

光伏功率预测 | MATLAB实现基于LSTM长短期记忆神经网络的光伏功率预测 目录 光伏功率预测 | MATLAB实现基于LSTM长短期记忆神经网络的光伏功率预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 光伏功率预测 | LSTM多变量单步光伏功率预测&#xff08;Matlab完整源码和…

【图像处理入门】2. Python中OpenCV与Matplotlib的图像操作指南

一、环境准备 import cv2 import numpy as np import matplotlib.pyplot as plt# 配置中文字体显示&#xff08;可选&#xff09; plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False二、图像的基本操作 1. 图像读取、显示与保存 使用OpenCV…

数据库系统概论(十一)SQL 集合查询 超详细讲解(附带例题表格对比带你一步步掌握)

数据库系统概论&#xff08;十一&#xff09;SQL 集合查询 超详细讲解&#xff08;附带例题表格对比带你一步步掌握&#xff09; 前言一、什么是集合查询&#xff1f;二、集合操作的三种类型1. 并操作2. 交操作3. 差操作 三、使用集合查询的前提条件四、常见问题与注意事项五、…

如何设计一个支持线上线下的通用订单模块 —— 面向本地生活服务行业的架构思路

一、背景与目标 在本地生活服务行业中&#xff0c;订单模块作为连接用户、商户、商品、支付、履约的核心组件&#xff0c;支撑着平台内多样化的业务形态&#xff0c;例如外卖配送、到店服务、团购核销、即时零售、预约预订、线下消费等。 设计一个可支持线上线下融合的通用订…

Django数据库连接报错 django.db.utils.NotSupportedError: MySQL 8 or later is required

可尝试换django版本 pip install django3.2.13 另外mysql下载地址 https://dev.mysql.com/downloads/installer/ 安装可以参考&#xff1a; https://blog.csdn.net/HHHQHHHQ/article/details/148125549 重点&#xff1a;用户变量添加 C:\Program Files\MySQL\MySQL Server …

github 提交失败,连接不上

1. 第一种情况&#xff0c;开了加速器&#xff0c;导致代理错误 删除hosts文件里相关的github代理地址 2. 有些ip不支持22端口连接,改为443连接 ssh -vT gitgithub.com // 命令执行结果 OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2 debug1: C…

24位高精度数据采集卡NET8860音频振动信号采集监测满足自动化测试应用现场的多样化需求

NET8860 高分辨率数据采集卡技术解析 阿尔泰科技的NET8860是一款高性能数据采集卡&#xff0c;具备8路同步模拟输入通道和24bit分辨率&#xff0c;适用于高精度信号采集场景。其输入量程覆盖10V、5V、2V、1V&#xff0c;采样速率高达256KS/s&#xff0c;能够满足多种工业与科研…

JavaScript 模块系统:CJS/AMD/UMD/ESM

文章目录 前言一、CommonJS (CJS) - Node.js 的同步模块系统1.1 设计背景1.2 浏览器兼容性问题1.3 Webpack 如何转换 CJS1.4 适用场景 二、AMD (Asynchronous Module Definition) - 浏览器异步加载方案2.1 设计背景2.2 为什么现代浏览器不原生支持 AMD2.3 Webpack/Rollup 如何处…