# FFmpeg 内置配置集成 本文档介绍了 Topaz Video AI SDK 中新增的 FFmpeg 内置配置功能。 ## 概述 SDK 现在内置了音频编解码器、视频编码器和模型推荐规则配置,使 FFmpeg 命令生成更加灵活和智能化。所有配置都直接编译到代码中,无需外部配置文件。 ## 内置配置 ### 音频编解码器配置 内置了以下音频编解码器及其参数: ```json { "name": "AAC", "ffmpegOpts": "aac -ac 2", "ext": ["mp4", "mov", "mkv", "avi"], "bitrate": { "min": 32, "minRec": 128, "max": 320, "default": 320, "suggested": [128, 160, 192, 256, 320], "ffmpegOpt": "-b:a k" } } ``` ### 视频编码器配置 内置了以下视频编码器及其参数: ```json { "id": "h264-high-win-nvidia", "encoder": "H264", "profile": "High", "ffmpegOpts": "-c:v h264_nvenc -profile:v high -pix_fmt yuv420p -g 30", "bitrateOpts": { "cbr": "-rc cbr -b:v -preset p6", "vbr": "-preset p7 -tune hq -rc constqp -qp " }, "cqpValues": { "High": [18], "Mid": [25], "Low": [28] }, "ext": ["mov", "mkv", "mp4"], "os": "windows|linux", "device": "nvidia|tesla" } ``` ### 模型推荐规则 内置了基于分辨率的模型推荐规则: ```json { "id": "target-resolution", "property": "height", "type": "range", "conditions": [ { "min": 1, "max": 480, "recommendedModelValues": ["iris", "artemis"] } ] } ``` ## 新增功能 ### 1. 内置配置加载 SDK 在初始化时自动加载内置配置: ```rust let sdk = TvaiSdk::new(); // 自动加载所有内置配置 ``` ### 2. 音频编解码器查询 ```rust // 获取所有可用的音频编解码器 let audio_codecs = sdk.ffmpeg_generator.get_available_audio_codecs(); // 根据名称查找特定编解码器 let aac_codec = sdk.ffmpeg_generator.get_audio_codec("AAC"); ``` ### 3. 视频编码器查询 ```rust // 获取所有可用的视频编码器 let video_encoders = sdk.ffmpeg_generator.get_available_video_encoders(); // 根据ID查找编码器 let encoder = sdk.ffmpeg_generator.get_video_encoder("h264-high-win-nvidia"); // 根据名称查找编码器 let h264_encoder = sdk.ffmpeg_generator.get_video_encoder_by_name("H264"); ``` ### 4. 兼容性筛选 ```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"); ``` ### 5. 自动编码器选择 ```rust let template = TemplateBuilder::new("自动选择") .enable_enhancement("prob-4") .build()?; // 自动选择适合的编码器 let command = sdk.ffmpeg_generator.generate_with_auto_encoder( &template, "input.mp4", "output.mp4", "windows", // 目标操作系统 Some("nvidia") // GPU 类型 )?; ``` ### 6. 模型推荐 ```rust // 根据分辨率获取推荐模型 let recommended_models = sdk.ffmpeg_generator.recommend_model_for_resolution(1080); println!("1080p 推荐模型: {:?}", recommended_models); ``` ### 7. 编码器报告生成 ```rust // 生成详细的编码器报告 let report = sdk.ffmpeg_generator.generate_encoder_report(); println!("{}", report); ``` ## 使用示例 ### 基本用法 ```rust use tvai_v2::{TvaiSdk, TemplateBuilder}; fn main() -> Result<(), Box> { let sdk = TvaiSdk::new(); // 创建模板,使用配置文件中的编解码器 let template = TemplateBuilder::new("高质量编码") .enable_enhancement("prob-4") .video_codec("H264", Some(23)) .audio_settings("AAC", 192, 2) .build()?; // 生成 FFmpeg 命令 let command = sdk.generate_ffmpeg_command(&template, "input.mp4", "output.mp4")?; println!("FFmpeg 命令: {}", command); Ok(()) } ``` ### 高级用法 ```rust // 根据目标平台自动选择最佳编码器 let auto_command = sdk.ffmpeg_generator.generate_with_auto_encoder( &template, "input.mp4", "output.mp4", "windows", Some("nvidia") )?; // 获取推荐模型并创建优化模板 let recommended = sdk.ffmpeg_generator.recommend_model_for_resolution(2160); let optimized_template = TemplateBuilder::new("4K 优化") .enable_enhancement(&recommended[0]) .build()?; ``` ## 内置编码器支持 ### 音频编解码器 - **AAC**: 支持 MP4、MOV、MKV、AVI 格式,比特率范围 32-320 kbps - **AC3**: 支持 MP4、MOV、MKV、AVI 格式,比特率范围 160-640 kbps - **PCM**: 支持 MOV、MKV、AVI 格式,无损音频 - **Vorbis**: 支持 WebM 格式 ### 视频编码器 - **H.264 NVENC**: NVIDIA GPU 硬件加速编码 - **H.265 NVENC**: NVIDIA GPU 硬件加速 HEVC 编码 - **H.264 VideoToolbox**: macOS 硬件加速编码 - **H.265 VideoToolbox**: macOS 硬件加速 HEVC 编码 - **H.264 AMF**: AMD GPU 硬件加速编码 - **H.265 AMF**: AMD GPU 硬件加速 HEVC 编码 - **libx264**: 软件 H.264 编码(跨平台) - **libx265**: 软件 H.265 编码(跨平台) ## 错误处理 内置配置解析失败时,SDK 会: 1. 返回配置错误信息 2. 回退到基本的编码器设置 3. 确保基本功能仍然可用 ## 扩展配置 如需添加更多编码器或修改配置,可以: 1. 修改 `ffmpeg.rs` 中的内置 JSON 字符串 2. 重新编译项目 3. 或者通过代码动态添加编码器配置