diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..12799dc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,32 @@ +# 忽略文件 +.git +.gitignore +.env +.env.example +__pycache__ +*.pyc +*.pyo +*.pyd +.Python +*.so +*.egg +*.egg-info +dist +build +logs +*.log +*.sqlite +*.db +*.cache +.coverage +.pytest_cache +.mypy_cache +.vscode +.idea +*.swp +*.swo +*~ +.DS_Store +Thumbs.db +node_modules +static/node_modules \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 46c9298..0000000 --- a/README.md +++ /dev/null @@ -1,171 +0,0 @@ -# 多摄像头网格布局监控系统 - -一个基于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 - 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//start -POST /api/camera//stop -``` -启动或停止指定ID的摄像头。 - -### 添加摄像头 -``` -POST /api/camera/add -Content-Type: application/json -{ - "url": "rtsp://..." -} -``` -添加一个新的摄像头(最多6个)。 - -### 删除摄像头 -``` -DELETE /api/camera/ -``` -删除指定ID的摄像头。 - -### 获取实时帧 -``` -GET /api/camera//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。 \ No newline at end of file