179 lines
4.7 KiB
Markdown
179 lines
4.7 KiB
Markdown
# Hotfix 测试指南:修复 FFmpeg 命令行闪现问题
|
|
|
|
## 🔧 问题描述
|
|
|
|
在之前的版本中,当 MixVideo Desktop 执行 FFmpeg 和 FFprobe 命令时,会在 Windows 上出现命令行窗口闪现的问题,影响用户体验。
|
|
|
|
## 🛠️ 修复方案
|
|
|
|
### 技术实现
|
|
|
|
1. **添加 Windows 特定导入**
|
|
```rust
|
|
#[cfg(target_os = "windows")]
|
|
use std::os::windows::process::CommandExt;
|
|
```
|
|
|
|
2. **创建隐藏控制台的命令函数**
|
|
```rust
|
|
fn create_hidden_command(program: &str) -> Command {
|
|
let mut cmd = Command::new(program);
|
|
|
|
#[cfg(target_os = "windows")]
|
|
{
|
|
// 在 Windows 上隐藏控制台窗口
|
|
// CREATE_NO_WINDOW = 0x08000000
|
|
cmd.creation_flags(0x08000000);
|
|
}
|
|
|
|
cmd
|
|
}
|
|
```
|
|
|
|
3. **替换所有 FFmpeg/FFprobe 调用**
|
|
- 将所有 `Command::new("ffmpeg")` 替换为 `Self::create_hidden_command("ffmpeg")`
|
|
- 将所有 `Command::new("ffprobe")` 替换为 `Self::create_hidden_command("ffprobe")`
|
|
|
|
### 修复范围
|
|
|
|
修复了以下方法中的命令行闪现问题:
|
|
|
|
- ✅ `is_available()` - FFmpeg 可用性检查
|
|
- ✅ `get_status_info()` - FFmpeg 状态信息获取
|
|
- ✅ `extract_metadata()` - 视频/音频元数据提取
|
|
- ✅ `detect_scenes_with_ffmpeg()` - 场景检测
|
|
- ✅ `detect_scenes_alternative()` - 替代场景检测
|
|
- ✅ `split_video_with_mode()` - 视频切分
|
|
- ✅ `get_keyframes()` - 关键帧获取
|
|
- ✅ `generate_thumbnail()` - 缩略图生成
|
|
- ✅ `get_version()` - 版本信息获取
|
|
|
|
## 🧪 测试步骤
|
|
|
|
### 1. 启动应用测试
|
|
```bash
|
|
cd apps/desktop
|
|
pnpm tauri:dev
|
|
```
|
|
|
|
**预期结果**: 应用启动时不应出现任何命令行窗口闪现
|
|
|
|
### 2. FFmpeg 状态检查测试
|
|
1. 打开应用
|
|
2. 查看 FFmpeg 状态信息(如果有相关界面)
|
|
|
|
**预期结果**: 检查 FFmpeg 状态时不应出现命令行闪现
|
|
|
|
### 3. 视频文件导入测试
|
|
1. 创建或打开一个项目
|
|
2. 导入一个视频文件
|
|
3. 观察元数据提取过程
|
|
|
|
**预期结果**:
|
|
- 视频元数据正常提取
|
|
- 过程中不出现命令行窗口闪现
|
|
- 控制台日志正常显示处理信息
|
|
|
|
### 4. 场景检测测试
|
|
1. 导入视频文件后
|
|
2. 触发场景检测功能
|
|
3. 观察场景检测过程
|
|
|
|
**预期结果**:
|
|
- 场景检测正常工作
|
|
- 不出现 FFmpeg 命令行窗口闪现
|
|
- 场景检测结果正确显示
|
|
|
|
### 5. 视频切分测试
|
|
1. 完成场景检测后
|
|
2. 执行视频切分操作
|
|
3. 观察切分过程
|
|
|
|
**预期结果**:
|
|
- 视频切分正常执行
|
|
- 切分过程中不出现命令行闪现
|
|
- 切分后的视频文件正常生成
|
|
|
|
## 🔍 验证要点
|
|
|
|
### Windows 特定验证
|
|
- ✅ 确认 `CREATE_NO_WINDOW` 标志正确应用
|
|
- ✅ 验证只在 Windows 平台应用此修复
|
|
- ✅ 确认其他平台不受影响
|
|
|
|
### 功能完整性验证
|
|
- ✅ 所有 FFmpeg 功能正常工作
|
|
- ✅ 错误处理机制正常
|
|
- ✅ 性能监控正常记录
|
|
- ✅ 日志系统正常输出
|
|
|
|
### 用户体验验证
|
|
- ✅ 无命令行窗口闪现
|
|
- ✅ 应用响应速度正常
|
|
- ✅ 操作流程顺畅
|
|
|
|
## 📊 测试结果记录
|
|
|
|
### 编译测试
|
|
- ✅ **Rust 编译**: 通过 (`cargo check`)
|
|
- ✅ **前端构建**: 通过 (`pnpm build`)
|
|
- ✅ **应用启动**: 成功
|
|
|
|
### 功能测试
|
|
- ⏳ **FFmpeg 状态检查**: 待测试
|
|
- ⏳ **视频元数据提取**: 待测试
|
|
- ⏳ **场景检测**: 待测试
|
|
- ⏳ **视频切分**: 待测试
|
|
- ⏳ **缩略图生成**: 待测试
|
|
|
|
### 用户体验测试
|
|
- ⏳ **命令行闪现**: 待验证修复
|
|
- ⏳ **操作流畅性**: 待测试
|
|
- ⏳ **错误处理**: 待测试
|
|
|
|
## 🚀 部署建议
|
|
|
|
### 测试通过后的步骤
|
|
1. **提交修复代码**
|
|
```bash
|
|
git add .
|
|
git commit -m "hotfix: 修复 FFmpeg 命令行闪现问题"
|
|
```
|
|
|
|
2. **合并到主分支**
|
|
```bash
|
|
git checkout master
|
|
git merge hotfix/fix-ffmpeg-console-flash
|
|
```
|
|
|
|
3. **创建补丁版本**
|
|
- 更新版本号到 v0.1.3
|
|
- 创建发布标签
|
|
- 构建新的安装包
|
|
|
|
### 发布说明
|
|
```markdown
|
|
## v0.1.3 Hotfix - 修复命令行闪现问题
|
|
|
|
### 🐛 Bug 修复
|
|
- 修复了 Windows 上 FFmpeg/FFprobe 执行时命令行窗口闪现的问题
|
|
- 改善了用户体验,操作过程更加流畅
|
|
|
|
### 🔧 技术改进
|
|
- 在 Windows 平台使用 CREATE_NO_WINDOW 标志隐藏控制台窗口
|
|
- 保持了所有 FFmpeg 功能的完整性和性能
|
|
```
|
|
|
|
## 📝 注意事项
|
|
|
|
1. **平台兼容性**: 此修复仅影响 Windows 平台,其他平台行为不变
|
|
2. **功能完整性**: 确保所有 FFmpeg 相关功能正常工作
|
|
3. **性能影响**: 修复不应影响 FFmpeg 执行性能
|
|
4. **错误处理**: 保持原有的错误处理逻辑
|
|
|
|
---
|
|
|
|
**测试负责人**: [测试人员姓名]
|
|
**测试日期**: 2025年1月13日
|
|
**修复分支**: `hotfix/fix-ffmpeg-console-flash`
|