UNPKG

contaigents

Version:

Modular AI Content Ecosystem with Audio Generation

164 lines (163 loc) 5.67 kB
import { FFmpegTool } from '../services/tools/FFmpegTool.js'; export async function testFFmpegTool() { console.log('🎬 Testing FFmpeg Tool...\n'); const baseDir = process.cwd(); const ffmpegTool = new FFmpegTool(baseDir); // Test 1: Check tool definition console.log('📋 Tool Definition:'); const definition = ffmpegTool.getDefinition(); console.log(`Name: ${definition.name}`); console.log(`Description: ${definition.description}`); console.log(`Parameters: ${definition.parameters.length} parameters`); console.log(); // Test 2: Show agent guidance console.log('🤖 Agent Guidance:'); const guidance = ffmpegTool.getAgentGuidance(); console.log(guidance); console.log(); // Test 3: Check FFmpeg availability console.log('🔍 Checking FFmpeg availability...'); try { const result = await ffmpegTool.execute({ operation: 'extract_audio', input_file: 'nonexistent.mp4', output_file: 'test.mp3' }); if (!result.success && result.error?.includes('FFmpeg is not installed')) { console.log('❌ FFmpeg is not installed. Please install FFmpeg to use this tool.'); console.log(' Install instructions:'); console.log(' - macOS: brew install ffmpeg'); console.log(' - Ubuntu: sudo apt install ffmpeg'); console.log(' - Windows: Download from https://ffmpeg.org/download.html'); } else if (!result.success && result.error?.includes('Input file not found')) { console.log('✅ FFmpeg is available (input file validation working)'); } else { console.log('✅ FFmpeg tool is ready'); } } catch (error) { console.log(`❌ Error testing FFmpeg: ${error.message}`); } console.log(); // Test 4: Show example operations console.log('📝 Example Operations:'); const examples = [ { name: 'Extract Audio from Video', params: { operation: 'extract_audio', input_file: 'video.mp4', output_file: 'audio.mp3', format: 'mp3', quality: 'high' } }, { name: 'Trim Video Clip', params: { operation: 'trim', input_file: 'long_video.mp4', output_file: 'clip.mp4', start_time: '00:01:23', end_time: '00:02:15' } }, { name: 'Convert Audio Format', params: { operation: 'convert_format', input_file: 'audio.wav', output_file: 'audio.mp3', format: 'mp3', quality: '320k' } }, { name: 'Resize Video', params: { operation: 'resize', input_file: 'large_video.mp4', output_file: 'small_video.mp4', resolution: '1280x720', quality: 'medium' } }, { name: 'Add Watermark', params: { operation: 'overlay', input_file: 'video.mp4', output_file: 'watermarked.mp4', overlay_file: 'logo.png', overlay_position: 'top-right' } }, { name: 'Add Text Overlay', params: { operation: 'overlay', input_file: 'video.mp4', output_file: 'titled.mp4', text: 'My Video Title', font_size: '32' } }, { name: 'Extract GIF', params: { operation: 'extract_gif', input_file: 'video.mp4', output_file: 'animation.gif', start_time: '00:00:10', duration: '00:00:05' } }, { name: 'Merge Videos', params: { operation: 'merge', input_file: 'video1.mp4', output_file: 'merged.mp4', additional_files: ['video2.mp4', 'video3.mp4'] } }, { name: 'Replace Audio Track', params: { operation: 'replace_audio', input_file: 'video.mp4', output_file: 'dubbed.mp4', additional_files: ['new_audio.mp3'] } }, { name: 'Change Playback Speed', params: { operation: 'speed', input_file: 'normal.mp4', output_file: 'fast.mp4', speed: '2.0' } } ]; examples.forEach((example, index) => { console.log(`${index + 1}. ${example.name}:`); console.log(` Parameters: ${JSON.stringify(example.params, null, 2)}`); console.log(); }); console.log('🎯 Key Features:'); console.log('• Comprehensive audio/video processing'); console.log('• Smart parameter validation'); console.log('• Security checks and path restrictions'); console.log('• Quality presets and format detection'); console.log('• Detailed error messages and guidance'); console.log('• Support for complex operations like overlays and merging'); console.log(); console.log('✅ FFmpeg Tool test completed!'); } // Run test if called directly if (import.meta.url === `file://${process.argv[1]}`) { testFFmpegTool().catch(console.error); }