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