# 项目抽取监控功能 **Repository Path**: LPKW/monitorServer ## Basic Information - **Project Name**: 项目抽取监控功能 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-30 - **Last Updated**: 2025-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, SSH, WebSocket, ffmpeg, 多线程 ## README # monitorServer `monitorServer` 是一个基于 Spring Boot 的监控服务器项目,主要用于处理和转发来自 RTSP 流的视频帧数据。该项目通过 WebSocket 协议将视频帧实时推送给客户端,支持多个视频流的同时处理,并包含线程池管理、帧缓存池、简单的加密工具等模块。 --- ## 🚀 功能特性 - **WebSocket 实时推送**:通过 WebSocket 协议将视频帧数据实时推送给前端客户端。 - **RTSP 视频流处理**:支持从 RTSP 地址拉取视频流并进行帧提取和转发。 - **线程池管理**:使用线程池来高效管理生产者和消费者线程,提升并发处理能力。 - **帧缓存池**:通过对象池技术减少频繁创建和销毁帧对象带来的性能损耗。 - **简单加密工具**:提供基于 XOR 的简易字符串加密和解密工具。 - **日志与异常处理**:完善的日志记录和 WebSocket 连接异常处理机制。 --- ## 🧱 核心组件 - `FrameWebSocketHandler`:WebSocket 处理器,管理客户端连接并发送视频帧。 - `VideoMonitorStreamService`:视频流服务,管理线程池与视频流任务。 - `VideoMonitorStreamTask`:视频流任务,负责拉取和消费视频帧。 - `FrameDataPool`:帧对象池,用于复用帧对象以提高性能。 - `SimpleEncryptorUtil`:简易加密工具类,用于字符串的加密与解密。 --- ## 🛠️ 技术栈 - Java 8+ - Spring Boot - WebSocket - FFmpeg(用于视频帧处理) - ThreadPoolExecutor - BlockingQueue - ByteArrayOutputStream - XOR 加密算法 --- ## 📦 项目结构 ``` src/ ├── main/ │ ├── java/ │ │ └── com/zn/ │ │ ├── MonitorServerApplication.java # Spring Boot 启动类 │ │ └── monitor/ │ │ ├── bo/ # 数据对象 │ │ │ └── FrameDataBo.java │ │ ├── config/ # 配置类 │ │ │ └── WebSocketConfig.java │ │ ├── handler/ # WebSocket 处理器 │ │ │ └── FrameWebSocketHandler.java │ │ ├── pool/ # 帧对象池 │ │ │ └── FrameDataPool.java │ │ ├── service/ # 视频流服务 │ │ │ └── VideoMonitorStreamService.java │ │ ├── task/ # 视频流任务 │ │ │ └── VideoMonitorStreamTask.java │ │ └── utils/ # 工具类 │ │ ├── SimpleEncryptorUtil.java │ │ └── ThreadFactoryWithName.java │ ├── resources/ │ │ ├── application.yml # 配置文件 │ │ └── logback-spring.xml # 日志配置 ``` --- ## 🧪 使用说明 1. **启动项目** ```bash mvn spring-boot:run ``` 2. **连接 WebSocket** 客户端可通过 WebSocket 连接至服务器,并订阅特定视频流 ID。 3. **开始视频流** 向服务端发送视频流 ID 和 RTSP 地址,服务端将开始拉取并推送视频帧。 4. **停止视频流** 通过流 ID 停止对应视频流的处理。 --- ## 🔐 加密工具 使用 `SimpleEncryptorUtil` 可对字符串进行简单加密和解密: ```java String encrypted = SimpleEncryptorUtil.encrypt("hello"); String decrypted = SimpleEncryptorUtil.decrypt(encrypted); ``` --- ## 🤝 贡献指南 欢迎提交 Pull Request 或提出 Issue。请遵循项目代码风格和结构规范。 --- ## 📄 许可证 本项目采用 MIT License。详见 [LICENSE](LICENSE) 文件。