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后台系统,通过本系统用户可以很方便的管理每个通道,在地图上动态设置不同的摄像机地址,方便地管理登录、操作日志,有些功能仍在开发,需要代码的朋友可以私聊,也可以找我做定制化开发。