VideoConcat/wails3-app/迁移说明.md
2026-01-06 19:35:21 +08:00

167 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. 性能优化