166 lines
3.9 KiB
Markdown
166 lines
3.9 KiB
Markdown
# Trae Video Server
|
||
|
||
一个基于Electron的专业视频采集和流媒体服务程序,支持实时视频预览和网络流媒体分发。
|
||
|
||
## 功能特性
|
||
|
||
- 🎥 **设备管理**: 自动检测并列出所有可用的视频采集设备
|
||
- 📺 **实时预览**: 在应用程序内显示选定设备的实时视频画面
|
||
- 🌐 **流媒体服务**: 提供HTTP流媒体服务,支持网页端实时观看
|
||
- 🎨 **现代UI**: 美观的用户界面,支持响应式设计
|
||
- ⚡ **高性能**: 优化的视频处理和网络传输
|
||
|
||
## 系统要求
|
||
|
||
- Node.js 16.0 或更高版本
|
||
- Windows 10/11, macOS 10.14+, 或 Linux
|
||
- 至少一个可用的视频采集设备(摄像头)
|
||
|
||
## 安装和运行
|
||
|
||
### 1. 安装依赖
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
### 2. 启动应用程序
|
||
|
||
```bash
|
||
# 生产模式
|
||
npm start
|
||
|
||
# 开发模式(包含开发者工具)
|
||
npm run dev
|
||
```
|
||
|
||
### 3. 构建可执行文件
|
||
|
||
```bash
|
||
npm run build
|
||
```
|
||
|
||
## 使用说明
|
||
|
||
### 主要功能
|
||
|
||
1. **设备选择**
|
||
- 启动应用后,程序会自动检测所有可用的视频设备
|
||
- 在下拉菜单中选择要使用的摄像头
|
||
- 点击"刷新设备"按钮可重新扫描设备
|
||
|
||
2. **开始预览**
|
||
- 选择设备后,点击"开始预览"按钮
|
||
- 应用程序下方会显示实时视频画面
|
||
- 同时启动流媒体服务器
|
||
|
||
3. **网络流媒体**
|
||
- 预览启动后,可通过 `http://localhost:3000/preview` 访问网页版预览
|
||
- 其他设备可通过网络访问此地址观看实时视频
|
||
- 支持多客户端同时连接
|
||
|
||
4. **停止预览**
|
||
- 点击"停止预览"按钮结束视频采集
|
||
- 自动释放设备资源和网络连接
|
||
|
||
### 网络访问
|
||
|
||
流媒体服务默认运行在端口3000上,提供以下接口:
|
||
|
||
- **网页预览**: `http://localhost:3000/preview`
|
||
- **Socket.IO连接**: 用于实时视频帧传输
|
||
|
||
## 技术架构
|
||
|
||
### 核心技术栈
|
||
|
||
- **Electron**: 跨平台桌面应用框架
|
||
- **Express**: Web服务器框架
|
||
- **Socket.IO**: 实时双向通信
|
||
- **WebRTC**: 视频采集和处理
|
||
- **HTML5 Canvas**: 视频帧处理
|
||
|
||
### 项目结构
|
||
|
||
```
|
||
trae-video-server/
|
||
├── main.js # Electron主进程
|
||
├── index.html # 主界面
|
||
├── package.json # 项目配置
|
||
├── assets/ # 资源文件
|
||
│ └── icon.svg # 应用图标
|
||
├── public/ # 静态资源
|
||
│ └── preview.html # 网页预览界面
|
||
└── README.md # 项目文档
|
||
```
|
||
|
||
### 工作流程
|
||
|
||
1. **设备检测**: 使用 `navigator.mediaDevices.enumerateDevices()` 获取设备列表
|
||
2. **视频采集**: 通过 `getUserMedia()` API 获取视频流
|
||
3. **帧处理**: 使用Canvas将视频帧转换为图像数据
|
||
4. **网络传输**: 通过Socket.IO将帧数据广播给所有连接的客户端
|
||
5. **实时显示**: 客户端接收帧数据并实时更新显示
|
||
|
||
## 配置选项
|
||
|
||
### 视频参数
|
||
|
||
默认视频配置(可在代码中修改):
|
||
- 分辨率: 1280x720
|
||
- 帧率: 30 FPS(网络传输)
|
||
- 图像格式: JPEG
|
||
- 压缩质量: 80%
|
||
|
||
### 网络配置
|
||
|
||
- 默认端口: 3000
|
||
- CORS: 允许所有来源
|
||
- Socket.IO: 支持跨域连接
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
|
||
1. **设备检测失败**
|
||
- 确保摄像头已正确连接
|
||
- 检查设备权限设置
|
||
- 重启应用程序
|
||
|
||
2. **预览无法启动**
|
||
- 确保设备未被其他应用占用
|
||
- 检查浏览器权限设置
|
||
- 尝试选择不同的设备
|
||
|
||
3. **网络连接问题**
|
||
- 检查防火墙设置
|
||
- 确保端口3000未被占用
|
||
- 验证网络连接状态
|
||
|
||
### 调试模式
|
||
|
||
使用开发模式启动应用以查看详细日志:
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
## 许可证
|
||
|
||
MIT License - 详见 LICENSE 文件
|
||
|
||
## 贡献
|
||
|
||
欢迎提交Issue和Pull Request来改进这个项目。
|
||
|
||
## 联系方式
|
||
|
||
如有问题或建议,请通过以下方式联系:
|
||
- 创建GitHub Issue
|
||
- 发送邮件至项目维护者
|
||
|
||
---
|
||
|
||
**Trae Video Server** - 专业的视频采集与流媒体解决方案
|
||
>>>>>>> e7062f2 (首次上传)
|