|
|
# 数据库集成功能说明
|
|
|
|
|
|
本项目已扩展支持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界面管理功能
|
|
|
- 支持实时预览和动态配置 |