# videoMonitiring **Repository Path**: UBG/video-monitiring ## Basic Information - **Project Name**: videoMonitiring - **Description**: 基于Qt、FFmpeg、OpenCV的在线视频监控 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2025-10-10 - **Last Updated**: 2025-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频监控系统 (Video Monitoring System) ## 项目概述 这是一个基于Qt框架开发的C/S架构视频监控系统,包含客户端(Client)和服务器端(Server)两个独立模块。系统支持实时视频流传输、用户注册登录、人脸检测、视频录制等功能。 ## 系统架构 ``` 视频监控系统 ├── Client (客户端) │ ├── 用户登录/注册界面 │ ├── 视频播放界面 │ ├── FFmpeg解码器 │ └── TCP客户端通信 └── Server (服务器端) ├── 管理员登录界面 ├── 视频采集界面 ├── FFmpeg编码器 ├── OpenCV人脸检测 ├── TCP服务器 └── SQLite数据库 ``` ## 功能特性 ### 客户端功能 - **用户认证**: 支持用户注册和登录 - **实时视频播放**: 接收并播放服务器推送的视频流 - **网络通信**: 基于TCP协议的稳定网络连接 - **界面切换**: 登录、注册、工作界面的无缝切换 ### 服务器端功能 - **视频采集**: 支持摄像头实时视频采集 - **视频编码**: 使用FFmpeg进行H.264编码 - **视频推流**: 将编码后的视频流推送给客户端 - **人脸检测**: 集成OpenCV进行实时人脸检测 - **视频录制**: 支持视频录制和保存 - **数据库管理**: SQLite数据库存储用户信息和视频记录 - **网络服务**: TCP服务器处理多客户端连接 ## 技术栈 ### 开发框架 - **Qt 5/6**: 跨平台GUI框架 - **C++11/17**: 编程语言 ### 多媒体处理 - **FFmpeg 7.1.1**: 视频编解码库 - libavcodec: 编解码核心库 - libavformat: 封装格式处理 - libswscale: 视频像素格式转换 - libavutil: 工具库 - libavdevice: 设备输入输出 ### 计算机视觉 - **OpenCV 4.5.5**: 计算机视觉库 - 人脸检测 (Cascade Classifier) - 图像处理 - 实时视频分析 ### 网络通信 - **Qt Network**: TCP客户端/服务器通信 - **Qt Multimedia**: 多媒体处理 ### 数据存储 - **SQLite**: 轻量级数据库 - **Qt SQL**: 数据库操作接口 ## 项目结构 ### Client 目录结构 ``` Client/ ├── main.cpp # 程序入口 ├── widget.h/cpp # 主窗口类 ├── workwidget.h/cpp # 工作界面类 ├── registerpage.h/cpp # 注册页面类 ├── ffmpegdecoder.h/cpp # FFmpeg解码器 ├── widget.ui # 主窗口UI设计 ├── workwidget.ui # 工作界面UI设计 ├── registerpage.ui # 注册页面UI设计 ├── Client.pro # Qt项目文件 └── ffmpeg7.1.1/ # FFmpeg库文件 ├── include/ # 头文件 └── lib/ # 库文件 ``` ### Server 目录结构 ``` Server/ ├── main.cpp # 程序入口 ├── widget.h/cpp # 主窗口类 ├── workwidget.h/cpp # 工作界面类 ├── registerpage.h/cpp # 注册页面类 ├── ffmpegencoder.h/cpp # FFmpeg编码器 ├── tcpserver.h/cpp # TCP服务器类 ├── widget.ui # 主窗口UI设计 ├── workwidget.ui # 工作界面UI设计 ├── registerpage.ui # 注册页面UI设计 ├── Server.pro # Qt项目文件 ├── ffmpeg7.1.1/ # FFmpeg库文件 │ ├── include/ # 头文件 │ └── lib/ # 库文件 └── OpenCV4.5.5/ # OpenCV库文件 ├── include/ # 头文件 └── x64/mingw/ # 库文件 ├── bin/ # 动态库 └── lib/ # 静态库 ``` ## 编译环境要求 ### 系统要求 - **操作系统**: Windows 10/11, Linux, macOS - **编译器**: MinGW-w64 (Windows), GCC (Linux), Clang (macOS) - **Qt版本**: Qt 5.12+ 或 Qt 6.0+ ### 依赖库 - **FFmpeg 7.1.1**: 视频编解码 - **OpenCV 4.5.5**: 计算机视觉 (仅服务器端) - **Qt模块**: - Qt Core - Qt GUI - Qt Widgets - Qt Network - Qt Multimedia - Qt Multimedia Widgets - Qt SQL ## 编译和运行 ### 1. 环境准备 确保已安装以下组件: - Qt开发环境 - MinGW编译器 (Windows) - FFmpeg库文件 - OpenCV库文件 (仅服务器端) ### 2. 编译客户端 ```bash cd Client qmake Client.pro make ``` ### 3. 编译服务器端 ```bash cd Server qmake Server.pro make ``` ### 4. 运行程序 ```bash # 先运行服务器端 ./Server # 再运行客户端 ./Client ``` ## 使用说明 ### 服务器端操作 1. **启动服务器**: 运行Server程序 2. **管理员登录**: 使用管理员账号登录 3. **视频采集**: 点击"开始采集"按钮启动摄像头 4. **视频推流**: 点击"开始推流"按钮开始向客户端推送视频 5. **人脸检测**: 启用人脸检测功能进行实时分析 6. **视频录制**: 点击"开始录制"保存视频文件 ### 客户端操作 1. **启动客户端**: 运行Client程序 2. **用户注册**: 新用户需要先注册账号 3. **用户登录**: 使用注册的账号登录 4. **连接服务器**: 自动连接到服务器 (默认IP: 127.0.0.1, 端口: 9999) 5. **观看视频**: 登录成功后自动接收并播放视频流 6. **切换用户**: 可以切换不同用户账号 ## 配置说明 ### 网络配置 - **默认IP**: 127.0.0.1 (本地测试) - **默认端口**: 9999 - **协议**: TCP ### 视频配置 - **分辨率**: 1280x720 (可配置) - **帧率**: 30 FPS - **编码格式**: H.264 - **像素格式**: YUV420P ### 数据库配置 - **数据库类型**: SQLite - **数据库文件**: 自动创建在程序运行目录 ## 性能优化 ### 客户端优化 - 使用独立线程进行视频解码 - 实现帧缓存机制减少延迟 - 网络连接状态监控和自动重连 ### 服务器端优化 - 多线程视频编码和推流 - 人脸检测性能优化 (每秒检测一次) - 视频录制异步处理 - 数据库操作优化 ## 故障排除 ### 常见问题 1. **编译错误**: 检查FFmpeg和OpenCV库路径配置 2. **运行时错误**: 确保所有依赖DLL文件在程序目录 3. **网络连接失败**: 检查防火墙设置和端口占用 4. **视频播放异常**: 检查摄像头权限和驱动 ### 调试信息 - 程序运行时会输出详细的调试信息 - 网络连接状态实时监控 - 视频编解码性能统计 ## 开发说明 ### 代码结构 - **模块化设计**: 每个功能模块独立封装 - **信号槽机制**: 使用Qt信号槽进行组件通信 - **多线程处理**: 视频处理使用独立线程避免界面阻塞 - **资源管理**: 完善的资源清理和内存管理 ### 扩展功能 - 支持添加更多视频格式 - 可扩展更多计算机视觉算法 - 支持多摄像头同时采集 - 可集成更多网络协议 ## 许可证 本项目仅供学习和研究使用。 ## 作者 yz ## 更新日志 - **v1.0**: 基础视频监控功能 - **v1.1**: 添加人脸检测功能 - **v1.2**: 优化网络通信稳定性 - **v1.3**: 添加视频录制功能 - **v1.4**: 性能优化和bug修复