Gitee

Qt音视频开发28-Onvif信息获取

那年仲夏 提交于 2020-10-09 00:14:58
一、前言 严格意义上来说,Onvif处理这块算不上音视频开发的内容,为何重新整理放在音视频开发这个类别,主要是为了方便统一管理,而且在视频监控处理这块,通过onvif来拿到音视频流这是必经的阶段,也算是搭边的东西。上一篇文章写的是onvif设备搜索,搜到这些设备以后,第一件事情就是要对设备信息获取一下,比如获取视频流地址,配置套件信息、码流信息、分辨率大小等,这些信息的获取根据具体的需要去获取,也没有必要全部获取,毕竟很可能大部分的信息用不到,按需编码永远都是第一原则,第二原则才是考虑拓展性和稳定性,如果基本的需求都实现不了,那就不是一个真正的软件,考虑再多的拓展性和稳定性都是白搭,说的严重一点就是:所有编程语言都是垃圾,能解决实际需求并变现才是王道! onvif设备信息的获取需要注意的是,现在市场上绝大部分的摄像机都有密码验证的限定,先不管他默认是admin还是12345,起码有用户验证的机制摆在那,这样相对来说安全很多,不然谁也可以通过onvif协议拿到对应的信息,就没有安全性可言,记得几年前海康爆出了漏洞,导致很多监控摄像头被泄露,为此海康现在的摄像头默认onvif是关闭的,开启以后密码要求各种组合,哎,想要更安全就必须牺牲便捷性,这个也不知道谁能想出一个完美兼顾的方法。 onvif主要的功能: 搜索设备,获取设备的信息比如厂家、型号等。

编程体系结构(06):Java面向对象

喜夏-厌秋 提交于 2020-10-09 00:09:38
本文源码: GitHub·点这里 || GitEE·点这里 一、基础概念 1、面向对象概念 面向对象编程的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。 2、类和对象 对象:真实存在唯一的事物;在应用程序中对象是数据和动作的结合体,不仅能够进行操作,同时还能够记录下操作结果。 类:抽象的概念,实际就是对某种类型事物的共性属性与行为的抽取;例如User[名称.年龄.性别]类用来描述用户的基础信息。 Java开发中如何理解面向对象:构建合适的对象接口API体系,创建合适的对象,解决合适的问题,例如JDK的API已经定义好的类,通过这些类创建对象直接使用;通过自定义类来创建对象使用,在MVC中模式中,不同业务功能创建不同的接口和类系统。 3、属性和方法 类中变量 位置区别: 成员变量是定义在方法之外,类内; 局部变量是定义在方法之内。 作用区别: 成员变量的作用是用于描述一类事物的公共属性的。 局部变量的作用就是提供一个变量给方法内部使用而已。 初始值区别: 成员变量是有默认的初始值。 局部变量是没有默认的初始值的,必须要先初始化才能使用。 生命周期: 随着对象的创建而存在,随着对象的消失而消失。 局部变量在调用了对应的方法时执行到了创建该变量的语句时存在

[原创][开源]SunnyUI.Net, C# .Net WinForm开源控件库、工具类库、扩展类库、多页面开发框架

纵饮孤独 提交于 2020-10-08 04:24:03
SunnyUI.Net, 基于 C# .Net WinForm 开源控件库、工具类库、扩展类库、多页面开发框架 Blog: https://www.cnblogs.com/yhuse Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://github.com/yhuse/SunnyUI 帮助文档目录: https://www.cnblogs.com/yhuse/p/SunnyUI_Menu.html 欢迎交流,QQ群:56829229 (SunnyUI技术交流群) 先来个思维导图: 1、开源控件库 基于 framework4.0,原生控件开发,参考 Element、DotNetBar 主题风格,包含 Button、Panel、TextBox、CheckBox、RadioButton、TabControl、NavBar、DataGridView 在内的常用控件超过 40 个,满足常规开发需求,每个控件都精雕细琢,注重细节;包含 Element 风格主题 11 个,DotNetBar 主题 3 个,其他主题 2 个,包含主题管理组件 UIStyleManager,可自由切换主题。 图太多了,还是具体看 SunnyUI.Demo 吧!~ 2、工具库 收集整理开发过程中经常用到的工具类库。 3、扩展库

思维导图视频代码揭秘shiro配置

泄露秘密 提交于 2020-10-07 04:51:24
思维导图、视频、代码携手揭秘shiro,干货多多,趣味多多! 目录 思维导图 视频 代码 思维导图 视频 链接:https://pan.baidu.com/s/1-JDKLbqyuyy3RegelfMGxQ 提取码:c3fs 代码 https://gitee.com/cakin24/shirodemo/tree/master/shiro-example-chapter4 来源: oschina 链接: https://my.oschina.net/u/4348352/blog/4285897

Kafka学习笔记

我怕爱的太早我们不能终老 提交于 2020-10-07 04:38:44
教学视频 本文用到的源码 Kafka学习资料 链接: https://pan.baidu.com/s/1oHYCvHZ4Uanll1Bj3v-3Hw 提取码:5afq - - - 01.Kafka入门_课程介绍 02.Kafka入门_定义 03.Kafka入门_消息队列 04.Kafka入门_消费模式 05.Kafka入门_基础架构 06.Kafka入门_安装&启动&关闭 07.Kafka入门_命令行操作Topic增删查 08.Kafka入门_命令行控制台生产者消费者测试 09.Kafka入门_数据日志分离 10.Kafka入门_回顾 11.Kafka高级_工作流程 12.Kafka高级_文件存储 13.Kafka高级_生产者分区策略 14.Kafka高级_生产者ISR 15.Kafka高级_生产者ACk机制 16.Kafka高级_数据一致性问题 17.Kafka高级_ExactlyOnce 18.Kafka高级_生产者总结 19.Kafka高级_消费者分区分配策略 20.Kafka高级_消费者offset的存储 21.Kafka高级_消费者组案例 22.Kafka高级_高效读写&ZK作用 23.Kafka高级_Ranger分区再分析 24.Kafka高级_事务 25.Kafka高级_API生产者流程 26.Kafka高级_异步发送API普通生产者 27.Kafka高级_回顾 28

Qt音视频开发27-Onvif设备搜索

妖精的绣舞 提交于 2020-10-06 12:07:19
一、前言 最近业余时间主要研究音视频开发这块,前面的文章写了好多种视频监控内核,一旦将这些内核搞定以后,视频监控的相关功能水到渠成。做视频监控系统,绕不过onvif这玩意,这玩意主要就是为了统一一个大概的标准,能够对各个厂家的监控设备进行常用的一些操作,比如搜索、获取信息、云台控制、事件订阅、抓拍图片等,如果没有这个规范,那么各个厂家都各自为政,需要用私有的sdk去处理,这样就很麻烦很惨了,几十个厂家就需要几十个sdk,对于程序员来说简直是灾难,想想就很恐怖的事情,哪个程序员不想多活几年! onvif设备搜索是最基本的功能,想要对设备进行进一步的处理,必须先搜索到设备,默认onvif搜索只能搜索到同一个网段的设备,要跨网段的话,需要手动指定设备的IP地址或者onvif地址进行搜索,这两者在封装的onvif类中都考虑到了,经历过各种复杂的现场情况的考验,也可以算是本系统的一个小特色吧。 近期又重新把独创的方法实现的onvif工具重新重构了下,各个类之间非常清晰明了,增强了兼容性和完整性,在之前的基础上还增加了很多基础的处理比如视频参数和图片参数的获取,设置时间等,同时还增加了可以指定过滤条件对搜索的设备进行过滤,这个非常有用,很多时候现场各种类型的各个厂家的摄像机非常多,一般来说一个类型的摄像机对应的onvif地址基本一致,端口也是一致,这样可以指定格式进行过滤,只显示过滤后的设备

太赞了!墙裂推荐这款网页版 Nginx 配置生成器,好用到爆!

风流意气都作罢 提交于 2020-10-06 09:28:22
之前民工哥也给大家介绍过一款Nginx配置生成器:强大!Nginx 配置在线一键生成“神器”,不太了解的人可以去看一看。 最近民工哥又发现一款好用的网页版开源工具,同样它的功能也是Nginx配置生成器,功能非常强大,方便实用,它是:NginxWebUI。 NginxWebUI介绍 NginxWebUI是一款方便实用的nginx 网页配置工具,可以使用 WebUI 配置 Nginx 的各项功能,包括端口转发,反向代理,ssl 证书配置,负载均衡等,最终生成「nginx.conf」配置文件并覆盖目标配置文件,完成 nginx 的功能配置。 项目地址: https://gitee.com/cym1102/nginxWebUI 官方网站: https://nginxwebui.gitee.io NginxWebUI功能说明 该项目是基于springBoot的web系统,数据库使用sqlite,因此服务器上不需要安装任何数据库。 本项目可管理多个nginx服务器集群, 随时一键切换到对应服务器上进行nginx配置, 也可以一键将某台服务器配置同步到其他服务器, 方便集群管理。 nginx本身功能复杂, 本项目并不能涵盖nginx所有功能, 只能配置常用功能, 更高级的功能配置仍然需要在最终生成的nginx.conf中进行手动编写。 部署此项目后, 配置nginx再也不用上网各种搜索,

Qt开源作品29-NTP服务器时间同步

耗尽温柔 提交于 2020-10-06 09:04:30
一、前言 很多软件都有时间同步的功能,尤其是Qt在嵌入式设备上的,有时候还有很多是没有UI界面的程序,而硬件上有个时钟,时间久了难免没有电,需要从服务器来同步时间来保证本地的时间是正确的,不然本地记录的一些日志的时间都是不正确的,很多还可能是1970年的。 NTP同步时间是个标准的协议,使用的端口是123端口,这个端口很牛逼,居然霸占了123这个端口,碉堡!使用NTP服务同步时间,需要设置个时间服务器IP地址,这个地址可以网上找到很多的,微软自带的那个有时候行有时候不行,因为默认用的UDP协议,所以是不可靠的,有丢包的可能,建议选择一些国内的时间服务器,比如一些大学的时间服务器,还是比较准确可靠的。 二、代码思路 NtpClient::NtpClient(QObject *parent) : QObject(parent) { ntpIP = "202.120.2.101"; udpSocket = new QUdpSocket(this); connect(udpSocket, SIGNAL(connected()), this, SLOT(sendData())); connect(udpSocket, SIGNAL(readyRead()), this, SLOT(readData())); } void NtpClient::sendData() { qint8 LI =

数据源管理 | 搜索引擎框架,ElasticSearch集群模式

倖福魔咒の 提交于 2020-10-06 06:49:45
本文源码: GitHub·点这里 || GitEE·点这里 一、集群环境搭建 1、环境概览 ES版本6.3.2,集群名称esmaster,虚拟机centos7。 服务群 角色划分 说明 en-master master 主节点:esnode1 en-node01 slave 从节点:esnode2 en-node02 slave 从节点:esnode3 ElasticSearch基础功能和用法: MySQL数据全量和增量方式向ES搜索引擎同步 Linux系统Centos7环境搭建ElasticSearch中间件 SpringBoot2整合ElasticSearch搜索引擎框架 在真正海量数据的业务场景中,ElasticSearch搜索引擎都是需要集群化管理的,实时搜素几十亿的数据十分常见。 2、集群配置 配置文件 vim /opt/elasticsearch-6.3.2/config/elasticsearch.yml 主节点配置 # 集群主节点配置 cluster.name: esmaster node.master: true # 节点名称 node.name: esnode1 # 开发访问 network.host: 0.0.0.0 从节点配置 注意这里两个从节点配置,node.name分别配置为esnode2和esnode3即可。 # 集群名称 cluster.name:

spring boot系列(四)实现mybatis分页查询

梦想的初衷 提交于 2020-10-06 02:26:39
前言 如果用mybatis写分页查询,比较麻烦,需要先写获取count的select语句,然后写分页查询语句。这里使用一个强大的插件 ==pagehelper== ,可以帮助开发者快速实现分页。 优点: 和sqlmapper.xml文件解耦,以插件形式实现,避免直接写分页查询sql 方便、快速 引入pagehelper依赖 pom.xml中引入相关依赖 <!-- 添加分页插件 pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.13</version> </dependency> application.yml中配置 # 分页插件 pagehelper: helperDialect: mysql reasonable: false params: count=countSql supportMethodsArguments: true 说明: ==helperDialect==:指定数据库,不指定会自动检测数据库类型 ==reasonable==:合理化参数,默认false, true:页码小于1,查询第一页数据,页码大于总数时,返回最后一页数据; false