167 lines
3.8 KiB
Markdown
167 lines
3.8 KiB
Markdown
# Wails3 重构迁移说明
|
||
|
||
## 已完成的工作
|
||
|
||
### 1. 项目结构
|
||
- ✅ 创建了完整的 Wails3 项目结构
|
||
- ✅ Go 后端服务(services/ 目录)
|
||
- ✅ Vue3 前端(frontend/ 目录)
|
||
|
||
### 2. 后端功能实现
|
||
- ✅ **VideoService**: 视频拼接服务
|
||
- 列出文件夹中的视频
|
||
- 视频格式转换(MP4 -> TS)
|
||
- 组合拼接和顺序拼接
|
||
- MD5 计算和缓存机制
|
||
|
||
- ✅ **ExtractService**: 视频抽帧服务
|
||
- 列出视频文件
|
||
- 随机删除视频中的一帧
|
||
- 批量处理
|
||
- 元数据修改功能
|
||
|
||
- ✅ **AuthService**: 用户认证服务
|
||
- 登录功能
|
||
- 获取机器信息(机器名、用户名、IP)
|
||
|
||
- ✅ **FileService**: 文件操作服务
|
||
- 文件存在检查
|
||
- 文件大小获取
|
||
- 目录操作
|
||
|
||
- ✅ **日志系统**: 基于文件的日志记录
|
||
|
||
### 3. 前端功能实现
|
||
- ✅ **主界面**: 侧边栏导航 + 主内容区
|
||
- ✅ **VideoTab**: 视频拼接界面
|
||
- 文件夹选择
|
||
- 拼接模式选择
|
||
- 数量设置
|
||
- 审核图片选择
|
||
- 结果展示
|
||
|
||
- ✅ **ExtractTab**: 视频抽帧界面
|
||
- 文件夹选择
|
||
- 抽帧数量设置
|
||
- 批量处理
|
||
- 元数据修改
|
||
|
||
- ✅ **LoginDialog**: 登录对话框
|
||
|
||
## 主要变化
|
||
|
||
### 后端变化
|
||
1. **语言**: C# -> Go
|
||
2. **视频处理**: FFMpegCore -> FFmpeg 命令行调用
|
||
3. **HTTP 客户端**: HttpClient -> Go net/http
|
||
4. **日志**: log4net -> 自定义日志系统
|
||
5. **并发**: Task/async -> goroutine/channel
|
||
|
||
### 前端变化
|
||
1. **UI 框架**: WPF/XAML -> Vue3/HTML/CSS
|
||
2. **数据绑定**: WPF Binding -> Vue3 Reactive
|
||
3. **组件化**: WPF UserControl -> Vue Component
|
||
|
||
## 需要注意的事项
|
||
|
||
### 1. Wails3 API 兼容性
|
||
当前代码中使用了假设的 Wails3 API:
|
||
- `window.go.services.ServiceName` - 需要根据实际 Wails3 API 调整
|
||
- 文件选择对话框 - 需要使用 Wails3 提供的文件对话框 API
|
||
|
||
### 2. FFmpeg 路径
|
||
- 确保 FFmpeg 已安装并在系统 PATH 中
|
||
- 或者修改代码指定 FFmpeg 的完整路径
|
||
|
||
### 3. 文件路径处理
|
||
- Windows 路径分隔符需要正确处理
|
||
- 前端传递的路径格式需要与后端兼容
|
||
|
||
### 4. 进度更新
|
||
- 当前实现是批量返回结果,不是实时进度
|
||
- 如需实时进度,需要使用 Wails3 的事件系统
|
||
|
||
### 5. 错误处理
|
||
- 需要完善错误处理和用户提示
|
||
- 添加重试机制
|
||
|
||
## 待完善的功能
|
||
|
||
1. **文件选择对话框**
|
||
- 需要使用 Wails3 的原生文件对话框 API
|
||
- 当前使用 HTML5 API 作为临时方案
|
||
|
||
2. **进度实时更新**
|
||
- 使用 Wails3 事件系统实现实时进度
|
||
- 或者使用 WebSocket/Server-Sent Events
|
||
|
||
3. **错误处理**
|
||
- 更友好的错误提示
|
||
- 错误日志记录
|
||
|
||
4. **UI 优化**
|
||
- 更现代化的界面设计
|
||
- 响应式布局
|
||
- 动画效果
|
||
|
||
5. **性能优化**
|
||
- 大文件处理优化
|
||
- 内存使用优化
|
||
- 并发控制优化
|
||
|
||
## 运行步骤
|
||
|
||
1. **安装依赖**
|
||
```bash
|
||
# 安装 Wails3(参考 README.md)
|
||
# 安装前端依赖
|
||
cd frontend
|
||
npm install
|
||
```
|
||
|
||
2. **构建前端**
|
||
```bash
|
||
npm run build
|
||
```
|
||
|
||
3. **运行应用**
|
||
```bash
|
||
cd ..
|
||
go run app.go
|
||
```
|
||
|
||
## 测试建议
|
||
|
||
1. **功能测试**
|
||
- 视频拼接(两种模式)
|
||
- 视频抽帧
|
||
- 元数据修改
|
||
- 用户登录
|
||
|
||
2. **性能测试**
|
||
- 大量视频文件处理
|
||
- 并发处理能力
|
||
- 内存使用情况
|
||
|
||
3. **兼容性测试**
|
||
- 不同视频格式
|
||
- 不同操作系统
|
||
- 不同 FFmpeg 版本
|
||
|
||
## 已知问题
|
||
|
||
1. 文件选择在浏览器环境中受限,需要使用 Wails3 原生 API
|
||
2. 进度更新是批量返回,不是实时更新
|
||
3. 错误处理需要进一步完善
|
||
4. UI 需要根据实际 Wails3 API 调整
|
||
|
||
## 后续工作
|
||
|
||
1. 根据实际 Wails3 API 调整代码
|
||
2. 实现实时进度更新
|
||
3. 完善错误处理
|
||
4. 优化 UI/UX
|
||
5. 添加单元测试
|
||
6. 性能优化
|
||
|