# WebSocketCamera **Repository Path**: ai-code_4/web-socket-camera ## Basic Information - **Project Name**: WebSocketCamera - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-11 - **Last Updated**: 2026-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebSocketCamera 基于 WebSocket 的多摄像头录像控制服务 ## 项目简介 本项目是一个本地服务程序,通过 WebSocket 接口接收远程控制指令,实现对计算机所连接的所有摄像头进行录像控制。该服务自动检测可用摄像头数量,并为每个摄像头提供独立的开始/停止录像、状态查询等功能,满足远程监控、多路录制等场景需求。 ## 功能特性 ### 摄像头管理 - 自动检测并枚举所有已连接的摄像头 - 支持热插拔检测,实时更新设备列表 - WebSocket 推送设备变更通知 ### 录像控制 - 每个摄像头独立的开始/停止录像控制 - 暂停/恢复录像支持 - 可配置录像参数:分辨率、帧率、编码格式 - 录像分段存储(支持按时间自动分割文件) - 实时状态反馈与推送 ### 视频预览(可选) - 支持实时视频流预览 - 通过 WebSocket 二进制消息传输视频帧 ### 文件管理 - 录像文件列表查询 - 支持按摄像头、时间范围筛选 ## WebSocket 接口 ### 通信协议 - 使用 WebSocket 作为控制通道 - 消息格式采用 JSON ### 主要接口 | 操作 | 说明 | |------|------| | `getDevices` | 获取摄像头列表 | | `startRecord` | 开始录像 | | `stopRecord` | 停止录像 | | `pauseRecord` | 暂停录像 | | `resumeRecord` | 恢复录像 | | `getStatus` | 查询设备状态 | ### 请求格式 ```json { "requestId": "唯一请求ID", "action": "操作名称", "params": {} } ``` ### 响应格式 ```json { "requestId": "对应请求ID", "code": 0, "message": "描述信息", "data": {} } ``` ## 错误码 | 错误码 | 说明 | |--------|------| | 1001 | 设备不存在 | | 1002 | 设备正忙 | | 1003 | 录像参数错误 | | 1004 | 文件写入失败 | ## 技术栈 - **开发语言**:C++ 或 Python - **视频采集**:OpenCV / FFmpeg / DirectShow / MediaFoundation - **WebSocket**:websocketpp / Tornado / Socket.IO ## 系统要求 - 操作系统:Windows 10/11(推荐)、macOS、Linux - 摄像头:支持 UVC 标准摄像头 ## 安装说明 1. 克隆项目到本地 2. 安装依赖库(OpenCV、FFmpeg 等) 3. 编译项目 4. 运行可执行文件 ## 使用示例 ```javascript // 连接 WebSocket const ws = new WebSocket('ws://localhost:8080'); // 获取摄像头列表 ws.send(JSON.stringify({ requestId: 'req1', action: 'getDevices', params: {} })); // 开始录像 ws.send(JSON.stringify({ requestId: 'req2', action: 'startRecord', params: { deviceId: 'cam0', resolution: '1920x1080', fps: 30 } })); // 停止录像 ws.send(JSON.stringify({ requestId: 'req3', action: 'stopRecord', params: { deviceId: 'cam0' } })); ``` ## 贡献指南 欢迎提交 Issue 和 Pull Request。 ## 许可证 MIT License