feat: 实现视频关键帧提取工具

- 新增关键帧提取功能,支持提取视频的第一帧、最后一帧、自定义时间点和多个时间点
- 添加完整的前端UI组件,包括配置面板、文件列表、预览和进度显示
- 实现后端Rust服务,集成FFmpeg进行视频处理
- 支持多种输出格式(JPG/PNG/WebP/BMP)和质量设置
- 支持输出尺寸调整和宽高比保持
- 添加批量处理功能和进度跟踪
- 修复TypeScript类型错误和Rust编译问题
- 添加用户指南文档和单元测试
This commit is contained in:
imeepos
2025-08-11 13:05:27 +08:00
parent 2075a731d2
commit 779bb054c2
21 changed files with 4442 additions and 4 deletions

View File

@@ -0,0 +1,207 @@
# 视频关键帧提取工具使用指南
## 概述
视频关键帧提取工具是一个专业的视频处理工具,基于 FFmpeg 提供高质量的帧提取功能。支持提取视频的第一帧、最后帧、自定义时间点或多个时间点的帧,并提供多种输出格式和批量处理能力。
## 主要功能
### 🎯 核心功能
- **多种提取模式**:第一帧、最后帧、自定义时间点、多时间点批量提取
- **多格式支持**JPEG、PNG、WebP、BMP 等主流图片格式
- **批量处理**:支持单文件或整个文件夹的批量处理
- **实时预览**:提供帧预览功能,精确选择提取时间点
- **自定义配置**:灵活的输出尺寸、质量和文件命名设置
### 📁 支持的视频格式
- MP4、AVI、MOV、MKV、WMV、FLV、WebM
- M4V、3GP、TS、MTS 等常见视频格式
## 快速开始
### 1. 打开工具
在主界面点击"便捷小工具" → 找到"视频关键帧提取工具"并点击进入。
### 2. 选择视频文件
有两种方式选择视频文件:
- **选择文件**:点击"选择文件"按钮,选择一个或多个视频文件
- **选择文件夹**:点击"选择文件夹"按钮,选择包含视频文件的文件夹
### 3. 配置提取参数
在配置面板中设置:
- **提取类型**:选择第一帧、最后帧、自定义时间或多时间点
- **输出格式**:选择 JPEG、PNG、WebP 或 BMP
- **图片质量**调整输出图片的质量1-100
- **输出目录**:设置保存提取帧的目录
### 4. 开始提取
点击"开始提取"按钮,工具将自动处理所有选中的视频文件。
## 详细功能说明
### 提取类型
#### 第一帧
提取视频的第一帧,通常用于生成视频缩略图。
#### 最后帧
提取视频的最后一帧,适用于需要展示视频结尾内容的场景。
#### 自定义时间
指定具体的时间点(秒)提取帧,支持小数点精度。
#### 多个时间点
支持同时提取多个时间点的帧,时间点格式支持:
- **秒数**`10, 30, 60`提取第10秒、30秒、60秒的帧
- **百分比**`25%, 50%, 75%`提取视频25%、50%、75%位置的帧)
- **帧数**`300f, 900f, 1800f`提取第300、900、1800帧
### 输出格式设置
#### JPEG
- 适用于大多数场景
- 文件体积小
- 支持质量调节1-100
- 不支持透明度
#### PNG
- 支持透明度
- 无损压缩
- 文件体积较大
- 适用于需要透明背景的场景
#### WebP
- 现代图片格式
- 压缩效率高
- 支持透明度
- 文件体积小
#### BMP
- 无压缩格式
- 文件体积最大
- 兼容性最好
### 输出尺寸配置
#### 自动尺寸
保持视频原始分辨率。
#### 自定义尺寸
- **宽度**:设置输出图片宽度(像素)
- **高度**:设置输出图片高度(像素)
- **保持宽高比**:勾选后会自动调整尺寸以保持原始宽高比
### 文件命名模式
支持使用变量自定义文件名:
- `{name}`:视频文件名(不含扩展名)
- `{frame_type}`帧类型first、last、custom、frame
- `{timestamp}`:时间戳(格式:秒.毫秒)
- `{index}`索引号多帧提取时使用格式001、002...
**示例**
- `{name}_{frame_type}``video_first.jpg`
- `{name}_{timestamp}``video_15.50.jpg`
- `{name}_{frame_type}_{index}``video_frame_001.jpg`
## 预设配置
工具提供了几个常用的预设配置:
### 第一帧高质量
- 提取类型:第一帧
- 格式JPEG
- 质量95
- 适用于生成高质量缩略图
### 最后一帧PNG
- 提取类型:最后一帧
- 格式PNG
- 适用于需要透明度支持的场景
### 中间帧WebP
- 提取类型自定义时间50%位置)
- 格式WebP
- 质量80
- 适用于现代Web应用
## 批量处理
### 文件夹处理
1. 点击"选择文件夹"
2. 选择包含视频文件的文件夹
3. 工具会自动扫描并列出所有支持的视频文件
4. 配置提取参数
5. 点击"开始提取"进行批量处理
### 进度监控
批量处理时可以查看:
- 总体进度百分比
- 当前处理的文件
- 处理速度
- 成功/失败统计
- 预计剩余时间
## 结果管理
### 查看结果
提取完成后,在"结果"标签页可以:
- 查看所有提取结果
- 筛选成功/失败的结果
- 搜索特定文件
- 预览提取的帧
### 结果操作
对于每个提取结果,可以:
- **预览**:在应用内查看提取的帧
- **下载**:保存到指定位置
- **打开位置**:在文件管理器中打开文件所在目录
## 故障排除
### 常见问题
#### FFmpeg 不可用
**现象**:工具显示"FFmpeg 不可用"
**解决方案**
1. 工具会自动下载 FFmpeg请等待下载完成
2. 检查网络连接是否正常
3. 重启应用重试
#### 视频文件无法识别
**现象**:视频文件显示为"无效"
**可能原因**
- 视频文件损坏
- 不支持的视频格式
- 文件权限问题
#### 提取失败
**现象**:提取过程中出现错误
**解决方案**
1. 检查输出目录是否有写入权限
2. 确保磁盘空间充足
3. 检查视频文件是否完整
### 性能优化建议
1. **批量处理**:一次处理多个文件比逐个处理更高效
2. **输出格式**JPEG 格式处理速度最快
3. **输出尺寸**:较小的输出尺寸处理速度更快
4. **磁盘空间**:确保输出目录有足够的磁盘空间
## 技术规格
- **基于技术**FFmpeg + ffmpeg-sidecar
- **支持平台**Windows、macOS、Linux
- **最大文件大小**:无限制(取决于系统内存)
- **并发处理**:支持多文件并行处理
- **输出精度**:支持毫秒级时间精度
## 更新日志
### v1.0.0 (2025-08-11)
- 初始版本发布
- 支持基本的帧提取功能
- 提供多种输出格式
- 实现批量处理能力
- 添加实时预览功能