mixvideo-v2/cargos/tvai-v2/BUILTIN_CONFIG_SUMMARY.md

4.6 KiB

内置配置功能总结

概述

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

编解码器查询

// 获取所有音频编解码器
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");

兼容性筛选

// 获取 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");

自动编码器选择

// 自动选择最佳编码器
let command = sdk.ffmpeg_generator.generate_with_auto_encoder(
    &template,
    "input.mp4",
    "output.mp4",
    "windows",      // 目标操作系统
    Some("nvidia")  // GPU 类型
)?;

模型推荐

// 根据分辨率获取推荐模型
let models = sdk.ffmpeg_generator.recommend_model_for_resolution(1080);

参数生成

// 生成音频编解码器参数
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));

使用示例

基本用法

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")?;

平台优化

// 自动选择适合当前平台的编码器
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 - 完整演示

运行测试:

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 和良好的性能。