puppe1990/video-converter
Professional video converter web application built with Next.js, React, and modern web technologies. Convert videos between multiple formats with high quality and intuitive interface.
VideoConvert Pro ๐ฌ
A modern, web-based video converter built with Next.js and FFmpeg that allows you to convert videos between multiple formats with professional quality settings.
โจ Features
- Multiple Format Support: Convert between MP4, AVI, MOV, WMV, WebM, MKV, FLV, and M4V
- Quality Control: Choose from High, Medium, or Low quality settings
- Drag & Drop Interface: Intuitive file upload with visual feedback
- Real-time Progress: Monitor conversion progress with detailed status updates
- Professional UI: Beautiful, responsive design built with Radix UI and Tailwind CSS
- Client-side Processing: All conversions happen in your browser using WebAssembly
- Batch Processing: Convert multiple files simultaneously
- No Server Required: Complete client-side solution for privacy and speed
๐ Live Demo
๐ ๏ธ Tech Stack
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS, Radix UI Components
- Video Processing: FFmpeg WebAssembly (@ffmpeg/ffmpeg)
- File Handling: React Dropzone, File API
- State Management: React Hooks
- Build Tool: Next.js with PostCSS and Autoprefixer
๐ฆ Installation
Prerequisites
- Node.js 18+
- npm or yarn
Setup
-
Clone the repository
git clone https://github.com/yourusername/video-converter.git cd video-converter -
Install dependencies
npm install # or yarn install -
Run the development server
npm run dev # or yarn dev -
Open your browser
Navigate to http://localhost:3000
๐ฏ Usage
Basic Video Conversion
- Upload Videos: Drag and drop video files or click to browse
- Configure Settings: Choose output format and quality level
- Start Conversion: Click "Start Conversion" to begin processing
- Download Results: Download your converted videos when ready
Supported Input Formats
- MP4 (.mp4) - Most compatible format
- AVI (.avi) - High quality, larger files
- MOV (.mov) - Apple QuickTime format
- WMV (.wmv) - Windows Media format
- WebM (.webm) - Web optimized format
- MKV (.mkv) - Open source container
- FLV (.flv) - Flash video format
- M4V (.m4v) - iTunes compatible format
Quality Settings
- High Quality: Best quality, larger file size (CRF 18, slow preset)
- Medium Quality: Balanced quality and size (CRF 23, medium preset)
- Low Quality: Smaller file size, lower quality (CRF 28, fast preset)
๐ง Development
Project Structure
video-converter/
โโโ app/ # Next.js app directory
โ โโโ globals.css # Global styles
โ โโโ layout.tsx # Root layout component
โ โโโ page.tsx # Main video converter page
โโโ components/ # Reusable UI components
โ โโโ ui/ # Radix UI components
โ โโโ theme-provider.tsx # Theme context provider
โโโ lib/ # Utility libraries
โ โโโ utils.ts # Helper functions
โ โโโ video-converter.ts # FFmpeg video conversion logic
โโโ public/ # Static assets
โโโ styles/ # Additional styles
โโโ package.json # Dependencies and scripts
Available Scripts
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLintKey Components
- VideoConverter: Main page component with drag & drop interface
- VideoConverter Class: FFmpeg wrapper for video processing
- UI Components: Reusable Radix UI components with Tailwind styling
๐ Features in Detail
Advanced Conversion Engine
The application uses FFmpeg WebAssembly for professional-grade video conversion:
- Codec Support: H.264, VP9, AAC, MP3, Opus
- Optimization: Preset-based encoding for quality/speed balance
- Format Detection: Automatic input format recognition
- Error Handling: Graceful fallback with mock conversion for demo
Responsive Design
- Mobile First: Optimized for all device sizes
- Dark/Light Theme: Automatic theme detection and switching
- Accessibility: ARIA labels and keyboard navigation support
- Performance: Optimized rendering with React best practices
๐ Deployment
Vercel (Recommended)
- Connect Repository: Link your GitHub repository to Vercel
- Auto-deploy: Every push to main branch triggers deployment
- Environment Variables: Configure any necessary environment variables
- Custom Domain: Add your custom domain if desired
Other Platforms
The application can be deployed to any platform that supports Next.js:
- Netlify: Use
next build && next export - AWS Amplify: Direct GitHub integration
- Docker: Build and deploy as container
๐ค Contributing
We welcome contributions! Please see our contributing guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Development Guidelines
- Follow TypeScript best practices
- Use conventional commit messages
- Ensure all tests pass
- Update documentation as needed
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- FFmpeg: For the powerful video processing capabilities
- Next.js Team: For the amazing React framework
- Radix UI: For accessible component primitives
- Tailwind CSS: For the utility-first CSS framework
๐ Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: your.email@example.com
๐ฎ Roadmap
- Audio Extraction: Convert videos to audio formats
- Video Editing: Basic trimming and cropping
- Batch Presets: Save and reuse conversion settings
- Cloud Storage: Direct upload to cloud services
- API Integration: RESTful API for programmatic access
- Mobile App: React Native companion app
Made with โค๏ธ by [Your Name]
Transform your videos with professional quality and ease.