A modern, full-stack video trimming application with AI-powered transcription and summarization capabilities. Built with React, Node.js, FFmpeg, and Groq AI.
- π¬ Video Upload & Preview - Drag-and-drop interface with real-time preview
- βοΈ Precision Trimming - Interactive dual-slider for frame-accurate trimming
- β‘ Fast Processing - FFmpeg with input-seeking optimization for instant trim
- π₯ Direct Download - One-click download of trimmed videos
- π€ Multi-Language Transcription - Convert speech to text using Groq's Whisper Large V3 (supports all languages)
- β¨ AI Summarization - Generate concise summaries with Groq qwen3.6-27b (bullet points or paragraph format)
- πΎ Smart Caching - Automatic transcription/summary caching to save API quota
- π Real-time Processing - Live progress indicators for all AI operations
- π¨ Premium Glassmorphism Design - Modern, polished interface with smooth animations
- π± Fully Responsive - Works seamlessly on desktop, tablet, and mobile
- π Collapsible Panels - Clean, organized layout with expandable sections
- π Copy to Clipboard - Easy sharing of transcriptions
- React - UI framework
- Vite - Build tool and dev server
- Framer Motion - Smooth animations
- Tailwind CSS - Utility-first styling
- Nouislider - Custom range slider
- Axios - HTTP client
- Node.js - Runtime environment
- Express - Web framework
- FFmpeg - Video/audio processing
- Multer - File upload handling
- Groq SDK - AI API integration
- Groq Whisper Large V3 - Speech-to-text transcription
- Groq Qwen3.6-27b - Text summarization
- Node.js (v16 or higher)
- npm or yarn
- FFmpeg (bundled via ffmpeg-static)
- Groq API Key (Get one free here)
git clone https://github.com/YOUR_USERNAME/Video-Trimmer-with-AI-Features.git
cd video-trimmerBackend:
cd server
npm installFrontend:
cd ../client
npm installCreate server/.env file:
GROQ_API_KEY=your_groq_api_key_here
PORT=3000
NODE_ENV=developmentStart Backend (Terminal 1):
cd server
npm run devServer runs on http://localhost:3000
Start Frontend (Terminal 2):
cd client
npm run devFrontend runs on http://localhost:5173
- Click Upload Video or drag and drop a video file
- Use the dual-slider to select trim range
- Click Trim Video to process
- Download your trimmed video
- Upload a video
- Expand the Transcription panel
- Click Start Transcription
- Wait 10-30 seconds (depending on video length)
- View and copy the full transcription
- After transcribing (or auto-transcribe if not done)
- Choose format: Bullet Points or Paragraph
- Click Generate Summary
- View AI-generated summary in chosen format
| Feature | Daily Limit | Per Minute |
|---|---|---|
| Transcription | 2,000 requests | 30 requests |
| Summarization | 14,400 requests | 30 requests |
| Audio Size | 25MB max | - |
| Video Size | 50MB recommended | - |
video-trimmer/
βββ client/ # Frontend React app
β βββ src/
β β βββ components/ # React components
β β β βββ VideoUploader.jsx
β β β βββ VideoPlayer.jsx
β β β βββ TrimControls.jsx
β β β βββ TranscriptionPanel.jsx
β β β βββ SummaryPanel.jsx
β β β βββ AIFeatures.jsx
β β βββ services/ # API clients
β β β βββ api.js
β β β βββ aiApi.js
β β βββ App.jsx
β β βββ index.css
β βββ package.json
βββ server/ # Backend Node.js app
β βββ routes/
β β βββ video.routes.js # Video processing endpoints
β β βββ ai.routes.js # AI feature endpoints
β βββ utils/
β β βββ ffmpegHelper.js # Video/audio processing
β β βββ audioExtractor.js # Audio extraction
β β βββ groqService.js # Groq AI integration
β β βββ transcriptionCache.js # In-memory caching
β βββ middleware/
β β βββ upload.middleware.js
β βββ uploads/ # Temporary file storage
β βββ server.js
β βββ package.json
βββ README.md
- Input Seeking (
-ssbefore-i) for instant seeking - Stream Copy (
-c copy) for lossless, fast trimming - Web Optimization (
-movflags +faststart) for streaming
- Whisper Large V3 - Multi-language support (141 languages)
- qwen/qwen3.6-27b - Advanced summarization with custom prompts
- Smart Caching - Reduces API calls and improves response time
- Automatic Cleanup - Audio files deleted immediately after transcription
- Shared State - Transcription shared between panels to avoid duplicate calls
- Loading States - Real-time feedback for all async operations
- Error Handling - Comprehensive error messages with retry options
- Ensure
.envfile exists inserver/directory - Verify API key is correct (starts with
gsk_) - Restart the server after adding the key
- Compress video before upload (use HandBrake, etc.)
- Trim the video first to reduce file size
- Recommended: Keep videos under 50MB
- This is usually a Windows file lock issue
- The code includes retry logic (waits up to 5 seconds)
- If it persists, check antivirus settings
- Multiple video format support (WebM, AVI, MKV)
- Batch processing for multiple videos
- Cloud storage integration (AWS S3, Google Drive)
- Custom AI prompts for summaries
- Video compression before trimming
- Timestamp-based chapter detection
- Speaker diarization (identify multiple speakers)
MIT License - feel free to use this project for your portfolio!
- Groq AI - Lightning-fast AI inference
- FFmpeg - The ultimate multimedia framework
- React - UI excellence
- Tailwind CSS - Beautiful styling made easy
Your Name
- GitHub: @Nzhf
β If you found this project helpful, please give it a star!