# 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` 文件。