A full-stack SaaS application for intelligent video processing, featuring compression, stabilization, and AI-powered key moment extraction.
- Video Compression: Achieve up to 60% reduction in video file size while maintaining quality
- Video Stabilization: Smooth out shaky footage for professional-looking results
- AI Key Moment Extraction: Automatically identify and extract important moments from videos using AI analysis
- Scalable Architecture: Optimized for handling multiple concurrent video processing tasks
- Average Compression: 60% reduction in video size
- Test Coverage: Successfully processed 15+ test videos
- Resource Efficiency: Optimized for resource-constrained Docker environments
- Production Ready: Deployed and tested on DigitalOcean infrastructure
- React.js - Modern UI framework for building responsive interfaces
- Node.js - Server-side runtime for handling API requests and video processing
- FFmpeg - Core video processing engine for compression and stabilization
- VOSK - Speech recognition for audio analysis
- Gemini API - AI-powered analysis for key moment detection
- Docker - Containerization for consistent deployment
- NGINX - Reverse proxy and load balancing
- DigitalOcean - Cloud hosting platform
The application follows a microservices architecture with containerized components:
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ React.js │ ───> │ NGINX │ ───> │ Node.js │
│ Frontend │ │ Reverse Proxy│ │ Backend │
└─────────────┘ └──────────────┘ └─────────────┘
│
├─> FFmpeg
├─> VOSK
└─> Gemini API
- Node.js (v14 or higher)
- Docker and Docker Compose
- FFmpeg installed locally (for development)
- Clone the repository:
git clone https://github.com/Siddhartha-0709/VideoPod
cd VideoPod- Install dependencies:
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm install- Set up environment variables:
cp .env.example .env
# Edit .env with your configuration- Run with Docker:
docker-compose up -dThe application will be available at http://localhost:3000
# Backend
NODE_ENV=production
PORT=5000
GEMINI_API_KEY=your_gemini_api_key
# Frontend
REACT_APP_API_URL=http://localhost:5000
# Docker
DOCKER_MEMORY_LIMIT=2g
DOCKER_CPU_LIMIT=2- Upload Video: Select a video file from your device
- Choose Processing Options:
- Enable compression for smaller file sizes
- Apply stabilization for smoother playback
- Enable AI analysis for key moment extraction
- Process: Click process and wait for the optimized video
- Download: Download the processed video and key moments report
The application uses optimized FFmpeg settings for resource-constrained environments:
- H.264 codec with CRF 23 for compression
- 2-pass encoding for better quality
- Hardware acceleration when available
- Containerized resource limits to prevent memory overflow
- Queue-based processing to handle multiple videos
- Automatic cleanup of temporary files
- Compression: Utilizes H.264 codec with optimized CRF values
- Parallel Processing: Handles multiple videos concurrently with queue management
- Caching: Implements caching strategies for faster repeated processing
- Resource Management: CPU and RAM limits configured for optimal performance
Contributions are welcome! Please feel free to submit a Pull Request.
- FFmpeg community for the powerful video processing library
- VOSK team for speech recognition capabilities
- Google Gemini for AI-powered analysis
Project Link: https://github.com/yourusername/video-processing-saas
⭐ Star this repository if you find it helpful!