{"name":"Video Processing Server (Rust Edition)","version":"3.1.0","endpoints":{"POST /upload":{"contentType":"multipart/form-data","description":"Convert uploaded image to pixel data"},"GET /api/video/audio":{"description":"Extract audio from video URL","example":"/api/video/audio?url=https://example.com/video.mp4&targetSampleRate=44100&audioFormat=mp3","parameters":{"audioFormat":"Output format: 'wav' or 'mp3' (optional, default: 'wav')","targetSampleRate":"Target sample rate (optional, default: 32000)","url":"Video URL (required)","windowSize":"Window size for analysis (optional, default: 2048)"},"response":"Base64-encoded audio data"},"GET /api/audio/convert":{"description":"Convert audio from URL (supports WAV and MP3 output)","examples":{"mp3":"/api/audio/convert?url=https://example.com/audio.wav&audioFormat=mp3","wav":"/api/audio/convert?url=https://example.com/audio.mp3&audioFormat=wav"},"parameters":{"audioFormat":"Output format: 'wav' or 'mp3' (optional, default: 'wav')","targetSampleRate":"Target sample rate (optional, default: 32000)","url":"Audio URL (required)"},"response":"Audio file in specified format"},"GET /video-frames/:sessionId":{"description":"Get video frames (legacy format with full pixel data)","example":"/video-frames/SESSION_ID?start=1&count=10","parameters":{"count":"Number of frames (optional, default: 10)","sessionId":"Video session ID (required)","start":"Starting frame number (optional, default: 1)"},"response":"Full pixel data as nested arrays"},"GET /convert":{"description":"Convert image from URL to pixel data","example":"/convert?url=https://example.com/image.png&maxWidth=400&maxHeight=400","parameters":{"maxHeight":"Maximum height (optional, default: 480)","maxWidth":"Maximum width (optional, default: 640)","url":"Image URL (required)"}},"GET /api/audio/mp3":{"description":"Convert audio to MP3 format","parameters":{"targetSampleRate":"Target sample rate (optional, default: 32000)","url":"Audio URL (required)"},"response":"MP3 audio file"},"GET /video-init":{"description":"Initialize video processing (supports YouTube and Instagram URLs)","examples":{"instagram":"/video-init?url=https://www.instagram.com/reel/REEL_ID&maxFrames=50&fps=15&audioFormat=wav","regular":"/video-init?url=https://example.com/video.mp4&maxFrames=100&fps=10&audioFormat=mp3","youtube":"/video-init?url=https://www.youtube.com/watch?v=VIDEO_ID&maxFrames=100&fps=10&audioFormat=mp3"},"parameters":{"audioFormat":"Audio format for extraction: 'wav' or 'mp3' (optional, default: 'wav')","fps":"Target FPS (optional, default: 15)","maxFrames":"Maximum frames (optional, default: 100)","maxPixels":"Maximum pixel dimension (optional, default: 640)","url":"Video URL, YouTube URL, or Instagram Reel URL (required)"}},"GET /api/audio/wav":{"description":"Convert audio to WAV format (legacy endpoint)","parameters":{"targetSampleRate":"Target sample rate (optional, default: 32000)","url":"Audio URL (required)"},"response":"WAV audio file"},"GET /video-status/:sessionId":{"description":"Check video processing status","example":"/video-status/SESSION_ID","parameters":{"sessionId":"Video session ID (required)"}},"GET /video-frames-buffer/:sessionId":{"compatibility":"Designed for Roblox Luau buffer library deserialization","description":"Get video frames (optimized buffer format with Base64 binary data)","example":"/video-frames-buffer/SESSION_ID?start=1&count=10","format":"RGB24_BINARY (8-byte header + 3 bytes per pixel)","parameters":{"count":"Number of frames (optional, default: 10)","sessionId":"Video session ID (required)","start":"Starting frame number (optional, default: 1)"},"response":"Base64-encoded binary frame data optimized for Luau buffer library"}},"features":["High-performance Rust implementation","Zero-cost abstractions","Memory-safe processing","Concurrent request handling","YouTube and Instagram support via yt-dlp","FFmpeg integration for video processing","Audio extraction in WAV and MP3 formats","Real pixel data extraction","Buffer-optimized API for Roblox Luau compatibility","Legacy API support for backwards compatibility","Base64-encoded binary frame data","Full CORS support"],"requirements":["Rust 1.70 or later","FFmpeg for video processing","yt-dlp for social media downloads"],"performance":{"concurrency":"Async/await with Tokio","safety":"Memory-safe with compile-time checks","language":"Rust","memory":"Zero-copy where possible"}}