# 监控摄像头插件 **Repository Path**: wenfeifei/plugin_camera ## Basic Information - **Project Name**: 监控摄像头插件 - **Description**: 这是用于超级美眉系统下的监控摄像头插件,可以接入多个品牌的摄像头设备,实现1、4、9、16屏的安保监控。 - **Primary Language**: NodeJS - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-03-25 - **Last Updated**: 2026-03-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 摄像头监控插件 一个功能完整的摄像头监控插件,支持多品牌摄像头接入、实时预览、截图、录像等功能。 ## 功能特性 ### 🎥 多品牌支持 - **海康威视 (Hikvision)** - 完整支持 - **大华 (Dahua)** - 完整支持 - **宇视 (Uniview)** - 完整支持 - **天地伟业 (Tiandy)** - 完整支持 - **宇石 (Yushi)** - 完整支持 - **通用RTSP** - 兼容其他品牌 ### 📹 核心功能 - ✅ 实时视频流预览 - ✅ 摄像头连接测试 - ✅ 高清截图保存 - ✅ 视频录像功能 - ✅ 设备状态监控 - ✅ 多码流支持(主码流/子码流) - ✅ WebSocket实时通信 - ✅ 响应式Web界面 ### 🛠️ 技术特性 - 基于FFmpeg的专业视频处理 - RTSP协议标准支持 - 数据库持久化存储 - RESTful API接口 - 模块化插件架构 - 权限控制和安全认证 ## 系统要求 ### 必需依赖 - **Node.js** >= 14.0 - **FFmpeg** >= 4.0 (必须安装并配置环境变量) - **MySQL** 数据库 ### 推荐配置 - CPU: 4核心以上 - 内存: 8GB以上 - 存储: 100GB以上可用空间 - 网络: 千兆以太网 ## 安装配置 ### 1. FFmpeg安装 #### Windows系统 ```bash # 下载FFmpeg并解压到C:\ffmpeg # 添加C:\ffmpeg\bin到系统PATH环境变量 # 验证安装 ffmpeg -version ``` #### Linux系统 ```bash # Ubuntu/Debian sudo apt update sudo apt install ffmpeg # CentOS/RHEL sudo yum install epel-release sudo yum install ffmpeg # 验证安装 ffmpeg -version ``` ### 2. 插件配置 在插件管理页面配置以下参数: | 配置项 | 默认值 | 说明 | |--------|--------|------| | FFmpeg路径 | `ffmpeg` | FFmpeg可执行文件路径 | | 最大摄像头数 | `50` | 系统支持的最大摄像头数量 | | 截图存储路径 | `./uploads/camera/screenshots` | 截图文件保存目录 | | 录像存储路径 | `./uploads/camera/records` | 录像文件保存目录 | | 流超时时间 | `30000` | 视频流连接超时时间(毫秒) | | WebSocket端口 | `8080` | WebSocket服务端口 | ### 3. 摄像头配置 #### 海康威视摄像头 ```json { "name": "前门摄像头", "brand": "hikvision", "ip": "192.168.1.100", "port": 554, "username": "admin", "password": "password123", "channel": 1, "stream_type": "main" } ``` #### 大华摄像头 ```json { "name": "后门摄像头", "brand": "dahua", "ip": "192.168.1.101", "port": 554, "username": "admin", "password": "password123", "channel": 1, "stream_type": "main" } ``` ## 使用说明 ### 1. 添加摄像头 1. 进入摄像头监控页面 2. 点击「添加摄像头」按钮 3. 填写摄像头信息: - **名称**: 摄像头显示名称 - **品牌**: 选择摄像头品牌 - **IP地址**: 摄像头网络地址 - **端口**: RTSP服务端口(通常554) - **用户名**: 登录用户名 - **密码**: 登录密码 - **通道号**: 摄像头通道(通常1) - **码流类型**: 主码流(高清)/子码流(流畅) - **安装位置**: 摄像头安装位置描述 4. 点击「测试连接」验证配置 5. 保存摄像头配置 ### 2. 视频预览 - 点击摄像头卡片上的「预览」按钮 - 系统将建立RTSP连接并显示实时画面 - 支持多路同时预览 - 点击「停止」按钮结束预览 ### 3. 截图功能 - 点击「截图」按钮进行实时截图 - 截图文件自动保存到配置的目录 - 支持高清截图(基于主码流) - 截图记录保存到数据库 ### 4. 录像功能 - 点击「开始录像」按钮开始录制 - 录像过程中按钮显示为「停止录像」 - 支持手动停止或自动停止 - 录像文件保存为MP4格式 - 录像记录保存到数据库 ### 5. 设备管理 - 查看摄像头在线状态 - 编辑摄像头配置 - 删除不需要的摄像头 - 批量操作支持 ## API接口 ### 摄像头管理 ```javascript // 获取摄像头列表 GET /api/camera/list // 添加摄像头 POST /api/camera/add { "name": "摄像头名称", "brand": "hikvision", "ip": "192.168.1.100", "port": 554, "username": "admin", "password": "password", "channel": 1, "stream_type": "main", "location": "前门", "description": "描述信息" } // 测试连接 POST /api/camera/test { "camera_id": "摄像头ID" } // 截图 POST /api/camera/screenshot { "camera_id": "摄像头ID" } // 开始录像 POST /api/camera/record/start { "camera_id": "摄像头ID", "duration": 300, "quality": "medium" } // 停止录像 POST /api/camera/record/stop { "camera_id": "摄像头ID" } ``` ### WebSocket接口 ```javascript // 连接WebSocket const ws = new WebSocket('ws://localhost:8080'); // 请求视频流 ws.send(JSON.stringify({ type: 'start_stream', camera_id: '摄像头ID' })); // 停止视频流 ws.send(JSON.stringify({ type: 'stop_stream', camera_id: '摄像头ID' })); ``` ## 故障排除 ### 常见问题 #### 1. 摄像头连接失败 - 检查网络连接和IP地址 - 验证用户名密码是否正确 - 确认RTSP端口是否开放 - 检查摄像头是否支持RTSP协议 #### 2. 视频流无法显示 - 检查FFmpeg是否正确安装 - 验证WebSocket连接是否正常 - 查看浏览器控制台错误信息 - 检查防火墙设置 #### 3. 截图/录像失败 - 确认存储目录权限 - 检查磁盘空间是否充足 - 验证FFmpeg版本兼容性 #### 4. 性能问题 - 减少同时预览的摄像头数量 - 使用子码流降低带宽占用 - 优化服务器硬件配置 ### 日志查看 ```bash # 查看插件日志 tail -f logs/camera.log # 查看FFmpeg日志 tail -f logs/ffmpeg.log # 查看WebSocket日志 tail -f logs/websocket.log ``` ## 开发说明 ### 目录结构 ``` camera/ ├── plugin.json # 插件配置文件 ├── index.js # 插件主文件 ├── README.md # 说明文档 ├── api_face_client/ # 客户端API │ └── camera_manage/ # 摄像头管理API │ ├── api.json # API配置 │ ├── param.json # 参数配置 │ └── index.js # API实现 ├── api_face_web/ # Web页面 │ └── index/ # 监控页面 │ ├── api.json # 页面配置 │ ├── index.html # 页面模板 │ └── index.js # 页面逻辑 ├── static/ # 静态资源 │ ├── static.json # 静态资源配置 │ └── static.js # 静态资源处理 ├── websocket/ # WebSocket服务 │ └── camera_stream.js # 视频流处理 ├── utils/ # 工具类 │ └── camera_utils.js # 摄像头工具 ├── db/ # 数据库配置 │ ├── camera.db.json # 摄像头表 │ └── camera_record.db.json # 录像记录表 └── logo.svg # 插件图标 ``` ### 扩展开发 #### 添加新品牌支持 在 `utils/camera_utils.js` 的 `generateRtspUrl` 方法中添加新的品牌格式: ```javascript case 'newbrand': return `rtsp://${username}:${password}@${ip}:${port}/custom/path`; ``` #### 自定义录像格式 修改 `startRecording` 方法中的FFmpeg参数: ```javascript const args = [ '-i', rtspUrl, '-c:v', 'libx265', // 使用H.265编码 '-crf', '20', outputPath ]; ``` ## 版本历史 ### v1.0.0 (2024-01-01) - 初始版本发布 - 支持海康威视、大华等主流品牌 - 实现基础的预览、截图、录像功能 - 提供Web管理界面 ## 技术支持 如有问题或建议,请联系技术支持团队。 ## 许可证 MIT License - 详见LICENSE文件