# 数据库集成功能说明 本项目已扩展支持MySQL和SQL Server数据库,用于管理摄像头信息,实现动态配置和实时预览功能。 ## 功能特性 - ✅ 支持MySQL和SQL Server数据库 - ✅ 摄像头信息的增删改查 - ✅ Web界面管理摄像头 - ✅ 实时预览新增摄像头 - ✅ 数据库与配置文件双模式支持 - ✅ 自动数据库表创建 - ✅ 数据库连接状态监控 ## 配置说明 ### 1. 配置文件设置 在 `config.json` 中添加数据库配置: ```json { "server": { "database_enabled": true, // ... 其他服务器配置 }, "database": { "enabled": true, "type": "mysql", "host": "localhost", "port": 3306, "username": "root", "password": "password", "database": "rtsp_cameras", "table_name": "cameras" } } ``` ### 2. 数据库类型配置 #### MySQL配置 ```json "database": { "enabled": true, "type": "mysql", "host": "localhost", "port": 3306, "username": "root", "password": "password", "database": "rtsp_cameras", "table_name": "cameras" } ``` #### SQL Server配置 ```json "database": { "enabled": true, "type": "sqlserver", "host": "localhost", "port": 1433, "username": "sa", "password": "YourPassword123", "database": "rtsp_cameras", "table_name": "cameras" } ``` ## 数据库初始化 ### 1. 使用提供的SQL脚本 执行 `database_init.sql` 文件来创建数据库和表: ```bash # MySQL mysql -u root -p < database_init.sql # SQL Server sqlcmd -S localhost -U sa -P YourPassword123 -i database_init.sql ``` ### 2. 手动创建(MySQL) ```sql CREATE DATABASE rtsp_cameras CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE rtsp_cameras; CREATE TABLE cameras ( id VARCHAR(36) PRIMARY KEY, name VARCHAR(255) NOT NULL, ip VARCHAR(45) NOT NULL, username VARCHAR(100) DEFAULT NULL, password VARCHAR(255) DEFAULT NULL, rtsp_url VARCHAR(500) NOT NULL, enabled BOOLEAN DEFAULT TRUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` ### 3. 手动创建(SQL Server) ```sql CREATE DATABASE rtsp_cameras; GO USE rtsp_cameras; GO CREATE TABLE cameras ( id NVARCHAR(36) PRIMARY KEY, name NVARCHAR(255) NOT NULL, ip NVARCHAR(45) NOT NULL, username NVARCHAR(100) NULL, password NVARCHAR(255) NULL, rtsp_url NVARCHAR(500) NOT NULL, enabled BIT DEFAULT 1, created_at DATETIME2 DEFAULT GETDATE(), updated_at DATETIME2 DEFAULT GETDATE() ); ``` ## API接口 ### 摄像头管理接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/cameras` | 获取所有摄像头列表 | | POST | `/camera/add` | 添加新摄像头 | | GET | `/camera/{id}` | 获取单个摄像头信息 | | PUT | `/camera/{id}` | 更新摄像头信息 | | DELETE | `/camera/{id}` | 删除摄像头 | | POST | `/cameras/refresh` | 刷新摄像头列表 | | GET | `/database/status` | 获取数据库状态 | ### 请求示例 #### 添加摄像头 ```bash curl -X POST http://localhost:8083/camera/add \ -H "Content-Type: application/json" \ -d '{ "name": "测试摄像头", "ip": "192.168.1.100", "username": "admin", "password": "admin123", "rtsp_url": "rtsp://192.168.1.100:554/stream1", "enabled": true }' ``` #### 更新摄像头 ```bash curl -X PUT http://localhost:8083/camera/{camera_id} \ -H "Content-Type: application/json" \ -d '{ "name": "更新的摄像头名称", "ip": "192.168.1.101", "username": "admin", "password": "newpassword", "rtsp_url": "rtsp://192.168.1.101:554/stream1", "enabled": true }' ``` ## Web界面使用 ### 1. 访问摄像头管理页面 打开浏览器访问:`http://localhost:8083/pages/cameras` ### 2. 功能说明 - **摄像头列表**:显示所有摄像头的基本信息和状态 - **添加摄像头**:点击"添加摄像头"按钮,填写摄像头信息 - **编辑摄像头**:点击摄像头卡片上的"编辑"按钮 - **删除摄像头**:点击摄像头卡片上的"删除"按钮 - **实时预览**:点击摄像头卡片上的"预览"按钮 - **刷新列表**:点击"刷新"按钮重新加载摄像头列表 - **数据库状态**:页面顶部显示数据库连接状态 ## 运行模式 ### 1. 数据库模式 当 `database.enabled = true` 时: - 摄像头信息从数据库加载 - 所有配置变更保存到数据库 - 配置文件中的streams配置被忽略 ### 2. 配置文件模式 当 `database.enabled = false` 时: - 摄像头信息从config.json加载 - 配置变更保存到配置文件 - 数据库功能不可用 ### 3. 混合模式 可以在运行时动态切换模式,但建议重启应用以确保配置生效。 ## 依赖包 项目添加了以下Go依赖包: ```go // MySQL驱动 github.com/go-sql-driver/mysql v1.7.1 // SQL Server驱动 github.com/denisenkom/go-mssqldb v0.12.3 // UUID生成 github.com/google/uuid v1.3.0 ``` ## 安装依赖 ```bash go mod tidy ``` ## 编译运行 ```bash # 编译 go build -o rtsp-to-web # 运行 ./rtsp-to-web -config config.json ``` ## 故障排除 ### 1. 数据库连接失败 - 检查数据库服务是否运行 - 验证连接参数(主机、端口、用户名、密码) - 确认数据库存在 - 检查防火墙设置 ### 2. 表不存在错误 - 运行数据库初始化脚本 - 检查数据库权限 - 确认表名配置正确 ### 3. 摄像头无法预览 - 检查RTSP URL是否正确 - 验证摄像头网络连接 - 确认用户名密码正确 - 检查摄像头是否支持RTSP协议 ### 4. Web界面无法访问 - 确认HTTP服务端口配置 - 检查防火墙设置 - 验证demo模式是否启用 ## 注意事项 1. **密码安全**:数据库中的密码以明文存储,生产环境建议加密 2. **并发访问**:多个实例同时访问数据库时注意数据一致性 3. **备份恢复**:定期备份数据库数据 4. **性能优化**:大量摄像头时考虑数据库索引优化 5. **网络安全**:生产环境建议使用HTTPS和数据库SSL连接 ## 更新日志 - v1.0.0: 初始版本,支持MySQL和SQL Server - 添加Web界面管理功能 - 支持实时预览和动态配置