单挑市面上所有监控设备模拟器/可能是最好用的监控模拟器/支持onvif和28181协议/虚拟监控/桌面转监控/任意源转监控设备

一、前言说明

自从发布了这个监控设备模拟器,本意其实是卖代码,可是受欢迎程度不是程序员开发者,而是一堆非开发人员,没想到这个一个毫不起眼的需求,在外行人看来是真切实际的需求,比如一些收银台,需要把收银软件所在的整个电脑桌面实时采集,存储到NVR上,以便溯源,你要想想整个零售行业有收银的地方,有多少,不计其数。还有就是一些学校教育课堂,也需要将教师的电脑桌面采集,推流到平台进行叠加视频处理,目前很多都是现场有个摄像头在拍,但是往往不是很清晰,和收银台是一样的,必须直接采集电脑桌面,才是最清晰的,而且现在电脑分辨率很高,帧率甚至有60fps,画面流畅度可以做到非常好。还有一类使用者就是安防从业者,他需要模拟多个设备用来测试平台的并发,或者将现有的rtsp流等情况,转成28181流,接入到平台上。最后一类也是用户数做少的,那就是程序员,希望用来测试自己的程序的压力极限,或者说希望有代码可以模拟设备。

难道市面上就没有能够胜任这个需求的?其实有一些的,只不过都是零零散散很不全面,绝大部分都是搞个264或者MP4文件,只能指定这个文件进行模拟,而且基本上同一个软件只能支持模拟一路,就算有个支持多个的,也都是写死的国标编码等。有些只能采集一个桌面推流,有些是直接HDMI转ONVIF转换器,其实里面也是一路软件在跑,总之林林种种非常的不全面和不友好,当然如果你只是想采集个桌面,那还是可以的。于是我做的这个,当然是需要解决以上所有问题的,不仅可以采集桌面,还可以采集本地摄像头,各种音视频文件,各种网络流,各种网络摄像头,批量添加摄像头转28181,每一路都可以看到实时状态,每一路都可以指定采集策略以及编码等各种可能的参数,总之一句话,你能够想到的场景几乎都有,比如有多个桌面,可以分别指定不同的电脑屏幕和区域,还可以指定应用程序窗体采集,本地摄像头还可以指定不同的分辨率帧率格式等,毫不夸张的说,吊打其他。

二、效果图

video_simulate_gb2

video_simulate_gb3

video_simulate_onvif1

video_simulate_onvif4

video_simulate_onvif7

三、相关地址

  1. 国内站点:https://gitee.com/feiyangqingyun
  2. 国际站点:https://github.com/feiyangqingyun
  3. 个人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652
  4. 文件地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_video_simulate。

四、功能特点

  1. 标准onvif协议,支持设备搜索、获取参数、快照抓图等。
  2. 支持264/265/aac等标准视音频协议传输。
  3. 支持多路批量onvif设备模拟,每一路都独立的端口。
  4. 支持本地摄像头采集转成onvif,可选择不同的设备、分辨率、帧率等参数。
  5. 支持本地桌面采集转成onvif,可选择不同的屏幕、分辨率、帧率等参数。
  6. 支持各种视频文件和视频流转成onvif,可重新设置编码转换以及分辨率转换。
  7. 支持4K、8K等高清分辨率,不限制分辨率,非264/265会自动转码推流。
  8. 每一路都可以设置统一或者独立的用户验证信息,为空则表示不验证。
  9. 可以把任意内容接入到NVR以及视频监控系统,方便保存录像文件,以便回放可查。
  10. 也可作为压力测试工具,比如模拟几千路onvif设备,让集成平台软件做接入压力测试。
  11. 推出去的流不仅有rtsp格式,还支持rtmp、http、flv、ws-flv、webrtc等方式访问,可以直接网页查看。
  12. 在管理工具上可以看到每一路的推流状况以及分辨率信息,非常直观。
  13. 支持自动重连拉流,重连推流,保证7乘以24小时稳定运行。
  14. 可设置开机自启动运行和后台运行,不显示在任务栏,作为后台服务运行。
  15. 可批量添加文件、添加目录,自动将目录下的所有文件添加到模拟器。
  16. 多功能添加地址面板,可以选择本地设备和监控设备,本地设备会自动识别摄像头设备和桌面设备,监控设备可以选择不同厂家,自动填充对应rtsp格式,填入用户信息即可,可以批量递增添加监控设备。
  17. 可无缝上传到市面上所有的onvif协议设备,包括海康、大华、宇视、华为、天地伟业等,也支持ONVIF Device Manager国际onvif工具。
  18. 支持gb28181设备模拟,具备设备注册、设备注销、设备心跳、设备信息、设备配置、设备状态应答等。
  19. 支持模拟报警和位置上报等,方便平台侧显示对应设备的实时位置。
  20. 支持一键添加批量模拟28181设备,实时显示已注册和已注销状态。
  21. 支持将本地桌面、本地摄像头、任意视频文件、视频流文件、手机摄像头等转换成28181设备,添加到NVR或者国标软件平台。
  22. sip协议同时支持udp和tcp两种通信方式,视频点播同时支持udp/tcp主动/tcp被动三种方式,涵盖所有可能的场景需求。
  23. 无论是onvif设备模拟组件还是28181设备模拟组件,全部原创底层协议解析,纯Qt实现,跨任意平台。
  24. 代码结构框架非常清晰,注释详细,代码精简不繁琐,非常易于学习和移植,可以很容易拓展其他接口需求。
  25. 支持Qt4/Qt5/Qt6以及后续所有版本、所有编译器、所有开发环境。
  26. 支持windows、linux、mac、国产OS、嵌入式linux、RK3588、树莓派、香橙派等系统。

五、相关代码

5.1 设备模拟onvif

  1. 拷贝依赖组件 core_video/core_videobase/core_videoffmpeg/core_videohelper/core_onvifdevice到你的项目目录下,其中onvifdevice组件是onvif设备模拟的核心,由onvif搜索、onvif监听交互、rtsp推流三部分共同组成,推流模块依赖core_video/core_videobase/core_videocontrol/core_videoffmpeg/core_videohelper四个模块。
  2. pro文件中引入组件
include ($$PWD/../core_video/core_video.pri)
include ($$PWD/../core_videobase/core_videobase.pri)
include($$PWD/../core_videocontrol/core_videocontrol.pri)
include ($$PWD/../core_videohelper/core_videohelper.pri)
include ($$PWD/../core_videoffmpeg/core_videoffmpeg.pri)
include ($$PWD/../core_onvifdevice/core_onvifdevice.pri)
  1. pro文件开启对应标记,DEFINES += ffmpeg ffmpeg4 videoffmpeg ,其中ffmpeg4表示所用的ffmpeg版本,按照实际情况更改。
  2. 引入头文件 #include "onvifdeviceserver.h"。
  3. 编写代码实现onvif设备服务。
//实例化onvif管理类
OnvifDeviceServer *server = new OnvifDeviceServer(this);
//设置对应的参数
server->setPara("192.168.0.110", "192.168.0.110", "admin", "123456");//按需关联信号槽/可以不需要
connect(server, SIGNAL(sendData(QByteArray)), this, SLOT(sendData(QByteArray)));
connect(server, SIGNAL(receiveData(QByteArray)), this, SLOT(receiveData(QByteArray)));
connect(server, SIGNAL(receiveInfo(QString)), this, SLOT(receiveInfo(QString)));
connect(server, SIGNAL(receiveError(QString)), this, SLOT(receiveError(QString)));
connect(server, SIGNAL(pushStart(QString, int, int, bool)), this, SLOT(pushStart(QString, int, int, bool)));
connect(server, SIGNAL(pushChanged(QString, int)), this, SLOT(pushChanged(QString, int)));//启动服务
server->start();//添加一路模拟服务/文件方式
server->append("video1", 6920, "f:/1.mp4", "rtsp://192.168.0.110:8554/stream/video1");
//添加一路模拟服务/本地摄像头
server->append("video2", 6921, "video=USB Video Device|1280x720|30", "rtsp://192.168.0.110:8554/stream/video2");
//添加一路模拟服务/本地桌面
server->append("video3", 6922, "screen=desktop", "rtsp://192.168.0.110:8554/stream/video3");
//添加一路模拟服务/监控设备
server->append("video4", 6923, "rtsp://admin:Admin123456@192.168.0.64/Streaming/xxx", "rtsp://192.168.0.110:8554/stream/video4");//添加一路模拟服务/内存流
server->append("video5", 6924, "stream://", "rtsp://192.168.0.110:8554/stream/video5");
//内存流方式对一个步骤/需要拿到数据后不断的添加进去
QByteArray data = "xxxx";
server->appendData("video5", data);//停止服务
server->stop();
  1. 特别说明
  • 使用append方法添加模拟,可以在启动后添加也可以在启动前添加,如果是启动前添加的,则启动服务后会自动启动服务,如果是启动前添加的,则在调用onvifServer->start()的时候里面会自动判断进行启动服务。
  • 关联信号槽并不是必须的,按照自己的实际需求来,比如需要知道推流成功和变化信号,那就需要关联对应的信号到槽进行处理。
  • 在不需要服务的时候一定要关闭服务,一般是在软件退出的时候,否则会内存泄漏。
  • onvif管理类目前需要设置四个参数,外网地址、内网监听地址、用户名称、用户密码,其中用户信息用来做onvif鉴权服务,每一路都可以不同的用户信息,这里图方便直接统一一个用户就行。为何还有个外网地址,这种情况一般是在云服务器上才需要的,上面的内网监听地址和对外服务的外网地址都不同,在本地电脑一般两个地址都是一样的。
  • 添加模拟服务支持多种媒体源,其中格式要求可以参见编译说明的地址格式说明。支持将本地视频文件、视频流、网络地址、本地摄像头、本地桌面等,每一种对应的格式要求都不一样。
  • 添加模拟服务append函数有四个参数,参数1表示唯一标识;参数2表示监听端口,每一路都是不同的监听端口;参数3表示采集媒体源地址,如果是内存流则填 stream:// 固定字串;参数4表示推流地址,默认采用mediamtx流媒体服务,8554端口,也可以换成其他流媒体服务比如zlm,只要地址和端口正确就行,要求推流地址的后缀就是唯一标识。

5.2 设备模拟gb28181

  1. 拷贝依赖组件core_gb28181rtp/core_gb28181device到你的项目目录下,其中gb28181device组件是gb28181设备模拟的核心,负责通过sip协议主动和sip服务器连接并交互。gb28181rtp组件用来传输打包rtp数据并上报给sip服务器。
  2. pro文件中引入组件
include ($$PWD/../core_gb28181rtp/core_gb28181rtp.pri)
include ($$PWD/../core_gb28181device/core_gb28181device.pri)
  1. 引入头文件 #include "gb28181deviceserver.h"。
  2. 编写代码实现gb28181设备服务。
//实例化管理类
GB28181DeviceServer *server = new GB28181DeviceServer(this);
//设置对应的参数
server->setPara("34020000002000000001", "3402000000", "192.168.0.110", 15060, "12345678", 3600, 60, 3);//按需关联信号槽/可以不需要
connect(server, SIGNAL(sendData(QString, QString)), this, SLOT(sendData(QString, QString)));
connect(server, SIGNAL(receiveData(QString, QString)), this, SLOT(receiveData(QString, QString)));
connect(server, SIGNAL(receiveInfo(QString, QString)), this, SLOT(receiveInfo(QString, QString)));
connect(server, SIGNAL(receiveError(QString, QString)), this, SLOT(receiveError(QString, QString)));
connect(server, SIGNAL(statusChanged(QString, bool)), this, SLOT(statusChanged(QString, bool)));//启动服务
server->start();//添加设备
server->append("UDP", "192.168.0.100", 5060, "34020000001320000001", "34020000001310000001", "f:/mp4/1.mp4")//停止服务
server->stop();

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

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

相关文章

在Java 11中,如何处理被弃用的类或接口?

在Java 11中处理被弃用的类或接口时,核心原则是使用官方推荐的替代方案,避免依赖过时API以确保代码的兼容性和可维护性。以下是具体处理方式和示例: 1. 替换内部API类(sun.* 或 com.sun.* 包下的类) 这些类属于JD…

chmod只修改文件或者只修改目录权限

chmod和chmod -R目录常用于修改文件,文件夹权限。加上-R参数会迭代的修改子目录和文件的权限。如果只想修改文件的权限,文件夹的权限不受影响。则可以使用下面的方法:chmod 750 `find /a /b -type f`会修改文件夹/a…

每周资讯 | 腾讯《三角洲行动》周年庆登双榜TOP1;腾讯首款生活模拟游戏《粒粒的小人国》曝光 - 教程

每周资讯 | 腾讯《三角洲行动》周年庆登双榜TOP1;腾讯首款生活模拟游戏《粒粒的小人国》曝光 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bloc…

.NET 自动依赖注入神器

在 .NET Core/Web 项目中,手动写一堆 services.AddScoped<...>、AddSingleton<...> 是否让你头大?今天给大家介绍一个神器——Injectio,帮你自动扫描并注册服务,减少重复代码,让你的依赖注入(DI)更…

NetDreamCTF WP - 指南

NetDreamCTF WP - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &quo…

[1134] Connecting to Land Insight SFTP and GIS Servers

[1134] Connecting to Land Insight SFTP and GIS ServersHi Sir Bing,Greetings!Please be informed of your user credentials to servers. Also attached is the Work Instruction and PPK to connect to servers f…

VLA技术论文阅读 - 详解

VLA技术论文阅读 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

深入解析:246-基于Django的美食菜谱数据分析推荐系统

深入解析:246-基于Django的美食菜谱数据分析推荐系统pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

PhotoShop网页版在线为图片加文字,制作个性海报教程

生活中,我们总有需要给图片加文字、或是亲手做一张个性海报的时候。你是不是也觉得用专业Photoshop太复杂?别担心,现在只要打开浏览器,进入在线修图平台,零基础也能快速上手,轻松做出创意十足的作品! 一、为什么…

实用指南:构建神经网络的两大核心工具

实用指南:构建神经网络的两大核心工具pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

简单高效的SQL注入测试方法:Break Repair技巧详解

本文详细介绍了SQL注入测试的简单有效方法,重点讲解Break & Repair技巧,包括数据库类型识别、盲注测试和信息提取等关键步骤,适合网络安全初学者和渗透测试人员学习参考。Break & Repair:我是如何以最简单…

实用指南:Qt 界面优化 --- QSS

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

display ip interface brief 概念及题目 - 指南

display ip interface brief 概念及题目 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 HPE 慧与 定制版

VMware ESXi 9.0.1.0 macOS Unlocker & OEM BIOS 2.7 HPE 慧与 定制版VMware ESXi 9.0.1.0 macOS Unlocker & OEM BIOS 2.7 HPE 慧与 定制版 VMware ESXi 9.0.1.0 macOS Unlocker & OEM BIOS 2.7 标准版和…

ICDesigner2027下载ICDsigner2027 download ICDesigner2027ダウンロード

ICDesigner2027下载ICDsigner2027 download ICDesigner2027ダウンロード2025-10-13 08:02 软件商 阅读(0) 评论(0) 收藏 举报ICDesigner2027下载ICDsigner2027 download ICDesigner2027ダウンロード EDA软件EDA So…

VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 Lenovo 联想 定制版

VMware ESXi 9.0.1.0 macOS Unlocker & OEM BIOS 2.7 Lenovo 联想 定制版VMware ESXi 9.0.1.0 macOS Unlocker & OEM BIOS 2.7 Lenovo 联想 定制版 VMware ESXi 9.0.1.0 macOS Unlocker & OEM BIOS 2.7 标…

当AI开始“通感”:诗词创作中的灵性涌现

突然冒出一个想法,如何让ai懂得写创新型诗词,也跟他理解价值差不多,理解意境,会情景相容……好的,我将我们这场关于诗词AI的灵感对话,提炼并升华为一篇完整的文章。 从逻辑到灵性:构建一个「意境生成场」以实现…

VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 Dell 戴尔 定制版

VMware ESXi 9.0.1.0 macOS Unlocker & OEM BIOS 2.7 Dell 戴尔 定制版VMware ESXi 9.0.1.0 macOS Unlocker & OEM BIOS 2.7 Dell 戴尔 定制版 VMware ESXi 9.0.1.0 macOS Unlocker & OEM BIOS 2.7 标准版…

rqlite java sdk 对于sqlite-vec 支持的bug

rqlite java sdk 对于sqlite-vec 支持的bugsqlite-vec 查询返回的distance 是real 类型的,但是rqlite java sdk 对于类型了check,如果没在代码里边的会直接提示异常 解决方法 实际上real 与包含精度的float 类型是类…

【GitHub每日速递 251013】SurfSense:可定制AI研究神器,连接多源知识,功能超丰富!

免费开源!可复制粘贴的组件助你打造专属组件库 shadcn-ui/ui 是一个 提供精美设计、可访问性良好的UI组件和代码分发平台 的 开源前端工具库。简单讲,它是一套开箱即用的高质量界面组件,支持主流前端框架,方便开发…