feat: 修复tvai调用问题
This commit is contained in:
159
cargos/tvai/examples/integrated_api_demo.rs
Normal file
159
cargos/tvai/examples/integrated_api_demo.rs
Normal file
@@ -0,0 +1,159 @@
|
||||
//! Demo of integrated template API
|
||||
//!
|
||||
//! This example demonstrates how to use the integrated template API
|
||||
//! for convenient video processing with predefined templates.
|
||||
|
||||
use tvai::*;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
|
||||
println!("=== Integrated Template API Demo ===\n");
|
||||
|
||||
// List all available templates
|
||||
println!("Available templates:");
|
||||
let templates = list_available_templates();
|
||||
for (i, template_name) in templates.iter().enumerate() {
|
||||
if let Some((name, description)) = get_template_info(template_name) {
|
||||
println!(" {}. {} - {}", i + 1, name, description);
|
||||
}
|
||||
}
|
||||
println!("Total: {} templates\n", templates.len());
|
||||
|
||||
// Demonstrate template information retrieval
|
||||
println!("=== Template Information ===");
|
||||
let sample_templates = ["upscale_to_4k", "convert_to_60fps", "remove_noise", "4x_slow_motion"];
|
||||
|
||||
for template_name in &sample_templates {
|
||||
if let Some((name, description)) = get_template_info(template_name) {
|
||||
println!("Template: {}", name);
|
||||
println!(" ID: {}", template_name);
|
||||
println!(" Description: {}", description);
|
||||
println!();
|
||||
}
|
||||
}
|
||||
|
||||
// Demonstrate template application (without actual processing)
|
||||
println!("=== Template Application Demo ===");
|
||||
|
||||
// Get template manager to show applied parameters
|
||||
let manager = global_topaz_templates().lock().unwrap();
|
||||
|
||||
for template_name in &sample_templates {
|
||||
match manager.apply_template(template_name) {
|
||||
Ok(applied) => {
|
||||
println!("✓ Template '{}' applied successfully:", applied.name);
|
||||
println!(" Description: {}", applied.description);
|
||||
|
||||
if let Some(upscale) = &applied.enhance_params.upscale {
|
||||
println!(" Upscale parameters:");
|
||||
println!(" Scale factor: {}x", upscale.scale_factor);
|
||||
println!(" Model: {:?}", upscale.model);
|
||||
println!(" Compression: {}", upscale.compression);
|
||||
println!(" Quality preset: {:?}", upscale.quality_preset);
|
||||
|
||||
if upscale.noise > 0.0 {
|
||||
println!(" Noise reduction: {}", upscale.noise);
|
||||
}
|
||||
if upscale.details > 0.0 {
|
||||
println!(" Detail enhancement: {}", upscale.details);
|
||||
}
|
||||
if upscale.halo > 0.0 {
|
||||
println!(" Halo reduction: {}", upscale.halo);
|
||||
}
|
||||
if upscale.blur > 0.0 {
|
||||
println!(" Blur reduction: {}", upscale.blur);
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(interpolation) = &applied.enhance_params.interpolation {
|
||||
println!(" Interpolation parameters:");
|
||||
println!(" Multiplier: {}x", interpolation.multiplier);
|
||||
println!(" Model: {:?}", interpolation.model);
|
||||
println!(" Input FPS: {}", interpolation.input_fps);
|
||||
if let Some(target_fps) = interpolation.target_fps {
|
||||
println!(" Target FPS: {}", target_fps);
|
||||
}
|
||||
}
|
||||
|
||||
if applied.stabilization_enabled {
|
||||
println!(" ✓ Stabilization enabled");
|
||||
}
|
||||
|
||||
if applied.grain_enabled {
|
||||
println!(" ✓ Grain effect enabled");
|
||||
}
|
||||
|
||||
if let Some(fps) = applied.output_fps {
|
||||
println!(" Output FPS: {}", fps);
|
||||
}
|
||||
|
||||
println!();
|
||||
}
|
||||
Err(e) => {
|
||||
println!("✗ Failed to apply template '{}': {}", template_name, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
drop(manager); // Release lock
|
||||
|
||||
// Show how to use the convenient API functions
|
||||
println!("=== Convenient API Functions ===");
|
||||
println!("The following functions are available for easy video processing:");
|
||||
println!();
|
||||
|
||||
println!("// General template processing");
|
||||
println!("process_with_template(input, output, \"upscale_to_4k\").await?;");
|
||||
println!();
|
||||
|
||||
println!("// Specific template shortcuts");
|
||||
println!("upscale_to_4k(input, output).await?;");
|
||||
println!("convert_to_60fps(input, output).await?;");
|
||||
println!("remove_noise(input, output).await?;");
|
||||
println!("slow_motion_4x(input, output).await?;");
|
||||
println!("auto_crop_stabilization(input, output).await?;");
|
||||
println!();
|
||||
|
||||
// Example usage patterns
|
||||
println!("=== Example Usage Patterns ===");
|
||||
println!();
|
||||
|
||||
println!("1. Simple 4K upscaling:");
|
||||
println!(" let result = upscale_to_4k(Path::new(\"input.mp4\"), Path::new(\"output_4k.mp4\")).await?;");
|
||||
println!();
|
||||
|
||||
println!("2. Convert to 60fps:");
|
||||
println!(" let result = convert_to_60fps(Path::new(\"input.mp4\"), Path::new(\"output_60fps.mp4\")).await?;");
|
||||
println!();
|
||||
|
||||
println!("3. Remove noise:");
|
||||
println!(" let result = remove_noise(Path::new(\"noisy_input.mp4\"), Path::new(\"clean_output.mp4\")).await?;");
|
||||
println!();
|
||||
|
||||
println!("4. Create slow motion:");
|
||||
println!(" let result = slow_motion_4x(Path::new(\"input.mp4\"), Path::new(\"slow_motion.mp4\")).await?;");
|
||||
println!();
|
||||
|
||||
println!("5. Stabilize shaky video:");
|
||||
println!(" let result = auto_crop_stabilization(Path::new(\"shaky.mp4\"), Path::new(\"stable.mp4\")).await?;");
|
||||
println!();
|
||||
|
||||
println!("=== Custom Template Usage ===");
|
||||
println!();
|
||||
println!("You can also load custom templates:");
|
||||
println!("let mut manager = TopazTemplateManager::new();");
|
||||
println!("manager.load_from_file(\"my_template\".to_string(), \"path/to/template.json\")?;");
|
||||
println!("let result = process_with_template(input, output, \"my_template\").await?;");
|
||||
println!();
|
||||
|
||||
println!("Or load all templates from a directory:");
|
||||
println!("let count = manager.load_examples_templates(\"templates/\")?;");
|
||||
println!("println!(\"Loaded {{}} templates\", count);");
|
||||
println!();
|
||||
|
||||
println!("=== Demo Complete ===");
|
||||
println!("The template system is now fully integrated into the tvai library!");
|
||||
println!("You can use any of the convenient functions shown above for video processing.");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user