onvif/rtsp转gb28181协议,无缝对接国标平台

2024-05-24 01:58

本文主要是介绍onvif/rtsp转gb28181协议,无缝对接国标平台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、onvif搜索
  • 二、sip注册等一系列功能
  • 三、效果展示
  • 总结

前言

现在市面上很多ipc已经支持gb28181,当然,也有极个别的不支持。针对那些已经安装部署的老式摄像机,不支持28181协议又想接入国标平台,怎么办?

这个时候,我们可以采取rtsp或者onvif等非标协议转换为国标协议,从而可以轻松的实现与28181平台的无缝对接。

一、onvif搜索

这里将onvif封装成了跨平台库,便于其他模块调用。目前对外只提供简单的功能,例如onvif初始化、onvif添加设备、获取onvif设备的rtsp地址、云台控制(预置位)以及告警上报回调接口,当然还有其他接口,可以需要的时候,一一对外提供。
具体代码如下:

#ifndef ONVIFCLIENT_API_H
#define ONVIFCLIENT_API_H

#ifdef WIN32
#define WIN32_OS 1
#define VXWORKS_OS 0
#define LINUX_OS 0
#else
#define WIN32_OS 0
#define VXWORKS_OS 0
#define LINUX_OS 1
#endif

#ifdef WIN32
#ifdef ONVIFCLIENT_EXPORTS
#define ONVIFCLIENT_API __declspec(dllexport)
#else
#define ONVIFCLIENT_API __declspec(dllimport)
#endif

#ifdef ONVIFCLIENT_STATIC
#undef ONVIFCLIENT_API
#define ONVIFCLIENT_API
#endif
#else
#define ONVIFCLIENT_API
#endif

typedef void(*event_callback)(void * pdata);

#ifdef __cplusplus
extern “C” {
#endif

ONVIFCLIENT_API bool InitOnvifClient();
ONVIFCLIENT_API void* AddDevice(const char* ip, int nPort, const char* user_name, const char* password);
ONVIFCLIENT_API bool GetStreamUri(char *rtspUri, void *arg);
ONVIFCLIENT_API bool ControlPtz(void *arg, int ptz_cmd, int p1, char *name="");
ONVIFCLIENT_API bool setEventCallback(event_callback callback);

#ifdef __cplusplus
}
#endif

#endif

二、sip注册等一系列功能

这里只列举28181注册部分代码

代码如下:

SIP_MSG * sip_build_register_normal_msg(SIP_USER * p_user, uint32 srv_ip, uint16 srv_port)
{
SIP_MSG * send_msg = get_msg_buf();
if (send_msg == NULL)
{
return NULL;
}

send_msg ->msg_type = 0;
send_msg ->msg_sub_type = SIP_MT_REG;
send_msg ->msg_crpty_mode = p_user->user_crpty_mode;
send_msg ->local_port = p_user->sip_port;sip_add_send_msg_fline(send_msg , "REGISTER", "%s SIP/2.0", p_user->server_sip_addr);sprintf(p_user->auth_via.branch, "z9hG4bK%x", sys_os_get_uptime());if (p_user->usrf_tcp_sip == 1)
{sip_add_send_msg_via(send_msg , "SIP/2.0/TCP %s:%u;branch=%s", p_user->user_ip, p_user->user_port, p_user->auth_via.branch);
}		
else
{sip_add_send_msg_via(send_msg , "SIP/2.0/UDP %s:%u;branch=%s", p_user->user_ip, p_user->user_port, p_user->auth_via.branch);
}
sip_reg_build_from(send_msg ,p_user);
sip_reg_build_to(send_msg ,p_user);
sip_reg_build_contact(send_msg ,p_user);if (p_user->auth_call_id[0] == '\0')
{sprintf(p_user->auth_call_id, "%08X%08X@%s", rand(), rand(), p_user->user_ip);
}sip_add_send_msg_line(send_msg , "Call-ID", "%s", p_user->auth_call_id);p_user->auth_cseq++;
if (p_user->auth_cseq == 0)
{p_user->auth_cseq = 1;
}sip_add_send_msg_line(send_msg , "CSeq", "%d REGISTER", p_user->auth_cseq);
sip_add_send_msg_line(send_msg , "Max-Forwards", "70");
sip_add_send_msg_line(send_msg , "Expires", "%u", p_user->expires_time);
sip_add_send_msg_line(send_msg , "User-Agent", "%s", p_user->user_agent_desc);
sip_add_send_msg_line(send_msg , "Content-Length", "0");send_msg ->remote_ip = srv_ip;
send_msg ->remote_port = srv_port;p_user->last_reg_time = get_uptime();return send_msg ;

}

三、效果展示

1、rtsp网络取流:海康平台的udp,tcp流展示效果,如下图,通过onvif协议,将设备接到28181协议转换网关,再由网关向海康平台注册
rtsp取流,再由28181网关统一去注册
2:本地文件取流:
通过本地的MP4文件取流的方式,再由28181协议转换网关将流推送给海康平台,效果如下图显示
在这里插入图片描述
在这里插入图片描述


总结

上诉就是非标转国标28181网关的简单介绍,后续上传网关demo给各位小伙伴

这篇关于onvif/rtsp转gb28181协议,无缝对接国标平台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997047

相关文章

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下