172 lines
4.6 KiB
Markdown
172 lines
4.6 KiB
Markdown
# 内置配置功能总结
|
|
|
|
## 概述
|
|
|
|
Topaz Video AI SDK 现已集成内置的 FFmpeg 配置功能,所有编解码器和推荐规则都直接编译到代码中,无需外部配置文件依赖。
|
|
|
|
## 主要改进
|
|
|
|
### 1. 中文注释
|
|
- 将 `ffmpeg.rs` 中的所有英文注释改为中文注释
|
|
- 提高了中文开发者的代码可读性
|
|
- 保持了代码功能的完整性
|
|
|
|
### 2. 内置配置系统
|
|
- **音频编解码器**: 内置 AAC、AC3、PCM、Vorbis 配置
|
|
- **视频编码器**: 内置 H.264/H.265 的各种硬件和软件编码器
|
|
- **模型推荐**: 基于分辨率的智能模型推荐规则
|
|
- **无外部依赖**: 所有配置编译到代码中
|
|
|
|
### 3. 智能编码器选择
|
|
- 根据操作系统自动筛选兼容编码器
|
|
- 根据 GPU 类型选择硬件加速编码器
|
|
- 根据文件格式筛选支持的编码器
|
|
- 自动选择最佳编码器组合
|
|
|
|
## 内置编码器支持
|
|
|
|
### 音频编解码器
|
|
```
|
|
AAC - 通用音频编码,支持 MP4/MOV/MKV/AVI
|
|
AC3 - 杜比数字音频,支持环绕声
|
|
PCM - 无损音频编码
|
|
Vorbis - 开源音频编码,用于 WebM
|
|
```
|
|
|
|
### 视频编码器
|
|
```
|
|
NVIDIA GPU:
|
|
- h264_nvenc - H.264 硬件编码
|
|
- hevc_nvenc - H.265 硬件编码
|
|
|
|
Apple 平台:
|
|
- h264_videotoolbox - H.264 硬件编码
|
|
- hevc_videotoolbox - H.265 硬件编码
|
|
|
|
AMD GPU:
|
|
- h264_amf - H.264 硬件编码
|
|
- hevc_amf - H.265 硬件编码
|
|
|
|
软件编码:
|
|
- libx264 - H.264 软件编码(跨平台)
|
|
- libx265 - H.265 软件编码(跨平台)
|
|
```
|
|
|
|
## 新增 API
|
|
|
|
### 编解码器查询
|
|
```rust
|
|
// 获取所有音频编解码器
|
|
let audio_codecs = sdk.ffmpeg_generator.get_available_audio_codecs();
|
|
|
|
// 根据名称查找编解码器
|
|
let aac = sdk.ffmpeg_generator.get_audio_codec("AAC");
|
|
|
|
// 获取所有视频编码器
|
|
let video_encoders = sdk.ffmpeg_generator.get_available_video_encoders();
|
|
|
|
// 根据名称查找编码器
|
|
let h264 = sdk.ffmpeg_generator.get_video_encoder_by_name("H264");
|
|
```
|
|
|
|
### 兼容性筛选
|
|
```rust
|
|
// 获取 Windows 兼容编码器
|
|
let windows_encoders = sdk.ffmpeg_generator.get_compatible_video_encoders("windows", None);
|
|
|
|
// 获取 NVIDIA GPU 编码器
|
|
let nvidia_encoders = sdk.ffmpeg_generator.get_compatible_video_encoders("windows", Some("nvidia"));
|
|
|
|
// 获取 MP4 格式编码器
|
|
let mp4_encoders = sdk.ffmpeg_generator.get_encoders_for_extension("mp4");
|
|
```
|
|
|
|
### 自动编码器选择
|
|
```rust
|
|
// 自动选择最佳编码器
|
|
let command = sdk.ffmpeg_generator.generate_with_auto_encoder(
|
|
&template,
|
|
"input.mp4",
|
|
"output.mp4",
|
|
"windows", // 目标操作系统
|
|
Some("nvidia") // GPU 类型
|
|
)?;
|
|
```
|
|
|
|
### 模型推荐
|
|
```rust
|
|
// 根据分辨率获取推荐模型
|
|
let models = sdk.ffmpeg_generator.recommend_model_for_resolution(1080);
|
|
```
|
|
|
|
### 参数生成
|
|
```rust
|
|
// 生成音频编解码器参数
|
|
let audio_params = sdk.ffmpeg_generator.generate_audio_codec_params("AAC", Some(192));
|
|
|
|
// 生成视频编码器参数
|
|
let video_params = sdk.ffmpeg_generator.generate_video_encoder_params("h264-high-win-nvidia", "vbr", Some(23));
|
|
```
|
|
|
|
## 使用示例
|
|
|
|
### 基本用法
|
|
```rust
|
|
use tvai_v2::{TvaiSdk, TemplateBuilder};
|
|
|
|
let sdk = TvaiSdk::new();
|
|
|
|
let template = TemplateBuilder::new("高质量编码")
|
|
.enable_enhancement("prob-4")
|
|
.video_codec("H264", Some(23))
|
|
.audio_settings("AAC", 192, 2)
|
|
.build()?;
|
|
|
|
let command = sdk.generate_ffmpeg_command(&template, "input.mp4", "output.mp4")?;
|
|
```
|
|
|
|
### 平台优化
|
|
```rust
|
|
// 自动选择适合当前平台的编码器
|
|
let optimized_command = sdk.ffmpeg_generator.generate_with_auto_encoder(
|
|
&template,
|
|
"input.mp4",
|
|
"output.mp4",
|
|
"windows",
|
|
Some("nvidia")
|
|
)?;
|
|
```
|
|
|
|
## 优势
|
|
|
|
1. **无外部依赖**: 所有配置内置,部署简单
|
|
2. **智能选择**: 自动根据平台和硬件选择最佳编码器
|
|
3. **易于扩展**: 通过修改内置配置可以添加新编码器
|
|
4. **向后兼容**: 不影响现有代码的使用
|
|
5. **性能优化**: 支持各种硬件加速编码器
|
|
6. **中文友好**: 完整的中文注释和文档
|
|
|
|
## 测试和验证
|
|
|
|
提供了完整的测试套件:
|
|
- `ffmpeg_config_tests.rs` - 单元测试
|
|
- `builtin_config_test.rs` - 功能验证
|
|
- `ffmpeg_config_demo.rs` - 完整演示
|
|
|
|
运行测试:
|
|
```bash
|
|
cargo test
|
|
cargo run --example builtin_config_test
|
|
cargo run --example ffmpeg_config_demo
|
|
```
|
|
|
|
## 文档
|
|
|
|
- `README_FFMPEG_CONFIG.md` - 详细功能说明
|
|
- `USAGE_GUIDE.md` - 使用指南和示例
|
|
- `BUILTIN_CONFIG_SUMMARY.md` - 本总结文档
|
|
|
|
## 结论
|
|
|
|
内置配置功能使 Topaz Video AI SDK 更加强大和易用,提供了智能的编码器选择和优化的 FFmpeg 命令生成,同时保持了简单的 API 和良好的性能。
|