Files
multi_camera/README.md

171 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 多摄像头网格布局监控系统
一个基于Flask的Web应用用于实时监控多个摄像头流并以网格布局展示。支持动态添加/删除摄像头、实时画面显示、日志记录等功能。
## 功能特性
- **多摄像头支持**可同时监控最多6个摄像头可配置
- **网格布局**自适应网格展示支持1x1到3x3布局。
- **实时画面**通过RTSP流获取实时视频低延迟显示。
- **摄像头管理**提供RESTful API动态管理摄像头启动/停止/添加/删除)。
- **日志系统**:自动记录运行日志到`./logs/multi_camera.log`,支持日志轮转。
- **环境配置**:通过环境变量灵活配置,无需修改代码。
- **无健康监控**已移除CPU/内存监控功能,专注于核心监控。
- **无认证**:已移除登录和令牌认证,简化访问。
## 系统要求
- Python 3.8+
- Flask 2.3+
- OpenCV (opencv-python)
- 其他依赖见`requirements.txt`
## 安装步骤
1. **克隆仓库**
```bash
git clone <repository-url>
cd multi_camera_project_v0.1
```
2. **创建虚拟环境(可选)**
```bash
python3 -m venv venv
source venv/bin/activate # Linux/Mac
# 或 venv\Scripts\activate # Windows
```
3. **安装依赖**
```bash
pip install -r requirements.txt
```
4. **环境配置**
- 复制`.env.example`为`.env`
```bash
cp .env.example .env
```
- 编辑`.env`文件设置你的摄像头RTSP地址和其他参数
```
BASE_URL=http://10.80.0.2:5045
FLASK_DEBUG=False
PORT=5002
HOST=0.0.0.0
CAMERA_URLS=rtsp://admin:password@192.168.1.101:554/stream1,rtsp://...
```
注意:`CAMERA_URLS`是以逗号分隔的RTSP URL列表最多支持6个摄像头。
## 运行应用
### 开发模式
```bash
python3 run.py
```
访问 http://localhost:5002 查看网格监控界面。
### 生产部署
建议使用Gunicorn或uWSGI作为WSGI服务器
```bash
gunicorn -w 4 -b 0.0.0.0:5002 "app:create_app()"
```
## 项目结构
```
multi_camera_project_v0.1/
├── app/ # Flask应用
│ ├── __init__.py # 应用工厂和日志配置
│ ├── config.py # 配置变量(从环境变量读取)
│ ├── camera_manager.py # 摄像头管理类
│ ├── routes/
│ │ └── main.py # 路由定义API和页面
│ └── templates/
│ └── index.html # 前端网格页面
├── static/ # 静态资源
│ ├── css/style.css
│ └── js/app.js
├── logs/ # 日志目录(自动创建)
├── .env.example # 环境变量示例
├── .env # 实际环境变量(本地,不提交)
├── requirements.txt # Python依赖
├── run.py # 启动脚本
└── README.md # 本文档
```
## API接口
### 获取摄像头状态
```
GET /api/cameras
```
返回所有摄像头的状态ID、URL、是否活跃、最后帧时间
### 启动/停止摄像头
```
POST /api/camera/<int:camera_id>/start
POST /api/camera/<int:camera_id>/stop
```
启动或停止指定ID的摄像头。
### 添加摄像头
```
POST /api/camera/add
Content-Type: application/json
{
"url": "rtsp://..."
}
```
添加一个新的摄像头最多6个
### 删除摄像头
```
DELETE /api/camera/<int:camera_id>
```
删除指定ID的摄像头。
### 获取实时帧
```
GET /api/camera/<int:camera_id>/frame
```
返回指定摄像头的最新JPEG图像用于前端显示
## 配置说明
- `BASE_URL`前端访问的基础URL用于构建API端点。
- `FLASK_DEBUG`Flask调试模式生产环境设为`False`。
- `PORT`服务端口默认5002。
- `HOST`:绑定地址,`0.0.0.0`允许外部访问。
- `CAMERA_URLS`摄像头RTSP URL列表用逗号分隔。
## 日志
日志文件位于`./logs/multi_camera.log`每天自动轮转保留最近10个日志文件。
## 常见问题
1. **摄像头画面不显示**
- 检查RTSP URL是否正确确保网络可达。
- 检查OpenCV是否支持RTSP可能需要编译FFmpeg支持
2. **端口占用**
- 修改`.env`中的`PORT`变量,然后重启应用。
3. **依赖安装失败**
- 确保已安装Python开发工具如`python3-dev`、`libopencv-dev`)。
## 版本历史
- v0.1 (2025-12-13)
- 移除健康监控CPU/内存)功能。
- 移除Docker和启动脚本。
- 移除认证相关代码登录、SECRET_KEY
- 配置日志目录为`./logs`。
- 清理冗余代码和敏感信息。
## 许可证
本项目仅供内部使用,未经许可不得分发。
## 贡献
欢迎提交Issue和Pull Request。