# TVAI (Topaz Video AI) 集成文档
本文档介绍如何在 MixVideo 桌面应用中使用 TVAI (Topaz Video AI) 功能进行视频和图片的AI增强处理。
## 概述
TVAI 集成提供了以下主要功能:
1. **视频处理**
- 视频超分辨率放大
- 帧插值(慢动作效果)
- 自动视频增强
2. **图片处理**
- 图片超分辨率放大
- 自动图片增强
- 批量图片处理
3. **任务管理**
- 异步任务处理
- 实时进度监控
- 任务取消和清理
## 架构设计
### 后端 (Rust/Tauri)
```
apps/desktop/src-tauri/src/presentation/commands/tvai_commands.rs
├── TvaiState - 状态管理
├── 系统检测命令
├── 配置管理命令
├── 视频处理命令
├── 图片处理命令
└── 任务管理命令
```
### 前端 (TypeScript/React)
```
apps/desktop/src/
├── types/tvai.ts - 类型定义
├── services/tvaiService.ts - 服务层
├── hooks/useTvai.ts - React Hooks
└── components/TvaiExample.tsx - 示例组件
```
## 使用方法
### 1. 系统检测和初始化
```typescript
import { useTvaiSystemInfo } from '../hooks/useTvai';
function MyComponent() {
const { systemInfo, initializeTvai } = useTvaiSystemInfo();
// 检查系统状态
console.log('Topaz 路径:', systemInfo.topazPath);
console.log('GPU 支持:', systemInfo.hasGpuSupport);
console.log('FFmpeg 路径:', systemInfo.ffmpegPath);
// 初始化 TVAI
const handleInit = async () => {
await initializeTvai({
topazPath: '/path/to/topaz',
useGpu: true,
tempDir: '/tmp/tvai'
});
};
}
```
### 2. 快速处理
```typescript
import { tvaiService } from '../services/tvaiService';
// 快速视频放大
const taskId = await tvaiService.quickUpscaleVideo(
'/path/to/input.mp4',
'/path/to/output.mp4',
2.0 // 放大倍数
);
// 快速图片放大
const taskId = await tvaiService.quickUpscaleImage(
'/path/to/input.jpg',
'/path/to/output.jpg',
2.0 // 放大倍数
);
```
### 3. 高级处理
```typescript
// 高级视频放大
const taskId = await tvaiService.upscaleVideoAdvanced(
'/path/to/input.mp4',
'/path/to/output.mp4',
2.0, // 放大倍数
'iris-3', // AI 模型
0.0, // 压缩
0.1, // 混合
'high_quality' // 质量预设
);
// 高级图片放大
const taskId = await tvaiService.upscaleImageAdvanced(
'/path/to/input.jpg',
'/path/to/output.png',
2.0, // 放大倍数
'iris-3', // AI 模型
0.0, // 压缩
0.1, // 混合
'png' // 输出格式
);
```
### 4. 任务管理
```typescript
import { useTvai } from '../hooks/useTvai';
function TaskManager() {
const {
tasks,
cancelTask,
cleanupCompletedTasks,
getRunningTasksCount
} = useTvai();
return (
运行中任务: {getRunningTasksCount()}
{tasks.map(task => (
{task.task_type} - {task.status}
{task.status === 'Processing' && (
)}
))}
);
}
```
### 5. 事件监听
```typescript
import { addTvaiEventListener, removeTvaiEventListener } from '../services/tvaiService';
// 监听任务事件
const handleTaskCreated = (taskId: string) => {
console.log('新任务创建:', taskId);
};
const handleTaskUpdated = (taskId: string) => {
console.log('任务更新:', taskId);
};
// 添加监听器
addTvaiEventListener('tvai_task_created', handleTaskCreated);
addTvaiEventListener('tvai_task_updated', handleTaskUpdated);
// 移除监听器
removeTvaiEventListener('tvai_task_created', handleTaskCreated);
removeTvaiEventListener('tvai_task_updated', handleTaskUpdated);
```
## 支持的AI模型
### 视频/图片放大模型
- `aaa-9` - 通用模型
- `ahq-12` - 高质量模型
- `alq-13` - 低质量输入优化
- `alqs-2` - 低质量输入优化 v2
- `amq-13` - 中等质量优化
- `amqs-2` - 中等质量优化 v2
- `ghq-5` - 游戏内容优化
- `iris-2` - 通用模型 v2
- `iris-3` - 通用模型 v3 (推荐)
- `nyx-3` - 人像优化
- `prob-4` - 问题修复
- `thf-4` - 老视频优化
- `thd-3` - 细节增强
- `thm-2` - 运动模糊处理
- `rhea-1` - 新模型
- `rxl-1` - 超高分辨率
### 插帧模型
- `apo-8` - 通用插帧 (推荐)
- `apf-1` - 快速插帧
- `chr-2` - 动画插帧
- `chf-3` - 高质量插帧
## 预设配置
```typescript
import { TVAI_PRESETS } from '../types/tvai';
// 视频预设
const oldVideoPreset = TVAI_PRESETS.VIDEO_UPSCALE_MODELS.OLD_VIDEO;
const gameContentPreset = TVAI_PRESETS.VIDEO_UPSCALE_MODELS.GAME_CONTENT;
const animationPreset = TVAI_PRESETS.VIDEO_UPSCALE_MODELS.ANIMATION;
const portraitPreset = TVAI_PRESETS.VIDEO_UPSCALE_MODELS.PORTRAIT;
// 图片预设
const photoPreset = TVAI_PRESETS.IMAGE_UPSCALE_MODELS.PHOTO;
const artworkPreset = TVAI_PRESETS.IMAGE_UPSCALE_MODELS.ARTWORK;
const screenshotPreset = TVAI_PRESETS.IMAGE_UPSCALE_MODELS.SCREENSHOT;
// 质量预设
const fastPreset = TVAI_PRESETS.QUALITY_PRESETS.FAST;
const highQualityPreset = TVAI_PRESETS.QUALITY_PRESETS.HIGH_QUALITY;
```
## 错误处理
```typescript
try {
const taskId = await tvaiService.quickUpscaleVideo(
inputPath,
outputPath,
scaleFactor
);
console.log('任务创建成功:', taskId);
} catch (error) {
if (error.message.includes('Topaz Video AI not found')) {
// 处理 Topaz 未安装的情况
console.error('请安装 Topaz Video AI');
} else if (error.message.includes('GPU not supported')) {
// 处理 GPU 不支持的情况
console.error('GPU 不支持,将使用 CPU 处理');
} else {
// 其他错误
console.error('处理失败:', error.message);
}
}
```
## 性能优化建议
1. **GPU 加速**: 确保启用 GPU 支持以获得最佳性能
2. **批量处理**: 对于多个文件,考虑使用批量处理功能
3. **临时目录**: 设置 SSD 作为临时目录以提高 I/O 性能
4. **内存管理**: 定期清理已完成的任务以释放内存
5. **并发控制**: 避免同时运行过多任务以防止系统过载
## 故障排除
### 常见问题
1. **Topaz Video AI 未检测到**
- 确保 Topaz Video AI 已正确安装
- 检查安装路径是否正确
- 手动指定 Topaz 安装路径
2. **GPU 不工作**
- 检查 GPU 驱动是否最新
- 确认 CUDA 支持
- 尝试禁用 GPU 使用 CPU 处理
3. **处理失败**
- 检查输入文件是否存在且可读
- 确认输出路径有写入权限
- 查看错误日志获取详细信息
4. **性能问题**
- 检查系统资源使用情况
- 减少并发任务数量
- 使用较低的质量预设
## 开发注意事项
1. **异步处理**: 所有 TVAI 操作都是异步的,需要正确处理 Promise
2. **事件监听**: 使用事件监听器获取实时任务状态更新
3. **错误处理**: 实现完善的错误处理机制
4. **资源清理**: 及时清理临时文件和已完成的任务
5. **用户体验**: 提供进度指示和取消功能
## 示例代码
完整的使用示例请参考 `apps/desktop/src/components/TvaiExample.tsx` 文件。