diff --git a/devicesizetable/devicesizetable.cpp b/devicesizetable/devicesizetable.cpp index b25413b..416b8d2 100644 --- a/devicesizetable/devicesizetable.cpp +++ b/devicesizetable/devicesizetable.cpp @@ -53,8 +53,8 @@ DeviceSizeTable::DeviceSizeTable(QWidget *parent) : QTableWidget(parent) this->setSelectionMode(QAbstractItemView::SingleSelection); this->verticalHeader()->setVisible(true); this->horizontalHeader()->setStretchLastSection(true); - //QMetaObject::invokeMethod(this, "load"); - QTimer::singleShot(10, this, SLOT(load())); + QMetaObject::invokeMethod(this, "load", Qt::QueuedConnection); + //QTimer::singleShot(10, this, SLOT(load())); } QColor DeviceSizeTable::getBgColor() const diff --git a/docs/video_system/index.html b/docs/video_system/index.html index cb97387..91cfdaf 100644 --- a/docs/video_system/index.html +++ b/docs/video_system/index.html @@ -134,7 +134,7 @@ a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; .md-fn-count::after { content: "."; } code, pre, samp, tt { font-family: var(--monospace); } kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; } -.md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); } +.md-comment { color: rgb(162, 127, 3); opacity: 0.6; font-family: var(--monospace); } code { text-align: left; vertical-align: initial; } a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; } .os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; } @@ -674,11 +674,11 @@ header, .context-menu, .megamenu-content, footer{ Qt编写的视频监控系统开发及使用说明
-
  • 0 前言说明

    0.1 系统说明

    1. 本视频监控系统做的是通用的系统,主要偏重整体框架和UI交互等。
    2. 主要功能包括摄像机管理,实时视频显示,视频轮询、视频存储、设备地图显示,各种画面切换,各种悬停子模块、onvif搜索设备和云台控制及预置位,通用的NVR视频流播放(比如海康的NVR支持直接取流回放)等功能。
    3. 如果是依赖SDK去实现的功能(雨刷、去雾等)都没有做,那个破坏了兼容性,无法通用其他摄像机设备以及其他操作系统。
    4. 每个厂家SDK和定制的功能都不一样,如果有这方面的需要都是买过去自己加上SDK的功能和自己定制需要的功能。
    5. 整个项目源代码行数大概30W行,其中代码13.5W行(占比45%),注释12.7W行(占比42%),空行3.5W行。分层设计注释详细。
    6. 本程序会一直持续迭代更新,包括项目源码、整体框架、使用说明等,购买者可永久免费升级,一次购买终生售后。

    0.2 特别说明

    1. 程序本身是个客户端(直接从摄像机取rtsp视频流)并不是服务器程序。
    2. 摄像机管理没有限制摄像机的数量,理论上10000路肯定没有问题,就是个数据库记录。
    3. 实时显示具体能支持多少路,和具体的电脑配置有关(亲测1.8G主频8G内存I5子码流64路,总之比海康大华客户端要更优秀)。
    4. 程序实时显示界面最大可以到64路,每个通道都是打开的时候才会去建立连接取视频流,而不是一开始就建立了连接。
    5. 系统采用onvif协议+rtsp视频流机制,并不限定支持哪家的摄像机,只要符合这两种协议的都支持,市面上99%的网络摄像机都支持这两种基础协议,包括但不限于海康、大华、宇视、天地伟业、华为等各种安防厂家的摄像机。
    6. 本系统适用于安防行业,所有录制视频也是针对摄像机的视频流,包括摄像机自身的rtsp格式视频流,摄像机重新推流的rtmp或者http的视频流,凡是源头不是摄像机的视频流一概不存储或者存储不成功,因为可能编码格式不一样。比如中央卫视、大雄兔等视频流是不存储的,因为源头不是摄像机。任何监控厂家的视频监控系统都是只存储监控摄像机的视频,其他一概不存储甚至添加都没法添加到系统中因为过滤掉了。
    7. 系统采用纯QtWidget(非qml)编写,解码采用ffmpeg,搜索采用onvif协议,视频播放采用rtsp协议,所有源码开放,并非有封装的库。
    8. 同时集成了数据库,多线程,串口通信,网络通信,音视频解码,网页地图、界面美化、UI布局等众多知识点。
    9. 未经本人许可不可将本项目源码扩散,如有发现本人将追究法律责任,谢谢配合。

    0.3 相关站点

    1. 国内站点:https://gitee.com/feiyangqingyun
    2. 国际站点:https://github.com/feiyangqingyun
    3. 个人主页:https://blog.csdn.net/feiyangqingyun
    4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun
    5. 产品主页:https://blog.csdn.net/feiyangqingyun/article/details/97565652
    6. 在线文档:https://feiyangqingyun.gitee.io/qwidgetdemo/video_system.html
    7. 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_video_system.zip。

    0.4 功能特点

    0.4.1 软件模块

    1. 视频监控模块,各种停靠小窗体子模块,包括设备列表、图文警情、窗口信息、云台控制、预置位、巡航设置、设备控制、悬浮地图、网页浏览等。
    2. 视频回放模块,包括本地回放、远程回放、设备播放、图片回放、视频上传等。
    3. 电子地图模块,包括图片地图、在线地图、离线地图、路径规划等。
    4. 日志查询模块,包括本地日志、设备日志等。
    5. 系统设置模块,包括系统设置(基本设置、视频参数、数据库设置、地图配置、串口配置等)、录像机管理、摄像机管理、轮询配置、用户管理等。

    0.4.2 基础功能

    1. 支持各种视频流(rtsp、rtmp、http等)、视频文件(mp4、rmvb、avi等)、本地USB摄像机播放。
    2. 支持多画面切换,包括1、4、6、8、9、13、16、25、36、64画面切换。
    3. 支持全屏切换,多种切换方式包括鼠标右键菜单、工具栏按钮、快捷键(alt+enter全屏,esc退出全屏)。
    4. 支持视频轮询,包括1、4、9、16画面轮询,可设置轮询分组(轮询预案)、轮询间隔、码流类型等。
    5. 支持onvif协议,包括设备搜索、云台控制、预置位、设备控制(图片参数、校对时间、系统重启,抓拍图片等)。
    6. 支持权限管理,不同的用户可以对应不同的模块权限,比如删除日志、关闭系统等。
    7. 数据库支持多种,包括sqlite、mysql、sqlserver、postgresql、oracle、人大金仓等。
    8. 本地USB摄像机支持设置分辨率、帧率等参数。
    9. 所有停靠模块都自动生成对应的菜单用来控制显示和隐藏,在标题栏右键可以弹出。
    10. 支持显示所有模块、隐藏所有模块、复位普通布局、复位全屏布局。
    11. 双击设备弹出实时预览视频,支持图片地图、在线地图、离线地图等。
    12. 摄像机节点拖曳到对应窗体播放视频,同时支持拖曳本地文件直接播放。
    13. 删除视频支持鼠标右键删除、悬浮条关闭删除、拖曳到视频监控面板外删除等多种方式。
    14. 图片地图上设备按钮可自由拖动,自动保存位置信息。百度地图上可以鼠标单击获取经纬度信息,用来更新设备位置。
    15. 视频监控面板窗体中任意通道支持拖曳交换,瞬间响应。
    16. 封装了百度地图,视图切换,运动轨迹,设备点位,鼠标按下获取经纬度等。
    17. 双击节点、拖曳节点、拖曳窗体交换位置等操作,均自动更新保存最后的播放地址,下次软件打开自动应用。
    18. 右下角音量条控件,失去焦点自动隐藏,音量条带静音图标。
    19. 支持视频截图,可指定单个或者对所有通道截图,底部小工具栏也有截图按钮。
    20. 支持超时自动隐藏鼠标指针、自动全屏机制。
    21. 支持onvif云台控制,可上下左右移动云台摄像机,包括复位和焦距调整等。
    22. 支持任意onvif摄像机,包括但不限于海康、大华、宇视、天地伟业、华为等。
    23. 可保存视频,可选定时存储或者单文件存储,可选存储间隔时间。
    24. 可设置视频流通信方式tcp+udp,可设置视频解码是速度优先、质量优先、均衡等。
    25. 可设置软件中文名称、英文名称、LOGO图标等。
    26. 存储的视频文件支持导出到指定目录,支持批量上传到服务器。

    0.4.3 特色功能

    1. 主界面采用停靠窗体模式,各种组件以小模块的形式加入,可自定义任意模块加入。
    2. 停靠模块可拖动任意位置嵌入和悬浮,支持最大化全屏,支持多屏幕。
    3. 双重布局文件存储机制,正常模式、全屏模式都对应不同的布局方案,自动切换和保存,比如全屏模式可以突出几个模块透明显示在指定位置,更具科幻感现代化。
    4. 原创onvif协议机制,采用底层协议解析(udp广播搜索+http请求执行命令)更轻量易懂易学习拓展,不依赖任何第三方组件比如gsoap。
    5. 原创数据导入导出机制,跨平台不依赖任何组件,瞬间导出数据。
    6. 内置多个原创组件,宇宙超值超级牛逼,包括数据导入导出组件(导出到xls、pdf、打印)、数据库组件(数据库管理线程、自动清理数据线程、万能分页、数据请求等)、地图组件、视频监控组件、文件多线程收发组件、onvif通信组件、通用浏览器内核组件等。
    7. 自定义信息框+错误框+询问框+右下角提示框(包含多种格式)等。
    8. 精美换肤,高达17套皮肤样式随意更换,所有样式全部统一,包括菜单等。
    9. 视频控件悬浮条可以自行增加多个按钮,监控界面底部小工具栏也可自行增加按钮。
    10. 双击摄像机节点自动播放视频,双击节点自动依次添加视频,会自动跳到下一个,双击父节点自动添加该节点下的所有视频。可选主码流、子码流。
    11. 录像机管理、摄像机管理,可添加删除修改导入导出打印信息,立即应用新的设备信息生成树状列表,不需重启。
    12. 可选多种内核自由切换,ffmpeg、vlc、mpv等,均可在pro中设置。推荐用ffmpeg,跨平台最多,默认提供好了linux和mac平台上编译好的库。
    13. 支持硬解码,可设置硬解码类型(qsv、dxva2、d3d11va等)。
    14. 默认采用opengl绘制视频,超低的CPU资源占用,支持yuyv和nv12两种格式绘制,很牛逼。
    15. 高度可定制化,用户可以很方便的在此基础上衍生自己的功能,比如增加自定义模块,增加运行模式、机器人监控、无人机监控、挖掘机监控等。
    16. 支持xp、win7、win10、linux、mac、各种国产系统(UOS、中标麒麟、银河麒麟等)、嵌入式linux等系统。
    17. 注释完整,项目结构清晰,超级详细完整的使用开发手册,精确到每个代码文件的功能说明,不断持续迭代版本。

    0.5 目录说明

    1. 本源码项目文件中对编译生成的临时文件和可执行文件做了重定向,可执行文件并不在build开头的目录下,而是在源码同级目录的bin目录下。
    2. config目录放的是软件的配置文件、地图模块需要的图片资源等。
    3. db目录一般有三个文件,key.db是秘钥文件、video_system.db是对应sqlite的数据库文件、video_system.sql是对应数据库脚本(可以在系统设置中数据库管理部分执行脚本用来切换到mysql等其他数据库)。
    4. logo目录存放的各种左上角软件LOGO图片,可以在系统设置中下拉选择。
    5. map目录存放的图片地图模块所用的地图图片文件,可以手动拷贝到此。
    6. sound目录存放的本系统所用的声音文件。
    7. layout目录存放的不同工作模式不同界面对应的布局方案配置文件。

    0.6 编译说明

    0.6.1 特别提示

    1. 本系统没有说基于哪个Qt版本,由于系统中电子地图模块用到了浏览器模块,所以理论上要求你电脑的Qt版本也有浏览器模块才行
    2. windows上Qt5.6以上的版本需要msvc编译器的版本才有,其余系统都会有。
    3. 如果没有则电子地图模块不可用,但是其余功能全部可用没有任何影响。
    4. 本人亲测4.7、4.8、5.5、5.6、5.7、5.9、5.12、5.13、5.14、5.15、6.1等。
    5. 2021-1-6开始集成了miniblink浏览器内核,意味着mingw版本的qt5.6以上版本也全部支持,这样就所有系统都有浏览器模块不需要担心没有电子地图的问题。
    6. 部分构建套件可能不支持预编译头,预编译头仅仅是为了加快编译速度,和程序本身无关。比如在win+Qt5.5 5.6就发现不支持,也可能是支持的不够全面,如果编译发生错误可以试着打开pro文件注释掉PRECOMPILED_HEADER = head.h 这行。
    7. 源码如果在嵌入式linux arm上编译,默认取消了视频监控内核ffmpeg,如果已经交叉编译好了对应arm的ffmpeg库,可以在pro中注释掉这个限制。 +

    0 前言说明

    0.1 系统说明

    1. 本视频监控系统做的是通用的系统,主要偏重整体框架和UI交互等。
    2. 主要功能包括摄像机管理,实时视频显示,视频轮询、视频存储、设备地图显示,各种画面切换,各种悬停子模块、onvif搜索设备和云台控制及预置位,通用的NVR视频流播放(比如海康的NVR支持直接取流回放)等功能。
    3. 如果是依赖SDK去实现的功能(雨刷、去雾等)都没有做,那个破坏了兼容性,无法通用其他摄像机设备以及其他操作系统。
    4. 每个厂家SDK和定制的功能都不一样,如果有这方面的需要都是买过去自己加上SDK的功能和自己定制需要的功能。
    5. 整个项目源代码行数大概30W行,其中代码13.5W行(占比45%),注释12.7W行(占比42%),空行3.5W行。分层设计注释详细。
    6. 本程序会一直持续迭代更新,包括项目源码、整体框架、使用说明等,购买者可永久免费升级,一次购买终生售后。

    0.2 特别说明

    1. 程序本身是个客户端(直接从摄像机取rtsp视频流)并不是服务器程序。
    2. 摄像机管理没有限制摄像机的数量,理论上10000路肯定没有问题,就是个数据库记录。
    3. 实时显示具体能支持多少路,和具体的电脑配置有关(亲测1.8G主频8G内存I5子码流64路,总之比海康大华客户端要更优秀)。
    4. 程序实时显示界面最大可以到64路,每个通道都是打开的时候才会去建立连接取视频流,而不是一开始就建立了连接。
    5. 系统采用onvif协议+rtsp视频流机制,并不限定支持哪家的摄像机,只要符合这两种协议的都支持,市面上99%的网络摄像机都支持这两种基础协议,包括但不限于海康、大华、宇视、天地伟业、华为等各种安防厂家的摄像机。
    6. 本系统适用于安防行业,所有录制视频也是针对摄像机的视频流,包括摄像机自身的rtsp格式视频流,摄像机重新推流的rtmp或者http的视频流,凡是源头不是摄像机的视频流一概不存储或者存储不成功,因为可能编码格式不一样。比如中央卫视、大雄兔等视频流是不存储的,因为源头不是摄像机。任何监控厂家的视频监控系统都是只存储监控摄像机的视频,其他一概不存储甚至添加都没法添加到系统中因为过滤掉了。
    7. 系统采用纯QtWidget(非qml)编写,解码采用ffmpeg,搜索采用onvif协议,视频播放采用rtsp协议,所有源码开放,并非有封装的库。
    8. 同时集成了数据库,多线程,串口通信,网络通信,音视频解码,网页地图、界面美化、UI布局等众多知识点。
    9. 未经本人许可不可将本项目源码扩散,如有发现本人将追究法律责任,谢谢配合。

    0.3 相关站点

    1. 国内站点:https://gitee.com/feiyangqingyun
    2. 国际站点:https://github.com/feiyangqingyun
    3. 个人主页:https://blog.csdn.net/feiyangqingyun
    4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun
    5. 产品主页:https://blog.csdn.net/feiyangqingyun/article/details/97565652
    6. 在线文档:https://feiyangqingyun.gitee.io/qwidgetdemo/video_system.html
    7. 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_video_system.zip。

    0.4 功能特点

    0.4.1 软件模块

    1. 视频监控模块,各种停靠小窗体子模块,包括设备列表、图文警情、窗口信息、云台控制、预置位、巡航设置、设备控制、悬浮地图、网页浏览等。
    2. 视频回放模块,包括本地回放、远程回放、设备播放、图片回放、视频上传等。
    3. 电子地图模块,包括图片地图、在线地图、离线地图、路径规划等。
    4. 日志查询模块,包括本地日志、设备日志等。
    5. 系统设置模块,包括系统设置(基本设置、视频参数、数据库设置、地图配置、串口配置等)、录像机管理、摄像机管理、轮询配置、用户管理等。

    0.4.2 基础功能

    1. 支持各种视频流(rtsp、rtmp、http等)、视频文件(mp4、rmvb、avi等)、本地USB摄像机播放。
    2. 支持多画面切换,包括1、4、6、8、9、13、16、25、36、64画面切换。
    3. 支持全屏切换,多种切换方式包括鼠标右键菜单、工具栏按钮、快捷键(alt+enter全屏,esc退出全屏)。
    4. 支持视频轮询,包括1、4、9、16画面轮询,可设置轮询分组(轮询预案)、轮询间隔、码流类型等。
    5. 支持onvif协议,包括设备搜索、云台控制、预置位、设备控制(图片参数、校对时间、系统重启,抓拍图片等)。
    6. 支持权限管理,不同的用户可以对应不同的模块权限,比如删除日志、关闭系统等。
    7. 数据库支持多种,包括sqlite、mysql、sqlserver、postgresql、oracle、人大金仓等。
    8. 本地USB摄像机支持设置分辨率、帧率等参数。
    9. 所有停靠模块都自动生成对应的菜单用来控制显示和隐藏,在标题栏右键可以弹出。
    10. 支持显示所有模块、隐藏所有模块、复位普通布局、复位全屏布局。
    11. 双击设备弹出实时预览视频,支持图片地图、在线地图、离线地图等。
    12. 摄像机节点拖曳到对应窗体播放视频,同时支持拖曳本地文件直接播放。
    13. 删除视频支持鼠标右键删除、悬浮条关闭删除、拖曳到视频监控面板外删除等多种方式。
    14. 图片地图上设备按钮可自由拖动,自动保存位置信息。百度地图上可以鼠标单击获取经纬度信息,用来更新设备位置。
    15. 视频监控面板窗体中任意通道支持拖曳交换,瞬间响应。
    16. 封装了百度地图,视图切换,运动轨迹,设备点位,鼠标按下获取经纬度等。
    17. 双击节点、拖曳节点、拖曳窗体交换位置等操作,均自动更新保存最后的播放地址,下次软件打开自动应用。
    18. 右下角音量条控件,失去焦点自动隐藏,音量条带静音图标。
    19. 支持视频截图,可指定单个或者对所有通道截图,底部小工具栏也有截图按钮。
    20. 支持超时自动隐藏鼠标指针、自动全屏机制。
    21. 支持onvif云台控制,可上下左右移动云台摄像机,包括复位和焦距调整等。
    22. 支持任意onvif摄像机,包括但不限于海康、大华、宇视、天地伟业、华为等。
    23. 可保存视频,可选定时存储或者单文件存储,可选存储间隔时间。
    24. 可设置视频流通信方式tcp+udp,可设置视频解码是速度优先、质量优先、均衡等。
    25. 可设置软件中文名称、英文名称、LOGO图标等。
    26. 存储的视频文件支持导出到指定目录,支持批量上传到服务器。

    0.4.3 特色功能

    1. 主界面采用停靠窗体模式,各种组件以小模块的形式加入,可自定义任意模块加入。
    2. 停靠模块可拖动任意位置嵌入和悬浮,支持最大化全屏,支持多屏幕。
    3. 双重布局文件存储机制,正常模式、全屏模式都对应不同的布局方案,自动切换和保存,比如全屏模式可以突出几个模块透明显示在指定位置,更具科幻感现代化。
    4. 原创onvif协议机制,采用底层协议解析(udp广播搜索+http请求执行命令)更轻量易懂易学习拓展,不依赖任何第三方组件比如gsoap。
    5. 原创数据导入导出机制,跨平台不依赖任何组件,瞬间导出数据。
    6. 内置多个原创组件,宇宙超值超级牛逼,包括数据导入导出组件(导出到xls、pdf、打印)、数据库组件(数据库管理线程、自动清理数据线程、万能分页、数据请求等)、地图组件、视频监控组件、文件多线程收发组件、onvif通信组件、通用浏览器内核组件等。
    7. 自定义信息框+错误框+询问框+右下角提示框(包含多种格式)等。
    8. 精美换肤,高达17套皮肤样式随意更换,所有样式全部统一,包括菜单等。
    9. 视频控件悬浮条可以自行增加多个按钮,监控界面底部小工具栏也可自行增加按钮。
    10. 双击摄像机节点自动播放视频,双击节点自动依次添加视频,会自动跳到下一个,双击父节点自动添加该节点下的所有视频。可选主码流、子码流。
    11. 录像机管理、摄像机管理,可添加删除修改导入导出打印信息,立即应用新的设备信息生成树状列表,不需重启。
    12. 可选多种内核自由切换,ffmpeg、vlc、mpv等,均可在pro中设置。推荐用ffmpeg,跨平台最多,默认提供好了linux和mac平台上编译好的库。
    13. 支持硬解码,可设置硬解码类型(qsv、dxva2、d3d11va等)。
    14. 默认采用opengl绘制视频,超低的CPU资源占用,支持yuyv和nv12两种格式绘制,很牛逼。
    15. 高度可定制化,用户可以很方便的在此基础上衍生自己的功能,比如增加自定义模块,增加运行模式、机器人监控、无人机监控、挖掘机监控等。
    16. 支持xp、win7、win10、linux、mac、各种国产系统(UOS、中标麒麟、银河麒麟等)、嵌入式linux等系统。
    17. 注释完整,项目结构清晰,超级详细完整的使用开发手册,精确到每个代码文件的功能说明,不断持续迭代版本。

    0.5 目录说明

    1. 本源码项目文件中对编译生成的临时文件和可执行文件做了重定向,可执行文件并不在build开头的目录下,而是在源码同级目录的bin目录下。
    2. config目录放的是软件的配置文件、地图模块需要的图片资源等。
    3. db目录一般有三个文件,key.db是秘钥文件、video_system.db是对应sqlite的数据库文件、video_system.sql是对应数据库脚本(可以在系统设置中数据库管理部分执行脚本用来切换到mysql等其他数据库)。
    4. logo目录存放的各种左上角软件LOGO图片,可以在系统设置中下拉选择。
    5. map目录存放的图片地图模块所用的地图图片文件,可以手动拷贝到此。
    6. sound目录存放的本系统所用的声音文件。
    7. layout目录存放的不同工作模式不同界面对应的布局方案配置文件。

    0.6 编译说明

    0.6.1 特别提示

    1. 本系统没有说基于哪个Qt版本,由于系统中电子地图模块用到了浏览器模块,所以理论上要求你电脑的Qt版本也有浏览器模块才行
    2. windows上Qt5.6以上的版本需要msvc编译器的版本才有,其余系统都会有。
    3. 如果没有则电子地图模块不可用,但是其余功能全部可用没有任何影响。
    4. 本人亲测4.7、4.8、5.5、5.6、5.7、5.9、5.12、5.13、5.14、5.15、6.1等。
    5. 2021-1-6开始集成了miniblink浏览器内核,意味着mingw版本的qt5.6以上版本也全部支持,这样就所有系统都有浏览器模块不需要担心没有电子地图的问题。
    6. 部分构建套件可能不支持预编译头,预编译头仅仅是为了加快编译速度,和程序本身无关。比如在win+Qt5.5 5.6就发现不支持,也可能是支持的不够全面,如果编译发生错误可以试着打开pro文件注释掉PRECOMPILED_HEADER = head.h 这行。
    7. 源码如果在嵌入式linux arm上编译,默认取消了视频监控内核ffmpeg,如果已经交叉编译好了对应arm的ffmpeg库,可以在pro中注释掉这个限制。 contains(QT_ARCH, arm) { DEFINES -= videoffmpeg -}

    0.6.2 注意事项

    1. 可执行文件在源码同级目录的bin目录下。
    2. 编译完成后记得将源码下的file目录下(切记是file目录下而不是file目录)的所有文件复制到可执行文件同一目录。
    3. 如果开启了视频监控(默认开启),则记得将对应的动态库文件复制到可执行文件同一目录。比如采用ffmpeg内核(默认就是ffmpeg)的话,则将下载到的dll_ffmpeg4下的所有文件复制到可执行文件同一目录。
    4. 各个操作系统的ffmpeg和vlc编译好的动态库以及miniblink的动态库下载地址。 -https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA  提取码: ujm7。
    5. 如果是64位的qt则对应的dll时候拷贝dll_ffmpeg4_64目录下的。
    6. 如果使用的ffmpeg3则对应dll目录就是dll_ffmpeg,在ffmpeg.pri文件中可以看到具体启用的是ffmpeg3(支持XP)还是ffmpeg4(不支持XP),默认是ffmpeg4。
    7. 如果编译运行提示miniblink文件不存在请先拷贝,则说明你当前用的Qt版本没有浏览器模块,要么没安装,要么不支持,你也不用担心啥,此时自动切换用的miniblink浏览器内核,你还需要将ffmpeg库下载的网盘的地方找到dll_miniblink.zip下载解压到可执行文件同一目录即可。
    8. 图形字体对照表在doc目录下的IconFont.png、Font Awesome Cheatsheet.png,对应图形字体类IconHelper中加载的图形字体,后期如果还有增加的其他图形字体也是放在这里,一个类支持多种图形字体,通过不同的值范围自动设置。
    9. 如果发现地图打不开,请先确认file目录下的所有文件有没有拷贝过去。
    10. 如果是用vs+qt可能报错 error LNK2026,解决办法详细见文档中其他说明。
    11. 默认用户名admin 密码admin。
    12. 系统配置参数在加载的时候会对节点值进行过滤判断,如果为空会自动用初始值生成新的配置文件,如果不想要显示版权所有公司,可以填xxx而不是删掉整个值。

    0.6.3 离线地图

    1. 离线地图可以用网上的瓦片地图下载器下载百度的离线地图放到对应目录即可。
    2. 也可以直接下载网盘中已经下载好的上海市的离线地图。
    3. 下载地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取密码:01jf 文件名称:bin_map_tiles.zip

    使用说明

    1. 将压缩包下的两个文件夹复制到对应可执行文件下的config文件夹下,和map.js文件同一级目录。
    2. tiles文件夹是街道图,tiles_hybrid文件夹是卫星图。
    3. 默认提供的是上海市徐汇区的瓦片地图,如果自己用万能地图下载器下载的百度地图的瓦片文件,也可以对应替换就行。
    4. 要注意的是格式,默认是jpg,如果下载的瓦片地图格式是png则需要打开config文件夹下的map_load.js文件,将.jpg改成.png保存即可。

    0.7 视频格式

    0.7.1 USB摄像头

    1. 内核ffmpeg写法:video=USB2.0 PC CAMERA(具体要看设备名)。
    2. 内核vlc写法:dshow://:dshow-vdev=Default (或者填USB2.0 PC CAMERA)
    3. 带参数写法:2020-12-12以后增加USB摄像头直接url带分辨率帧率写法,默认分辨率640x480。

    写法举例

    1. video=USB2.0 PC CAMERA|1920x1080|30(表示1920*1080分辨率30帧)
    2. video=USB2.0 PC CAMERA|640x480(表示640*480分辨率)
    3. dshow://:dshow-vdev=USB2.0 PC CAMERA(表示打开视频设备USB2.0 PC CAMERA、其他参数全部默认)
    4. dshow://:dshow-vdev=USB2.0 PC CAMERA:dshow-adev=麦克风 (USB Audio Device):dshow-size=1920*1080:live-caching=300(表示打开视频设备USB2.0 PC CAMERA、打开音频设备麦克风 (USB Audio Device)、分辨率640x480、缓存时间300毫秒)

    0.7.2 网络地址

    1. 下面的地址有时候会失效,可以自行网上找找其他的地址,网络视频地址建议在晚上测试会更流畅。
    2. 大雄兔:rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
    3. 大雄兔:http://r.ossrs.net/live/bbb.flv
    4. 海康萤石:https://hls01open.ys7.com/openlive/6e0b2be040a943489ef0b9bb344b96b8.hd.m3u8
    5. 在线摄像机:http://vts.simba-cn.com:280/gb28181/21100000001320000002.m3u8
    6. 摄像机格式:https://blog.csdn.net/qq_38880380/article/details/80652697

    0.7.3 中央卫视

    1. 中央卫视1:rtmp://58.200.131.2:1935/livetv/cctv1
    2. 中央卫视2:rtmp://58.200.131.2:1935/livetv/cctv2
    3. 中央卫视3:rtmp://58.200.131.2:1935/livetv/cctv3
    4. 中央卫视4:rtmp://58.200.131.2:1935/livetv/cctv4
    5. 中央卫视5:rtmp://58.200.131.2:1935/livetv/cctv5
    6. 中央卫视6:rtmp://58.200.131.2:1935/livetv/cctv6
    7. 中央卫视7:rtmp://58.200.131.2:1935/livetv/cctv7
    8. 中央卫视8:rtmp://58.200.131.2:1935/livetv/cctv8
    9. 中央卫视9:rtmp://58.200.131.2:1935/livetv/cctv9
    10. 中央卫视10:rtmp://58.200.131.2:1935/livetv/cctv10

    0.7.4 视频文件

    1. http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4
    2. http://vfx.mtime.cn/Video/2019/03/19/mp4/190319212559089721.mp4
    3. http://vfx.mtime.cn/Video/2019/03/17/mp4/190317150237409904.mp4
    4. http://vfx.mtime.cn/Video/2019/03/14/mp4/190314223540373995.mp4

    0.7.5 网友提供

    1. rtmp://live.yihtc.com:10935/hls/stream_3
    2. rtmp://live.yihtc.com:10935/hls/stream_13
    3. rtmp://218.3.205.46/live/ggpd_sd
    4. rtmp://hls.hsrtv.cn/hls/hstv2
    5. rtmp://hls.hsrtv.cn/hls/hstv1
    6. rtmp://222.173.22.119:1935/live/jnyd_sd
    7. rtmp://222.173.22.119:1935/live/xwhd_hd
    8. rtmp://livetv.dhtv.cn:1935/live/peoples
    9. rtmp://livetv.dhtv.cn:1935/live/citylife
    10. rtmp://livetv.dhtv.cn:1935/live/financial
    11. rtmp://livetv.dhtv.cn:1935/live/news

    0.6 版本说明

    V20210922

    1. 视频控件边框增加0像素选项,这样看起来没有边框,有些场景需要无缝拼接。
    2. 修复当采用NVR通道作为摄像机视频流显示的时候,ONVIF处理索引越界崩溃的情况,因为一台NVR同一个IP地址对应多个摄像机。
    3. 所有样式17套皮肤更新边框颜色。
    4. 系统信息增加对应的编译器名字、位数、版本等。
    5. 演示demo增加视频叠加演示功能,比如在主视频的左上角、右上角、左下角、右下角在增加一个视频缩略图显示。
    6. 新增天气预报模块,可设置城市、采集间隔、展示样式等。
    7. 增加了vlc内核下USB摄像头格式自动纠正,如果采用ffmpeg的格式video=USB2.0 PC CAMERA|1920x1080自动纠正。
    8. 纠正vlc内核下USB摄像头不自动拉伸的BUG。
    9. 修正vlc内核动态保存视频文件,文件命名不符合规范,重新按照设定的重命名。
    10. 修复vlc内核中USB摄像头会当做rtsp视频流的BUG。
    11. 天气预报模块新增城市显示,新增双击弹出天气预报设置,含打印信息。
    12. 系统信息,增加秘钥文件的内容,比如允许的设备数量、到期日期等。
    13. 修复配置文件一旦新增加节点,之前节点全部初始值运行的BUG,应该是存在的节点则读取节点值,不存在的节点以初始值运行。

    V20210705

    1. 改进窗体居中显示算法,可设置参照窗体,默认基于当前屏幕中心,可设置参照主窗体则基于参照窗体,在大分辨率屏幕效果非常好,不然主窗体很小,弹个窗找不到还在很远的地方,还以为没有弹呢。
    2. 将登陆窗体、登出窗体、用户管理等公用界面,做成了通用库core_form。
    3. 修复MAC系统上无边框窗体无法最小化的BUG。
    4. 增加超级管理员密码A具有所有权限的机制,避免管理员误将系统设置权限取消后无法再次进去系统设置的问题。
    5. 图片参数增加锐度,图片参数设置滑块调节松开立即设置。
    6. 修复当没有启用图片地图的时候对应界面隐藏的时候保存设备坐标位置报错BUG,因为没有启用的情况下没有设置对应的对象指针。

    V20210603

    1. 将onvif搜索的用户密码,设备播放界面的设备密码等配置参数全部改成了密文存储。
    2. 大量修改代码,全部支持Qt4-Qt6所有版本。
    3. 调整onvif代码执行机制,改成了异步执行。
    4. 云台协议增加了连续移动。
    5. 增加了预置位相关处理,包括获取预置位、调用预置位、添加预置位、删除预置位。
    6. 自动巡航按照预置位集合进行,采用定时器去调用预置位队列。
    7. 增加图文警情行数、窗口信息行数配置,0行表示自动处理。
    8. 做了大量的代码改进,比如onvif内核换成了QDom对象处理,之前是采用的QXmlQuery查询,由于XmlPatterns这个模块逐渐废弃了,而且在Qt6中不再有,所以彻底移除了XmlPatterns相关的代码,改用其他处理方式实现。
    9. 增加了预置位和自动巡航处理,其中包括获取预置位集合、调用预置位、添加预置位、删除预置位、设置起始位、调用起始位等。
    10. ONVIF内核几乎全部重写,将数据改成了结构体,比如设备信息、预置位信息、事件信息等,可以存储更多的数据,拓展也非常灵活。
    11. onvif处理部分增加了对非onvif设备的过滤,通过判断是否存在onvif地址。这样可以大大加快处理速度,打开视频的时候去实例化onvif通信,关闭视频的时候删除对应的onvif类,这样可以动态响应。
    12. 所有onvif指令改成了线程处理,处理完成一个立马处理下一个,排队处理。

    V20210425

    1. 配置文件密码改成密文存储。
    2. 增加了无敌的牛逼的万能的完美入微级自动分页导航控件。
    3. 日志记录表增加索引,速度提升100倍以上。
    4. 新增多个设备轨迹 不同颜色+传入经纬度 单独示例。
    5. 对地图核心类所有覆盖物都增加颜色+粗细+透明度的参数,可动态传入对应值。
    6. 系统设置增加用户管理模块,可分别设置对应的权限。
    7. 万能权限管理算法,通过设置不同需要授权的模块名称,对应切换的按钮自动计算。
    8. 增加了appkey秘钥类,用于校验秘钥是否正确,运行时间等。

    V20210403

    1. 增加全局变量AppData::LastLiveTime,记住程序最后的活动时间-包括键盘+鼠标活动,用于两个判断,一个是超过多久没有操作全屏下隐藏鼠标光标,一个是超过多久没有操作如果没有全屏则自动全屏。
    2. 增加App::TimeAutoFull配置参数用来判断比较超时自动全屏。
    3. 重命名为TimeHideCursor表示程序多久未操作自动隐藏光标,TimeAutoFull程序多久未操作自动全屏界面,下拉框选项值增加0,表示不启用此功能。
    4. 增加信息列表模块frmMsgList,用于图文列表显示信息,对应兄弟类frmMsgTable用于表格显示消息。
    5. 大改版,将中间部分全部改成了QMainWindow,子模块全部采用停靠窗体,可以悬浮半透明,自动记忆每个模块的最后的位置,启动后自动应用。
    6. 移除大改版后的所有不需要用的变量和配置参数,重新调整配置参数。
    7. 增加透明度参数用于停靠窗体独立出来后的透明度。
    8. 将摄像机控制部分比如云台+控制+预置位+巡航,单独分类到ipc模块,方便管理。
    9. 限定操作员不能移动停靠窗体等,需要管理员设计好。
    10. 修复系统设置中工作模式等切换造成的自动重启会弹出退出和登录两个窗体的BUG。
    11. 修复自动登录用户计算不正确的BUG,要以最后登录的用户为准。

    V20210322

    1. USB摄像头增加参数帧率,第二个参数是分辨率,第三个参数为帧率,不设置则采用默认的帧率,video=USB2.0 PC CAMERA|1920x1080|25。
    2. 增加独立的demo模块,专门用于测试监控系统中用到的组件和控件,演示如何使用,比如视频图片界面演示从文件夹读取图片绘制到窗体,视频窗体演示系统的核心组件视频控件的设置参数如何使用等。
    3. 增加了对其他数据库的支持,比如posgres、oracle、odbc、kingbase等数据库,理论上只要支持odbc数据源方式的都支持。
    4. 增加IndexStart启动窗体索引配置参数,0-主程序 1-演示示例。

    V20210305

    1. 修复数据库有时候没加载到的BUG。
    2. 新增配置参数控制画面切换的菜单和快捷图标是否显示。
    3. ffmpeg内核增加了可动态保存机制,点击开始保存按钮启动保存,单击结束则生成视频文件,如此往复。
    4. 海康内核判断主码流子码流改成了 /101? 和 /main/ 同时判断。
    5. 新增多屏幕的支持,自动在对应屏幕最大化全屏,对话框位置,右下角提示框等。
    6. 再次分类存放代码文件,分成core ui class三大类。
    7. 系统配置更改视频控件参数,统一一个函数设置,initCommonVideoWidget函数中做了过滤,必须关闭状态的视频控件设置才起作用。
    8. 设备播放模块增加大华NVR的远程回放地址,其他地址计算算法调整。
    9. 新增界面模块功能启用配置参数。
    10. 新增主界面顶部导航模块中间界面,用于不同的运行模式加载不同的模块。

    V20201212

    1. 增加USB摄像机分辨率设置,直接url带掉。
    2. 所有地图内核公用一个,复用代码。
    3. 增加地图默认级别和中心点坐标设置参数。
    4. 主界面四个模块独立出来,做成了可配置,这样后期可以任意位置放置自定义模块。
    5. 四个模块标题栏自定义。
    6. vlc内核和mpv内核的离线判断,当句柄模式下,统一为getLastTime,当调用该函数的时候自动查询播放状态,如果正在播放则自动更新时间为当前时间。
    7. 将各种在代码中define定义不同内核的代码全部优化,统一为一个类,很大减少代码量,统一为CommonVideoWidget和CommonVideoManage类。

    V20201108

    1. 轮询点模块增加批量生成功能。
    2. 录像机、摄像机、轮询点,增加导入导出功能。
    3. ffmpeg内核增加读取帧回调,超时识别,可以快速识别掉线。

    20200828

    1. 增加了云台控制过滤,没有打开的视频禁用云台。
    2. linux上全屏BUG修复,采用showfullscreen。
    3. 增加轮询点管理模块。
    4. 修正轮询的可能崩溃的BUG。

    V20200730

    1. 系统设置增加了视频上传模块,用来将本地的视频文件传输到服务器,多线程并发。
    2. 视频监控内核新增MPV内核,修正了其他内核的部分函数和处理。
    3. 海康内核进行大改动,同时支持视频流和本地MP4文件播放,自动分析切换。
    4. 海康内核增加回调处理,可以拿到每一张图片。
    5. 海康内核进行了linux上的实验,可以正常播放。
    6. ffmpeg内核增加保存到MP4。
    7. 本地文件回放vlc部分增加进度切换等。
    8. 悬浮条关闭按钮增加实际处理,之前只是打印消息。
    9. 改进了vlc和mpv的事件回调机制,使其同时支持qt4+qt5。

    V20200620

    1. 增加了opengl显示实时视频,CPU占用极低。
    2. 增加了地图上设备点位置的调整。
    3. 设备点双击弹出实时视频预览。
    4. 增加GPS运动轨迹显示。
    5. ffmpeg解码类增加了音频播放,采用的QAudioOutput。

    V20191105

    1. 增加云台控制功能,可以上下左右等八个方位控制云台,默认采用相对移动,云台中间按下表示复位。
    2. 系统设置增加码流类型选择,默认子码流,切换完自动应用。
    3. 云台控制增加速度功能,值越大,速度越快。
    4. 增加焦距控制,可放大缩小,速度也可控制。

    1 用户登录退出

    1.1 用户登录

    +}

  • Qt6.2的mingw版本的multimedia模块不可用,msvc版本的正常。
  • 推荐用64位的Qt搭配64位的ffmpeg,目前绝大部分系统都是64位的,能获得最大性能提升,本人亲自对比测试32位和64位,64位无论资源占用和操作响应等体验都更优。
  • 0.6.2 注意事项

    1. 可执行文件在源码同级目录的bin目录下。
    2. 编译完成后记得将源码下的file目录下(切记是file目录下而不是file目录)的所有文件复制到可执行文件同一目录。
    3. 如果开启了视频监控(默认开启),则记得将对应的动态库文件复制到可执行文件同一目录。比如采用ffmpeg内核(默认就是ffmpeg)的话,则将下载到的dll_ffmpeg4下的所有文件复制到可执行文件同一目录。
    4. 各个操作系统的ffmpeg和vlc编译好的动态库以及miniblink的动态库下载地址。 +https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA  提取码: ujm7。
    5. 如果是64位的qt则对应的dll时候拷贝dll_ffmpeg4_64目录下的。
    6. 如果使用的ffmpeg3则对应dll目录就是dll_ffmpeg,在ffmpeg.pri文件中可以看到具体启用的是ffmpeg3(支持XP)还是ffmpeg4(不支持XP),默认是ffmpeg4。
    7. 如果编译运行提示miniblink文件不存在请先拷贝,则说明你当前用的Qt版本没有浏览器模块,要么没安装,要么不支持,你也不用担心啥,此时自动切换用的miniblink浏览器内核,你还需要将ffmpeg库下载的网盘的地方找到dll_miniblink.zip下载解压到可执行文件同一目录即可。
    8. 图形字体对照表在doc目录下的IconFont.png、Font Awesome Cheatsheet.png,对应图形字体类IconHelper中加载的图形字体,后期如果还有增加的其他图形字体也是放在这里,一个类支持多种图形字体,通过不同的值范围自动设置。
    9. 如果发现地图打不开,请先确认file目录下的所有文件有没有拷贝过去。
    10. 如果是用vs+qt可能报错 error LNK2026,解决办法详细见文档中其他说明。
    11. 默认用户名admin 密码admin。
    12. 系统配置参数在加载的时候会对节点值进行过滤判断,如果为空会自动用初始值生成新的配置文件,如果不想要显示版权所有公司,可以填xxx而不是删掉整个值。
    13. 如果是用vlc推流的rtsp地址,比如 rtsp://:8554/aabb,由于vlc推流默认写死的采用的udp协议,所以监控系统也必须在系统设置中通信方式选择udp才行(默认tcp)。

    0.6.3 离线地图

    1. 离线地图可以用网上的瓦片地图下载器下载百度的离线地图放到对应目录即可。
    2. 也可以直接下载网盘中已经下载好的上海市的离线地图。
    3. 下载地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取密码:01jf 文件名称:bin_map_tiles.zip

    使用说明

    1. 将压缩包下的两个文件夹复制到对应可执行文件下的config文件夹下,和map.js文件同一级目录。
    2. tiles文件夹是街道图,tiles_hybrid文件夹是卫星图。
    3. 默认提供的是上海市徐汇区的瓦片地图,如果自己用万能地图下载器下载的百度地图的瓦片文件,也可以对应替换就行。
    4. 要注意的是格式,默认是jpg,如果下载的瓦片地图格式是png则需要打开config文件夹下的map_load.js文件,将.jpg改成.png保存即可。

    0.7 视频格式

    0.7.1 USB摄像头

    1. 内核ffmpeg写法:video=USB2.0 PC CAMERA(具体要看设备名)。
    2. 内核vlc写法:dshow://:dshow-vdev=Default (或者填USB2.0 PC CAMERA)
    3. 带参数写法:2020-12-12以后增加USB摄像头直接url带分辨率帧率写法,默认分辨率640x480。

    写法举例

    1. video=USB2.0 PC CAMERA|1920x1080|30(表示1920*1080分辨率30帧)
    2. video=USB2.0 PC CAMERA|640x480(表示640*480分辨率)
    3. dshow://:dshow-vdev=USB2.0 PC CAMERA(表示打开视频设备USB2.0 PC CAMERA、其他参数全部默认)
    4. dshow://:dshow-vdev=USB2.0 PC CAMERA:dshow-adev=麦克风 (USB Audio Device):dshow-size=1920*1080:live-caching=300(表示打开视频设备USB2.0 PC CAMERA、打开音频设备麦克风 (USB Audio Device)、分辨率640x480、缓存时间300毫秒)

    0.7.2 网络地址

    1. 下面的地址有时候会失效,可以自行网上找找其他的地址,网络视频地址建议在晚上测试会更流畅。
    2. 大雄兔:rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
    3. 大雄兔:http://r.ossrs.net/live/bbb.flv
    4. 海康萤石:https://hls01open.ys7.com/openlive/6e0b2be040a943489ef0b9bb344b96b8.hd.m3u8
    5. 在线摄像机:http://vts.simba-cn.com:280/gb28181/21100000001320000002.m3u8
    6. 摄像机格式:https://blog.csdn.net/qq_38880380/article/details/80652697

    0.7.3 中央卫视

    1. 中央卫视1:rtmp://58.200.131.2:1935/livetv/cctv1
    2. 中央卫视2:rtmp://58.200.131.2:1935/livetv/cctv2
    3. 中央卫视3:rtmp://58.200.131.2:1935/livetv/cctv3
    4. 中央卫视4:rtmp://58.200.131.2:1935/livetv/cctv4
    5. 中央卫视5:rtmp://58.200.131.2:1935/livetv/cctv5
    6. 中央卫视6:rtmp://58.200.131.2:1935/livetv/cctv6
    7. 中央卫视7:rtmp://58.200.131.2:1935/livetv/cctv7
    8. 中央卫视8:rtmp://58.200.131.2:1935/livetv/cctv8
    9. 中央卫视9:rtmp://58.200.131.2:1935/livetv/cctv9
    10. 中央卫视10:rtmp://58.200.131.2:1935/livetv/cctv10

    0.7.4 视频文件

    1. http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4
    2. http://vfx.mtime.cn/Video/2019/03/19/mp4/190319212559089721.mp4
    3. http://vfx.mtime.cn/Video/2019/03/17/mp4/190317150237409904.mp4
    4. http://vfx.mtime.cn/Video/2019/03/14/mp4/190314223540373995.mp4

    0.7.5 网友提供

    1. rtmp://live.yihtc.com:10935/hls/stream_3
    2. rtmp://live.yihtc.com:10935/hls/stream_13
    3. rtmp://218.3.205.46/live/ggpd_sd
    4. rtmp://hls.hsrtv.cn/hls/hstv2
    5. rtmp://hls.hsrtv.cn/hls/hstv1
    6. rtmp://222.173.22.119:1935/live/jnyd_sd
    7. rtmp://222.173.22.119:1935/live/xwhd_hd
    8. rtmp://livetv.dhtv.cn:1935/live/peoples
    9. rtmp://livetv.dhtv.cn:1935/live/citylife
    10. rtmp://livetv.dhtv.cn:1935/live/financial
    11. rtmp://livetv.dhtv.cn:1935/live/news

    0.8 版本说明

    V20211101

    1. 修正开启轮询后关闭所有视频通道不弹出提示信息。
    2. 所有信息框增加阴影边框区分突出显示,并跟随系统换肤自动更新边框阴影。
    3. 修正视频轮询分隔符,将|改成;因为如果是竖杠遇到带有参数的url则会出错。
    4. 将设备图片统一存放到config/device目录,之前在config目录下,随着越来越多非常凌乱。
    5. 修复之前通过信号执行通道切换,对应文字显示反了的BUG(通道1交换到通道2,新的通道2应该显示之前通道1的文本)。
    6. 将鼠标按下两个通道交换的处理代码,复用信号槽切换通道的函数。
    7. 将视频监控布局切换部分单独提取类VideoBox,专门负责管理各种通道布局切换,复用代码并且方便后期拓展,这部分代码和具体的处理无关,一直以来就想要单独提取出来进行管理,后期可以方便的增加其他异形布局以及255通道布局等,很多项目都用到了这个切换逻辑。
    8. 修复Qt6中视频控件悬浮条无法显示的BUG,因为Qt6将void enterEvent(QEvent *);改成了void enterEvent(QEnterEvent *);也不打个招呼。这种改变编译也不会提示的。
    9. 数据库组件修正sqlserver数据库必须设置数据源的不足,改成了dsn字符串形式,不需要新建数据源也能直接通信。
    10. 数据库组件修正mysql数据库必须存在默认数据库mysql的不足,改成了不需要默认数据库也能正常通信。
    11. 数据库组件修正没有默认数据库也能在建立连接后新建数据库操作。
    12. 数据库脚本执行将DROP DATABASE IF EXIST改成了DROP DATABASE ,这样无论什么时候都能先删除原来的数据库然后再新建数据库CREATE DATABASE。有些数据库不支持IF EXIST。

     

    V20211005

    1. 修正ffmpeg内核,在播放地址不存在的情况下,打开容易卡主引起崩溃的BUG,在打开回调函数中增加对线程停止标志位的判断,一旦在打开的回调中识别到需要停止线程则立即返回结束。
    2. 增加临时信息中间弹出框提示信息,比如一次性关闭所有通道的时候,界面会卡主的期间提示。
    3. 增加忙碌鼠标图标切换显示,忙完以后自动恢复鼠标样式。
    4. 修正ffmpeg内核,开始时间记录可能出现问题的BUG,会导致部分特殊MP4文件打不开。
    5. 应用程序关闭,增加全局退出信号关联到视频通道管理类,先关闭所有视频通道再彻底退出应用程序。不这样处理的话,发现vlc内核在开启了视频存储的时候,会关不掉程序。
    6. 修复在没有声音播放的情况下主动调用停止播放造成崩溃的BUG。
    7. 修复在linux系统上QUIWidget弹出的无边框窗体带系统标题栏的BUG。
    8. 修复ffmpeg内核关闭视频后opengl窗体来不及隐藏的BUG。
    9. 修复重复立即刷新打开所有通道,前一次还没执行后一次又来了的BUG,改成了定时器处理,在立即执行前将上一次还没来得及执行的先停止。
    10. 增加about关于对话框窗体,显示版本号、版权所有、网址、电话等信息。
    11. 所有弹出窗体都跟随软件主窗体默认居中,这个特性非常棒。
    12. 所有皮肤增加右键菜单选中图标样式、右键菜单二级子菜单右侧小三角箭头图标样式,单选框、复选框、禁用状态图标全部更新,从图形字体绘制,极其统一舒服。
    13. 着重对日志类savelog增加了最大行数、最大文件大小等参数设置,可以设置按照行数或者大小来自动分割日志文件。
    14. 日志类增加了可过滤不同的消息类型,不同消息类型增加消息头。
    15. 经过大量对比测试发现,使用miniblink浏览器内核,容易卡,说不定什么时候就失效了,问题集中在32位,64位的目前没有发现这个现象,webengine暂时没有这个现象,但是加载打开摄像机的网页配置,还是miniblink更优秀。
    16. 中文标题栏支持换行,既可以副标题写在英文标题上,也可以同等大小字体写在中文标题上。

    V20210922

    1. 视频控件边框增加0像素选项,这样看起来没有边框,有些场景需要无缝拼接。
    2. 修复当采用NVR通道作为摄像机视频流显示的时候,ONVIF处理索引越界崩溃的情况,因为一台NVR同一个IP地址对应多个摄像机。
    3. 所有样式17套皮肤更新边框颜色。
    4. 系统信息增加对应的编译器名字、位数、版本等。
    5. 演示demo增加视频叠加演示功能,比如在主视频的左上角、右上角、左下角、右下角在增加一个视频缩略图显示。
    6. 新增天气预报模块,可设置城市、采集间隔、展示样式等。
    7. 增加了vlc内核下USB摄像头格式自动纠正,如果采用ffmpeg的格式video=USB2.0 PC CAMERA|1920x1080自动纠正。
    8. 纠正vlc内核下USB摄像头不自动拉伸的BUG。
    9. 修正vlc内核动态保存视频文件,文件命名不符合规范,重新按照设定的重命名。
    10. 修复vlc内核中USB摄像头会当做rtsp视频流的BUG。
    11. 天气预报模块新增城市显示,新增双击弹出天气预报设置,含打印信息。
    12. 系统信息,增加秘钥文件的内容,比如允许的设备数量、到期日期等。
    13. 修复配置文件一旦新增加节点,之前节点全部初始值运行的BUG,应该是存在的节点则读取节点值,不存在的节点以初始值运行。

    V20210705

    1. 改进窗体居中显示算法,可设置参照窗体,默认基于当前屏幕中心,可设置参照主窗体则基于参照窗体,在大分辨率屏幕效果非常好,不然主窗体很小,弹个窗找不到还在很远的地方,还以为没有弹呢。
    2. 将登陆窗体、登出窗体、用户管理等公用界面,做成了通用库core_form。
    3. 修复MAC系统上无边框窗体无法最小化的BUG。
    4. 增加超级管理员密码A具有所有权限的机制,避免管理员误将系统设置权限取消后无法再次进去系统设置的问题。
    5. 图片参数增加锐度,图片参数设置滑块调节松开立即设置。
    6. 修复当没有启用图片地图的时候对应界面隐藏的时候保存设备坐标位置报错BUG,因为没有启用的情况下没有设置对应的对象指针。

    V20210603

    1. 将onvif搜索的用户密码,设备播放界面的设备密码等配置参数全部改成了密文存储。
    2. 大量修改代码,全部支持Qt4-Qt6所有版本。
    3. 调整onvif代码执行机制,改成了异步执行。
    4. 云台协议增加了连续移动。
    5. 增加了预置位相关处理,包括获取预置位、调用预置位、添加预置位、删除预置位。
    6. 自动巡航按照预置位集合进行,采用定时器去调用预置位队列。
    7. 增加图文警情行数、窗口信息行数配置,0行表示自动处理。
    8. 做了大量的代码改进,比如onvif内核换成了QDom对象处理,之前是采用的QXmlQuery查询,由于XmlPatterns这个模块逐渐废弃了,而且在Qt6中不再有,所以彻底移除了XmlPatterns相关的代码,改用其他处理方式实现。
    9. 增加了预置位和自动巡航处理,其中包括获取预置位集合、调用预置位、添加预置位、删除预置位、设置起始位、调用起始位等。
    10. ONVIF内核几乎全部重写,将数据改成了结构体,比如设备信息、预置位信息、事件信息等,可以存储更多的数据,拓展也非常灵活。
    11. onvif处理部分增加了对非onvif设备的过滤,通过判断是否存在onvif地址。这样可以大大加快处理速度,打开视频的时候去实例化onvif通信,关闭视频的时候删除对应的onvif类,这样可以动态响应。
    12. 所有onvif指令改成了线程处理,处理完成一个立马处理下一个,排队处理。

    V20210425

    1. 配置文件密码改成密文存储。
    2. 增加了无敌的牛逼的万能的完美入微级自动分页导航控件。
    3. 日志记录表增加索引,速度提升100倍以上。
    4. 新增多个设备轨迹 不同颜色+传入经纬度 单独示例。
    5. 对地图核心类所有覆盖物都增加颜色+粗细+透明度的参数,可动态传入对应值。
    6. 系统设置增加用户管理模块,可分别设置对应的权限。
    7. 万能权限管理算法,通过设置不同需要授权的模块名称,对应切换的按钮自动计算。
    8. 增加了appkey秘钥类,用于校验秘钥是否正确,运行时间等。

    V20210403

    1. 增加全局变量AppData::LastLiveTime,记住程序最后的活动时间-包括键盘+鼠标活动,用于两个判断,一个是超过多久没有操作全屏下隐藏鼠标光标,一个是超过多久没有操作如果没有全屏则自动全屏。
    2. 增加App::TimeAutoFull配置参数用来判断比较超时自动全屏。
    3. 重命名为TimeHideCursor表示程序多久未操作自动隐藏光标,TimeAutoFull程序多久未操作自动全屏界面,下拉框选项值增加0,表示不启用此功能。
    4. 增加信息列表模块frmMsgList,用于图文列表显示信息,对应兄弟类frmMsgTable用于表格显示消息。
    5. 大改版,将中间部分全部改成了QMainWindow,子模块全部采用停靠窗体,可以悬浮半透明,自动记忆每个模块的最后的位置,启动后自动应用。
    6. 移除大改版后的所有不需要用的变量和配置参数,重新调整配置参数。
    7. 增加透明度参数用于停靠窗体独立出来后的透明度。
    8. 将摄像机控制部分比如云台+控制+预置位+巡航,单独分类到ipc模块,方便管理。
    9. 限定操作员不能移动停靠窗体等,需要管理员设计好。
    10. 修复系统设置中工作模式等切换造成的自动重启会弹出退出和登录两个窗体的BUG。
    11. 修复自动登录用户计算不正确的BUG,要以最后登录的用户为准。

    V20210322

    1. USB摄像头增加参数帧率,第二个参数是分辨率,第三个参数为帧率,不设置则采用默认的帧率,video=USB2.0 PC CAMERA|1920x1080|25。
    2. 增加独立的demo模块,专门用于测试监控系统中用到的组件和控件,演示如何使用,比如视频图片界面演示从文件夹读取图片绘制到窗体,视频窗体演示系统的核心组件视频控件的设置参数如何使用等。
    3. 增加了对其他数据库的支持,比如posgres、oracle、odbc、kingbase等数据库,理论上只要支持odbc数据源方式的都支持。
    4. 增加IndexStart启动窗体索引配置参数,0-主程序 1-演示示例。

    V20210305

    1. 修复数据库有时候没加载到的BUG。
    2. 新增配置参数控制画面切换的菜单和快捷图标是否显示。
    3. ffmpeg内核增加了可动态保存机制,点击开始保存按钮启动保存,单击结束则生成视频文件,如此往复。
    4. 海康内核判断主码流子码流改成了 /101? 和 /main/ 同时判断。
    5. 新增多屏幕的支持,自动在对应屏幕最大化全屏,对话框位置,右下角提示框等。
    6. 再次分类存放代码文件,分成core ui class三大类。
    7. 系统配置更改视频控件参数,统一一个函数设置,initCommonVideoWidget函数中做了过滤,必须关闭状态的视频控件设置才起作用。
    8. 设备播放模块增加大华NVR的远程回放地址,其他地址计算算法调整。
    9. 新增界面模块功能启用配置参数。
    10. 新增主界面顶部导航模块中间界面,用于不同的运行模式加载不同的模块。

    V20201212

    1. 增加USB摄像机分辨率设置,直接url带掉。
    2. 所有地图内核公用一个,复用代码。
    3. 增加地图默认级别和中心点坐标设置参数。
    4. 主界面四个模块独立出来,做成了可配置,这样后期可以任意位置放置自定义模块。
    5. 四个模块标题栏自定义。
    6. vlc内核和mpv内核的离线判断,当句柄模式下,统一为getLastTime,当调用该函数的时候自动查询播放状态,如果正在播放则自动更新时间为当前时间。
    7. 将各种在代码中define定义不同内核的代码全部优化,统一为一个类,很大减少代码量,统一为CommonVideoWidget和CommonVideoManage类。

    V20201108

    1. 轮询点模块增加批量生成功能。
    2. 录像机、摄像机、轮询点,增加导入导出功能。
    3. ffmpeg内核增加读取帧回调,超时识别,可以快速识别掉线。

    20200828

    1. 增加了云台控制过滤,没有打开的视频禁用云台。
    2. linux上全屏BUG修复,采用showfullscreen。
    3. 增加轮询点管理模块。
    4. 修正轮询的可能崩溃的BUG。

    V20200730

    1. 系统设置增加了视频上传模块,用来将本地的视频文件传输到服务器,多线程并发。
    2. 视频监控内核新增MPV内核,修正了其他内核的部分函数和处理。
    3. 海康内核进行大改动,同时支持视频流和本地MP4文件播放,自动分析切换。
    4. 海康内核增加回调处理,可以拿到每一张图片。
    5. 海康内核进行了linux上的实验,可以正常播放。
    6. ffmpeg内核增加保存到MP4。
    7. 本地文件回放vlc部分增加进度切换等。
    8. 悬浮条关闭按钮增加实际处理,之前只是打印消息。
    9. 改进了vlc和mpv的事件回调机制,使其同时支持qt4+qt5。

    V20200620

    1. 增加了opengl显示实时视频,CPU占用极低。
    2. 增加了地图上设备点位置的调整。
    3. 设备点双击弹出实时视频预览。
    4. 增加GPS运动轨迹显示。
    5. ffmpeg解码类增加了音频播放,采用的QAudioOutput。

    V20191105

    1. 增加云台控制功能,可以上下左右等八个方位控制云台,默认采用相对移动,云台中间按下表示复位。
    2. 系统设置增加码流类型选择,默认子码流,切换完自动应用。
    3. 云台控制增加速度功能,值越大,速度越快。
    4. 增加焦距控制,可放大缩小,速度也可控制。

    1 用户登录退出

    1.1 用户登录

      系统默认开启了自动登录,可以在系统设置中将自动登录按钮关闭即可,可以在用户登录界面勾选记住密码和自动登录复选框,如果勾选了记住密码,则下次弹出的登录窗体会自动把最后一次的密码填进去,如果勾选了自动登录,则直接以上一次的用户登录到系统。

    1.2 用户退出

      如果开启了自动登录机制,在单击右上角的关闭按钮,会弹出用户退出窗体,需要输入密码才能退出,也可以在代码中屏蔽掉自动登录的判断,这样任何时候关闭系统都会弹出窗体要求输入密码来退出。用户登录和退出内置了超级密码 a ,在记不住密码或者密码丢失的时候使用。

    2 主界面操作

    @@ -702,7 +702,7 @@ header, .context-menu, .megamenu-content, footer{   设备控制部分,目前可以获取和设置图片参数、手动校时、重启设备等,上面那一堆复选框对应功能需要用厂家sdk去实现,后期可能会增加一些onvif能够处理的功能。和云台控制操作一样,操作前也是需要选中某个通道,然后才是对选中的通道进行设备控制,比如图片参数中的明亮度、对比度、饱和度。

    2.12 报警订阅

      本系统默认支持海康摄像机的报警事件订阅,默认已经订阅,如果摄像机已经开启了报警事件的话,默认一般是关闭的,比如摄像机后面的开关量输入报警接口,需要web页面进去设置开启。报警订阅走的是onvif协议,默认测试过海康的摄像机,其余摄像机有些没有测试成功,后期会详细查下原因并改进,会持续更新完善。

    2.13 悬浮条操作

      本系统中将视频显示这块都封装成了一个控件,每个视频控件都有自己独立的悬浮条,悬浮条的位置可以自行修改两三行代码调整,默认悬浮条在顶部,自动拉伸填充显示,你也可以改成左侧右侧等位置显示,高度可调。悬浮条是一排按钮组成,具体按钮什么名称标识符和功能,可以自定义,控件的封装只是默认放了一排按钮,除了关闭按钮实现了功能外,其余都是信号的形式发出去的,具体操作由程序员本身根据不同的厂家来定义不同的功能。

    2.14 标签设置

    -  视频控件已经将OSD标签封装好了,默认提供两路OSD设置,每个OSD都可以设置是否启用、位置、文字内容、文字颜色、图片、文字大小等,这些设置都提供了友好的接口设置。

    在frmvideopanel.cpp文件中有设置示例,默认注释的,参数含义如下:

    1. 设置标签可见:setOSD1Visible
    2. 设置文字大小:setOSD1FontSize
    3. 设置文本文字:setOSD1Text
    4. 设置文字颜色:setOSD1Color
    5. 设置标签格式:setOSD1Format
    6. 设置标签位置:setOSD1Position