use tvai_sdk::{TvaiSdk, TemplateBuilder}; fn main() -> Result<(), Box> { println!("=== 内置配置测试 ===\n"); // 创建 SDK 实例 let sdk = TvaiSdk::new(); // 测试内置音频编解码器 println!("1. 测试内置音频编解码器:"); let audio_codecs = sdk.ffmpeg_generator.get_available_audio_codecs(); println!(" 加载了 {} 个音频编解码器", audio_codecs.len()); for codec in audio_codecs { println!(" - {}: {}", codec.name, codec.ffmpeg_opts); } // 测试 AAC 编解码器查找 if let Some(aac) = sdk.ffmpeg_generator.get_audio_codec("AAC") { println!(" ✓ 成功找到 AAC 编解码器"); if let Some(bitrate) = &aac.bitrate { println!(" 比特率范围: {}-{} kbps", bitrate.min, bitrate.max); } } else { println!(" ✗ 未找到 AAC 编解码器"); } println!(); // 测试内置视频编码器 println!("2. 测试内置视频编码器:"); let video_encoders = sdk.ffmpeg_generator.get_available_video_encoders(); println!(" 加载了 {} 个视频编码器", video_encoders.len()); for encoder in video_encoders.iter().take(5) { // 只显示前5个 println!(" - {} ({}): {}", encoder.id, encoder.encoder, encoder.ffmpeg_opts.chars().take(50).collect::()); } // 测试 H.264 编码器查找 if let Some(h264) = sdk.ffmpeg_generator.get_video_encoder_by_name("H264") { println!(" ✓ 成功找到 H.264 编码器: {}", h264.id); } else { println!(" ✗ 未找到 H.264 编码器"); } println!(); // 测试模型推荐 println!("3. 测试模型推荐:"); let test_resolutions = [480, 720, 1080, 2160]; for height in test_resolutions { let recommended = sdk.ffmpeg_generator.recommend_model_for_resolution(height); println!(" {}p 推荐模型: {:?}", height, recommended); } println!(); // 测试音频编解码器参数生成 println!("4. 测试音频编解码器参数生成:"); let aac_params = sdk.ffmpeg_generator.generate_audio_codec_params("AAC", Some(192)); println!(" AAC 192kbps: {}", aac_params); let ac3_params = sdk.ffmpeg_generator.generate_audio_codec_params("AC3", Some(448)); println!(" AC3 448kbps: {}", ac3_params); println!(); // 测试视频编码器参数生成 println!("5. 测试视频编码器参数生成:"); if let Some(encoder) = sdk.ffmpeg_generator.get_video_encoder("libx264-default") { let params = sdk.ffmpeg_generator.generate_video_encoder_params(&encoder.id, "vbr", Some(23)); println!(" libx264 CRF 23: {}", params); } println!(); // 测试兼容性筛选 println!("6. 测试兼容性筛选:"); let windows_encoders = sdk.ffmpeg_generator.get_compatible_video_encoders("windows", None); println!(" Windows 兼容编码器: {} 个", windows_encoders.len()); let nvidia_encoders = sdk.ffmpeg_generator.get_compatible_video_encoders("windows", Some("nvidia")); println!(" NVIDIA 编码器: {} 个", nvidia_encoders.len()); let mp4_encoders = sdk.ffmpeg_generator.get_encoders_for_extension("mp4"); println!(" MP4 兼容编码器: {} 个", mp4_encoders.len()); println!(); // 测试完整的 FFmpeg 命令生成 println!("7. 测试完整的 FFmpeg 命令生成:"); 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")?; println!(" 生成的命令: {}", command); println!(); // 测试自动编码器选择 println!("8. 测试自动编码器选择:"); match sdk.ffmpeg_generator.generate_with_auto_encoder(&template, "input.mp4", "output.mp4", "windows", Some("nvidia")) { Ok(auto_command) => println!(" 自动选择 (Windows+NVIDIA): {}", auto_command), Err(e) => println!(" 自动选择失败: {}", e), } println!(); // 生成编码器报告 println!("9. 编码器报告:"); let report = sdk.ffmpeg_generator.generate_encoder_report(); let lines: Vec<&str> = report.lines().take(10).collect(); // 只显示前10行 for line in lines { println!(" {}", line); } println!(" ... (报告已截断)"); println!("\n=== 测试完成 ==="); println!("所有内置配置功能正常工作!"); Ok(()) }