//! Simple Usage Examples //! //! This example shows the simplest ways to use the tvai template system //! for common video processing tasks. use tvai::*; use std::path::Path; #[tokio::main] async fn main() -> std::result::Result<(), Box> { println!("=== Simple Usage Examples ===\n"); // Example 1: Upscale a video to 4K println!("1. Upscaling to 4K:"); println!(" upscale_to_4k(input, output).await?;"); if Path::new("input.mp4").exists() { match upscale_to_4k(Path::new("input.mp4"), Path::new("output_4k.mp4")).await { Ok(_) => println!(" ✓ Successfully upscaled to 4K!"), Err(e) => println!(" ✗ Error: {}", e), } } else { println!(" (input.mp4 not found - example only)"); } println!(); // Example 2: Convert to 60fps println!("2. Converting to 60fps:"); println!(" convert_to_60fps(input, output).await?;"); if Path::new("input.mp4").exists() { match convert_to_60fps(Path::new("input.mp4"), Path::new("output_60fps.mp4")).await { Ok(_) => println!(" ✓ Successfully converted to 60fps!"), Err(e) => println!(" ✗ Error: {}", e), } } else { println!(" (input.mp4 not found - example only)"); } println!(); // Example 3: Remove noise println!("3. Removing noise:"); println!(" remove_noise(input, output).await?;"); if Path::new("noisy_video.mp4").exists() { match remove_noise(Path::new("noisy_video.mp4"), Path::new("clean_video.mp4")).await { Ok(_) => println!(" ✓ Successfully removed noise!"), Err(e) => println!(" ✗ Error: {}", e), } } else { println!(" (noisy_video.mp4 not found - example only)"); } println!(); // Example 4: Create slow motion println!("4. Creating 4x slow motion:"); println!(" slow_motion_4x(input, output).await?;"); if Path::new("action_video.mp4").exists() { match slow_motion_4x(Path::new("action_video.mp4"), Path::new("slow_motion.mp4")).await { Ok(_) => println!(" ✓ Successfully created slow motion!"), Err(e) => println!(" ✗ Error: {}", e), } } else { println!(" (action_video.mp4 not found - example only)"); } println!(); // Example 5: Stabilize shaky video println!("5. Stabilizing shaky video:"); println!(" auto_crop_stabilization(input, output).await?;"); if Path::new("shaky_video.mp4").exists() { match auto_crop_stabilization(Path::new("shaky_video.mp4"), Path::new("stable_video.mp4")).await { Ok(_) => println!(" ✓ Successfully stabilized video!"), Err(e) => println!(" ✗ Error: {}", e), } } else { println!(" (shaky_video.mp4 not found - example only)"); } println!(); // Example 6: Using any template by name println!("6. Using any template by name:"); println!(" process_with_template(input, output, \"template_name\").await?;"); if Path::new("film_footage.mp4").exists() { match process_with_template( Path::new("film_footage.mp4"), Path::new("enhanced_film.mp4"), "film_stock_4k_strong" ).await { Ok(_) => println!(" ✓ Successfully processed with film stock template!"), Err(e) => println!(" ✗ Error: {}", e), } } else { println!(" (film_footage.mp4 not found - example only)"); } println!(); // Show available templates println!("Available templates:"); let templates = list_available_templates(); for template_name in templates.iter().take(5) { if let Some((name, _)) = get_template_info(template_name) { println!(" • {} ({})", name, template_name); } } if templates.len() > 5 { println!(" ... and {} more templates", templates.len() - 5); } println!(); // Show how to get template information println!("Getting template information:"); if let Some((name, description)) = get_template_info("upscale_to_4k") { println!(" Template: {}", name); println!(" Description: {}", description); } println!(); println!("=== That's it! ==="); println!("The tvai template system makes video processing simple and powerful."); println!("Just choose the right function for your task and let the AI do the work!"); Ok(()) }