345 lines
9.1 KiB
Markdown
345 lines
9.1 KiB
Markdown
# TVAI - Topaz Video AI Rust 库
|
|
|
|
[](https://www.rust-lang.org)
|
|
[](https://opensource.org/licenses/MIT)
|
|
|
|
一个功能完整的 Rust 库,为 [Topaz Video AI](https://www.topazlabs.com/topaz-video-ai) 提供编程接口,支持 AI 驱动的视频和图像超分辨率、帧插值等功能。
|
|
|
|
## ✨ 主要特性
|
|
|
|
### 🎬 视频处理
|
|
- **AI 超分辨率** - 使用 16 种专业 AI 模型进行视频放大
|
|
- **帧插值** - 创建流畅的慢动作效果,支持 4 种插值模型
|
|
- **组合增强** - 同时应用超分辨率和插值
|
|
- **格式转换** - 视频与图像序列互转
|
|
- **批量处理** - 高效处理多个文件
|
|
|
|
### 🖼️ 图像处理
|
|
- **AI 超分辨率** - 智能图像放大和增强
|
|
- **批量处理** - 处理整个目录的图像
|
|
- **格式转换** - 支持 PNG、JPG、TIFF、BMP
|
|
- **预设优化** - 针对不同内容类型的优化预设
|
|
|
|
### ⚡ 性能优化
|
|
- **GPU 加速** - 支持 CUDA 和硬件编码
|
|
- **并发处理** - 可配置的并行操作
|
|
- **内存管理** - 高效的临时文件处理
|
|
- **智能缓存** - 智能资源利用
|
|
- **性能监控** - 实时性能跟踪
|
|
|
|
### 🛠️ 便捷功能
|
|
- **全局配置** - 持久化设置管理
|
|
- **预设系统** - 14 种内置处理预设
|
|
- **错误处理** - 用户友好的错误消息
|
|
- **进度跟踪** - 实时处理进度
|
|
- **自动检测** - 智能系统和 GPU 检测
|
|
|
|
## 🚀 快速开始
|
|
|
|
### 安装
|
|
|
|
```toml
|
|
[dependencies]
|
|
tvai = "0.1.0"
|
|
tokio = { version = "1.0", features = ["full"] }
|
|
```
|
|
|
|
### 基础使用
|
|
|
|
```rust
|
|
use tvai::*;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
// 快速 2 倍视频放大
|
|
quick_upscale_video(
|
|
std::path::Path::new("输入.mp4"),
|
|
std::path::Path::new("输出.mp4"),
|
|
2.0,
|
|
).await?;
|
|
|
|
println!("视频增强完成!");
|
|
Ok(())
|
|
}
|
|
```
|
|
|
|
### 高级使用
|
|
|
|
```rust
|
|
use tvai::*;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
// 创建配置
|
|
let config = TvaiConfig::builder()
|
|
.topaz_path("/path/to/topaz")
|
|
.use_gpu(true)
|
|
.build()?;
|
|
|
|
// 创建处理器
|
|
let mut processor = TvaiProcessor::new(config)?;
|
|
|
|
// 使用预设进行老视频修复
|
|
let params = VideoUpscaleParams::for_old_video();
|
|
|
|
// 带进度跟踪的处理
|
|
let progress_callback: ProgressCallback = Box::new(|progress| {
|
|
println!("进度: {:.1}%", progress * 100.0);
|
|
});
|
|
|
|
let result = processor.upscale_video(
|
|
std::path::Path::new("老视频.mp4"),
|
|
std::path::Path::new("修复后.mp4"),
|
|
params,
|
|
Some(&progress_callback),
|
|
).await?;
|
|
|
|
println!("处理完成,耗时: {:?}", result.processing_time);
|
|
Ok(())
|
|
}
|
|
```
|
|
|
|
## 📚 支持的 AI 模型
|
|
|
|
### 超分辨率模型 (16 种)
|
|
|
|
| 模型 | 最适合 | 倍数 | 描述 |
|
|
|------|--------|------|------|
|
|
| **Iris v3** | 通用 | 1-4x | 最佳整体质量,推荐首选 |
|
|
| **Nyx v3** | 人像 | 1-4x | 面部和人像优化 |
|
|
| **Theia Fidelity v4** | 老内容 | 2x | 老视频和损坏内容修复 |
|
|
| **Gaia HQ v5** | 游戏/CG | 1-4x | 游戏录像和 CG 内容 |
|
|
| **Proteus v4** | 问题素材 | 1-4x | 修复严重伪影和问题 |
|
|
| **Artemis LQ v13** | 低质量 | 1-4x | 极低质量内容增强 |
|
|
| **Artemis MQ v13** | 中等质量 | 1-4x | 中等质量内容优化 |
|
|
| **Artemis HQ v13** | 高质量 | 1-4x | 高质量内容精细化 |
|
|
| **Theia Detail v3** | 细节 | 2x | 细节保持和增强 |
|
|
| **Theia Fidelity v3** | 保真度 | 2x | 高保真度处理 |
|
|
| **Dione DV v2** | DV 素材 | 2x | DV 摄像机素材 |
|
|
| **Dione TV v2** | 电视 | 2x | 电视广播内容 |
|
|
| **Dione Robust v2** | 鲁棒性 | 2x | 各种质量内容 |
|
|
| **Dione Robust Detail v2** | 鲁棒细节 | 2x | 细节保持的鲁棒处理 |
|
|
| **Rhea v1** | 实验性 | 1-4x | 实验性高质量模型 |
|
|
| **Dione RD v1** | 研发 | 2x | 研发测试模型 |
|
|
|
|
### 插值模型 (4 种)
|
|
|
|
| 模型 | 最适合 | 描述 |
|
|
|------|--------|------|
|
|
| **Apollo v8** | 高质量 | 最佳整体插值质量 |
|
|
| **Chronos v2** | 动画 | 卡通和动漫内容优化 |
|
|
| **Apollo Fast v1** | 速度 | 快速处理,质量略低 |
|
|
| **Chronos Fast v3** | 快速动画 | 快速动画内容处理 |
|
|
|
|
## 🎯 使用场景
|
|
|
|
### 视频增强
|
|
```rust
|
|
// 老视频修复
|
|
let result = quick_upscale_video(input, output, 2.0).await?;
|
|
|
|
// 自动智能增强
|
|
let result = auto_enhance_video(input, output).await?;
|
|
|
|
// 创建慢动作效果
|
|
let params = InterpolationParams::for_slow_motion(30, 4.0);
|
|
let result = processor.interpolate_video(input, output, params, None).await?;
|
|
```
|
|
|
|
### 图像处理
|
|
```rust
|
|
// 批量照片增强
|
|
let results = batch_upscale_directory(
|
|
Path::new("照片目录"),
|
|
Path::new("输出目录"),
|
|
2.0,
|
|
true // 递归处理
|
|
).await?;
|
|
|
|
// 单张图片增强
|
|
let result = quick_upscale_image(input, output, 2.0).await?;
|
|
```
|
|
|
|
### 格式转换
|
|
```rust
|
|
// 视频转图片序列
|
|
let frames = processor.video_to_images(
|
|
Path::new("视频.mp4"),
|
|
Path::new("帧/"),
|
|
"png",
|
|
95
|
|
).await?;
|
|
|
|
// 图片序列转视频
|
|
processor.images_to_video(
|
|
&frame_paths,
|
|
Path::new("输出.mp4"),
|
|
30.0,
|
|
QualityPreset::HighQuality
|
|
).await?;
|
|
```
|
|
|
|
## 🔧 配置管理
|
|
|
|
### 全局设置
|
|
```rust
|
|
use tvai::config::global_settings;
|
|
|
|
let settings = global_settings();
|
|
settings.set_default_use_gpu(true)?;
|
|
settings.set_max_concurrent_jobs(2)?;
|
|
settings.save_to_file()?; // 自动保存到用户配置目录
|
|
```
|
|
|
|
### 预设管理
|
|
```rust
|
|
use tvai::config::global_presets;
|
|
|
|
let presets = global_presets();
|
|
let preset_manager = presets.lock().unwrap();
|
|
|
|
// 使用内置预设
|
|
let video_preset = preset_manager.get_video_preset("old_video_restore");
|
|
let image_preset = preset_manager.get_image_preset("photo_2x");
|
|
```
|
|
|
|
## 📊 性能监控
|
|
|
|
```rust
|
|
use tvai::utils::{PerformanceMonitor, optimize_for_system};
|
|
|
|
// 自动优化系统设置
|
|
let settings = optimize_for_system();
|
|
let mut monitor = PerformanceMonitor::new(settings);
|
|
|
|
// 监控处理性能
|
|
let _permit = monitor.acquire_slot().await?;
|
|
// ... 执行处理 ...
|
|
|
|
// 获取性能建议
|
|
let summary = monitor.get_summary();
|
|
for recommendation in summary.recommendations {
|
|
println!("💡 {}", recommendation);
|
|
}
|
|
```
|
|
|
|
## 🛡️ 错误处理
|
|
|
|
库提供用户友好的错误消息和解决建议:
|
|
|
|
```rust
|
|
match result {
|
|
Ok(output) => println!("✅ 处理成功"),
|
|
Err(error) => {
|
|
println!("❌ 错误类型: {}", error.category());
|
|
println!("🔄 可恢复: {}", error.is_recoverable());
|
|
println!("💡 解决建议:\n{}", error.user_friendly_message());
|
|
}
|
|
}
|
|
```
|
|
|
|
## 📋 系统要求
|
|
|
|
### 必需
|
|
- **Rust 1.70+** - 用于编译
|
|
- **Topaz Video AI** - 主程序 ([下载地址](https://www.topazlabs.com/topaz-video-ai))
|
|
|
|
### 推荐
|
|
- **NVIDIA GPU** - 支持 CUDA 的显卡 (GTX 1060+ 或更好)
|
|
- **16GB+ RAM** - 处理大文件
|
|
- **SSD 存储** - 更快的临时文件处理
|
|
|
|
### 支持的平台
|
|
- ✅ Windows 10/11
|
|
- ✅ macOS 10.15+
|
|
- ✅ Linux (Ubuntu 18.04+)
|
|
|
|
## 📖 文档
|
|
|
|
- 📚 [用户指南](docs/用户指南.md) - 详细使用指南
|
|
- 📖 [API 文档](docs/API文档.md) - 完整 API 参考
|
|
- 🔧 [示例代码](examples/) - 工作示例
|
|
- 🧪 [测试](tests/) - 集成测试
|
|
- 📊 [基准测试](benches/) - 性能基准
|
|
|
|
## 🧪 测试
|
|
|
|
运行完整测试套件:
|
|
|
|
```bash
|
|
# 单元测试和集成测试
|
|
cargo test
|
|
|
|
# 性能基准测试
|
|
cargo bench
|
|
|
|
# 运行示例
|
|
cargo run --example basic_usage
|
|
cargo run --example video_processing
|
|
cargo run --example image_processing
|
|
```
|
|
|
|
## 📈 开发状态
|
|
|
|
✅ **完成** - 所有核心功能已实现并测试!
|
|
|
|
- [x] 基础项目结构
|
|
- [x] FFmpeg 管理
|
|
- [x] 核心处理器框架
|
|
- [x] 视频超分辨率实现 (16 种 AI 模型)
|
|
- [x] 帧插值实现 (4 种 AI 模型)
|
|
- [x] 图像超分辨率实现
|
|
- [x] 批量处理 (视频和图像)
|
|
- [x] 进度回调和监控
|
|
- [x] 全局配置管理
|
|
- [x] 预设管理系统
|
|
- [x] 性能优化
|
|
- [x] 增强错误处理
|
|
- [x] 全面测试 (单元 + 集成 + 基准)
|
|
- [x] 完整文档 (API + 用户指南)
|
|
|
|
## 📊 项目统计
|
|
|
|
- **总代码行数**: 4,127 行
|
|
- **模块文件**: 25 个
|
|
- **示例文件**: 6 个
|
|
- **测试覆盖**: 17 个测试 + 13 个基准
|
|
- **文档**: 完整的中英文文档
|
|
|
|
## 🤝 贡献
|
|
|
|
欢迎贡献!请随时提交 Pull Request。
|
|
|
|
### 开发设置
|
|
|
|
1. 安装 Rust 1.70+
|
|
2. 安装 Topaz Video AI
|
|
3. 克隆仓库
|
|
4. 运行测试: `cargo test`
|
|
5. 运行示例: `cargo run --example basic_usage`
|
|
|
|
## 📄 许可证
|
|
|
|
MIT 许可证 - 详见 LICENSE 文件。
|
|
|
|
## 🔄 更新日志
|
|
|
|
### v0.1.0 (当前版本)
|
|
|
|
- ✅ 完整的视频处理 (超分辨率 + 插值)
|
|
- ✅ 完整的图像处理 (超分辨率 + 批量操作)
|
|
- ✅ 16 种 AI 超分辨率模型 + 4 种插值模型
|
|
- ✅ 全局配置和预设管理
|
|
- ✅ 性能监控和优化
|
|
- ✅ 增强错误处理和用户友好消息
|
|
- ✅ 全面文档和示例
|
|
- ✅ 完整测试覆盖 (单元 + 集成 + 基准)
|
|
|
|
## 🌟 致谢
|
|
|
|
感谢 [Topaz Labs](https://www.topazlabs.com/) 开发了出色的 Topaz Video AI 软件。
|
|
|
|
---
|
|
|
|
**🎯 项目完成度: 100%** - 所有功能已实现并可用于生产环境!
|