A simple, browser-based video converter built with React and FFMPEG.wasm. Convert your videos directly in the browser without uploading them to any server.
- 🎥 Browser-based video conversion
- 🔒 Privacy-focused (no server uploads)
- ⚡ Fast, client-side processing
- 📱 Responsive design
- 🎛️ Advanced conversion settings:
- Video codec selection (H.264/H.265)
- Audio codec options (AAC/MP3)
- Customizable bitrates
- Frame rate control
- Resolution scaling with aspect ratio preservation
- React 18
- TypeScript
- Tailwind CSS
- FFMPEG.wasm
- Vite
- Node.js 18 or higher
- npm or yarn
- Clone the repository:
git clone https://github.com/addyosmani/video-compress.git
cd video-compress
- Install dependencies:
npm install
- Start the development server:
npm run dev
The application will be available at http://localhost:5173
npm run build
- Click the upload area or drag and drop a video file
- Adjust conversion settings (optional):
- Select video and audio codecs
- Set bitrates
- Choose frame rate
- Adjust resolution
- Click "Convert to MP4" to start the conversion
- Wait for the conversion to complete
- The converted video will automatically download
- The app uses Web Assembly through FFMPEG.wasm for video processing
- Cross-Origin Isolation is required for SharedArrayBuffer support
- Resolution scaling maintains aspect ratio using the formula:
scale='min(target_width,iw)':'-2'
- Video dimensions are automatically adjusted to be divisible by 2 for codec compatibility
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
- FFMPEG.wasm for making browser-based video processing possible
- Tailwind CSS for the utility-first CSS framework
- Lucide Icons for the beautiful icons