当前位置: 首页 > news >正文

python3GUI--视频监控管理平台 By:PyQt5(详细讲解)

文章目录

  • 一.前言
  • 二.相关知识
    • 1.PyQt5
    • 2.RTSP协议
        • 📌 简介:
        • 🧩 特点:
        • 📡 工作方式:
      • 2. **RTMP(Real-Time Messaging Protocol)**
        • 📌 简介:
        • 🧩 特点:
        • 🔁 变种:
      • 3. **其他流媒体协议**
      • 🔄 简单对比表:
    • 3.NVR
  • 三.展示
    • 1.主界面(视频监控)
    • 2.视频回放
      • 1.本地回放
      • 2.远程回放
      • 3.图片回放
    • 3.电子地图
    • 4.日志查询
      • 1.操作日志
      • 2.登录日志
    • 5.系统设置
  • 五.个人心得
    • 1.关于系统开发
    • 2.关于项目
  • 六.总结



在这里插入图片描述

一.前言

本次使用PyQt5制作一款视频监控管理平台软件,支持包括不限于rtsp、rtmp等主流协议,软件包括多个主页面以及子页面,我会在本篇尽可能多的展示细节,这里还是希望大家亲自体验!
项目仍在开发,但是主要核心功能已经实现,让大家先睹为快!

二.相关知识

1.PyQt5

PyQt5 是 Python 绑定 Qt 应用程序框架的一个库,它用于开发跨平台的桌面应用程序。PyQt5 由 Riverbank Computing 维护,基于 Qt 5 框架,提供了丰富的 GUI 组件和强大的功能,包括窗口控件、布局管理、信号槽机制、多线程支持、绘图、网络编程等。
PyQt5 的特点:
✅ 跨平台支持:可在 Windows、macOS 和 Linux 上运行。
✅ 强大的 GUI 组件:提供 Qt Designer 可视化设计 UI,支持拖拽控件布局。
✅ 信号槽机制:提供高效的事件处理系统,使 UI 响应更加流畅。
✅ QSS 样式表:类似 CSS,可以美化 UI 组件。
✅ 集成多媒体支持:基于 QtMultimedia,可实现音频、视频播放功能。
摘自chat GPT

在这里插入图片描述

2.RTSP协议

RTSP(Real Time Streaming Protocol)和 RTMP(Real-Time Messaging Protocol)都是用于音视频流媒体传输的协议,各自有不同的应用场景和技术特点。以下是对 RTSP、RTMP 以及其他相关流媒体协议的介绍:


📌 简介:
  • RTSP 是由 RealNetworks 和 Netscape 提出的流媒体控制协议。
  • 类似 HTTP,它是一个 文本协议,但它不是用来传输数据的,而是用来控制流媒体服务器的播放行为(如播放、暂停、快进、停止等)。
  • 实际的音视频数据通常通过 RTP(Real-time Transport Protocol) 传输。
🧩 特点:
  • 主要用于 点播系统(VoD)
  • 支持 双向控制(播放、暂停、拖动)
  • 常用于 IP 摄像头、监控系统中。
📡 工作方式:

RTSP 负责发出播放命令(类似遥控器),而 RTP/RTCP 才是数据传输的“管道”。


2. RTMP(Real-Time Messaging Protocol)

📌 简介:
  • RTMP 是 Adobe 推出的协议,最初用于 Flash 播放器。
  • 它是一个基于 TCP 的协议,用于高性能、低延迟的视频直播。
🧩 特点:
  • 支持 直播和点播
  • 延迟较低,传输稳定。
  • 支持音频、视频、数据流复用。
  • 目前仍广泛用于推流(如 OBS → 推流服务器),但客户端播放支持逐渐减少(Flash 弃用)。
🔁 变种:
  • RTMPS:基于 SSL 的加密版 RTMP。
  • RTMPE:Adobe 自定义的加密版本。

3. 其他流媒体协议

协议特点应用场景
HLS(HTTP Live Streaming)苹果开发,基于 HTTP,分片传输(M3U8 + TS),延迟较高(通常10s+)直播、点播,支持移动端
DASH(MPEG-DASH)类似 HLS,但标准开放,支持自适应码率国际标准,YouTube 使用
SRT(Secure Reliable Transport)开源、低延迟、强抗丢包、支持加密广播级视频传输
WebRTC实时通信协议,点对点,超低延迟视频会议、直播连麦

🔄 简单对比表:

协议延迟控制能力适用场景是否加密支持
RTSP中等强(支持快进、暂停)安防监控、点播可结合 TLS
RTMP中等直播推流RTMPS 支持
HLS移动端直播、点播
SRT高质量直播传输
WebRTC极低连麦、会议

3.NVR

NVR(网络视频录像机)是一种用于接收和存储网络摄像头视频的设备,广泛应用于监控系统中。它通过网络与 IP 摄像头连接,支持多路视频的实时预览、录像和回放,常用于家庭、小区、商铺、企业等场所的视频安全管理。

在这里插入图片描述

三.展示

1.主界面(视频监控)

软件启动后进入系统的主界面,主界面包括多个显示区域,软件支持多路的视频通道显示,软件启动后采用9路通道显示,显示的画面为测试流地址,具体使用了测试的流地址:rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid。主界面包括导航区域、标题区域、窗口控制区域、主画面区域、通道管理区域、设备列表区域、云台控制区域(如果支持的话)、操作信息显示区域,主界面内容丰富。用户可以对指定的通道进行管理操作,具体的操作内容有:截图、静音、全屏、关闭,用户在设备列表中可以右击所选通道删除指定通道,软件右上角显示实时的事件和CPU、内存利用率,便于用户查看软件的相关数据指标变化。
另外,用户在切换通道数量或者内容区域时,软件会自动关闭、开启通道,采用多线程的方式避免了资源开销和带宽占用。
在这里插入图片描述

2.视频回放

1.本地回放

在本地回放子页面中,用户可以选择本地的视频文件进行播放,软件会自动进行解码、播放目标视频
具体的操作流程是:右击-视频操作-添加视频-选择视频文件-确定开始播放,这里以一个本地视频文件作为例子,大家可以自行拓展。
在这里插入图片描述

2.远程回放

在此页面,用户可以右击添加一个网络(局域网)地址,用户也可以自行添加一个包括但是不限于的地址:m3u8、rtmp、rtsp等,这里仍然采用测试的流地址,给大家演示~
在这里插入图片描述

这里我给大家演示:如何在通道2添加指定的在线流地址,在播放过程中用户可以进行播放暂停控制、停止、静音还原操作。
在这里插入图片描述

3.图片回放

在此页面系统会自动扫描用户当天在通道的截图文件,以轮播图的方式展示所有截图内容,方便用户查看回放图片内容。

在这里插入图片描述

3.电子地图

电子地图页面只有一个子页面,但是此页面功能强大,支持7个地图视图引擎,动态回显地图缩放因数、中心经纬度,用户可以在地图上进行监控硬件的标记,可以自定义标记点样式,动态操作监控摄像头列表。

在这里插入图片描述
下图演示了改变地图引擎、地图选点并且自定义了摄像头样式的效果
在这里插入图片描述

4.日志查询

1.操作日志

此页面展示了所有用户在本系统中的操作记录,
在这里插入图片描述

2.登录日志

这个页面展示了所有登录系统用户的信息
在这里插入图片描述

5.系统设置

此页面还在开发,敬请期待…

五.个人心得

1.关于系统开发

本系统是本人闲暇时间开发出来的,总代码量5千多行,系统界面简约,科技风格,所有的组件都是自定义组件,手搓组件,本系统不是QT设计师设计的!

2.关于项目

本项目的代码结构见下图:
data主要存储数据库、截图等数据,src为本系统的主要代码目录,conf为主要配置、engine是核心引擎、resource是所用qrc资源、threads里是我们的核心线程类、utils是主要的工具包、widgets是主要UI部分还有自定义组件
程序以main.py为入口,右击此入口即可启动进入主界面

目录描述
data存储数据库、截图等数据
src系统的主要代码目录
conf存放主要配置文件
engine系统核心引擎部分
resource存放所用的 .qrc 资源文件
threads核心线程类所在目录
utils存放主要工具类或工具包
widgets包含主要 UI 部分和自定义组件

在这里插入图片描述

六.总结

本次通过本篇博客和大家分享了我用PyQt5开发的视频监控管理平台,这是一款通用的NVR后台系统,通过本系统用户可以很方便的管理每个通道,在地图上动态设置不同的摄像机地址,方便地管理登录、操作日志,有些功能仍在开发,需要代码的朋友可以私聊,也可以找我做定制化开发。

在这里插入图片描述

相关文章:

  • Python-pandas-json格式的数据操作(读取数据/写入数据)
  • 天车定位技术方案(基于无线脉冲技术)
  • C++11新特性_范围-based for 循环
  • 长成一个西瓜
  • 【业务领域】电脑网卡是主板还是cpu(主板的网卡是什么意思)
  • Sigmoid函数导数推导详解
  • 拆解 browser-use 项目——深入理解 Agent 层
  • CUDA从入门到放弃
  • 小结:ipsec-ike
  • 使用 MCP(模型上下文协议)和 Claude 在 Node.js 中构建聊天应用程序
  • Learning vtkjs之DepthTest
  • 21.2Linux中的LCD驱动实验(驱动)_csdn
  • [操作系统] 线程互斥
  • 大模型 Function Call
  • Unity SpriteEditor(精灵图片编辑器)
  • 24.Linux中RTC的驱动实验_csdn
  • 1.67g 雨晨 22635.5305 Windows 11 企业版 23H2 极速增强版
  • 边缘计算革命:大模型轻量化部署全栈实战指南
  • 机器人--底盘
  • 链表系列一>合并 k 个升序链表
  • 五一当天1372对新人在沪喜结连理,涉外婚姻登记全市铺开
  • 共绘“彩色上海”,IP SH艺术共创沙龙首期圆满举办
  • 青海西宁市城西区副区长于媛媛主动投案,接受审查调查
  • 节前A股持续震荡,“五一”假期持股还是持币过节胜率更高?
  • 南部战区位南海海域进行例行巡航
  • 出行注意防晒补水,上海五一假期以多云天气为主最高33℃