4.6 KiB
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")
)?;
优势
- 无外部依赖: 所有配置内置,部署简单
- 智能选择: 自动根据平台和硬件选择最佳编码器
- 易于扩展: 通过修改内置配置可以添加新编码器
- 向后兼容: 不影响现有代码的使用
- 性能优化: 支持各种硬件加速编码器
- 中文友好: 完整的中文注释和文档
测试和验证
提供了完整的测试套件:
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 和良好的性能。