MediaForge is a full-stack media processing platform that allows users to upload, convert, and manipulate audio and video files through a modern web interface. This monorepo contains both the backend (Node.js/Express) and frontend (React) applications, and uses FFmpeg under the hood for all media processing tasks.
- Secure File Handling: All processed files are automatically deleted from the server after download, ensuring user privacy and preventing unauthorized access to temporary media files.
- Audio & Video Conversion: Convert between popular formats (mp3, wav, ogg, flac, mp4, avi, mov, webm).
- Audio Extraction: Extract audio from video files.
- Audio Trimming: Trim audio files to a specific segment.
- Video to GIF: Convert video clips to GIFs.
- Change Video Speed: Adjust playback speed of videos (0.25x to 4x).
- Mute Video: Remove audio from video files.
- Reverse Video: Reverse both video and audio tracks.
- (Planned) Merge Audio/Video, Add Watermark, Add Subtitles, Crop Video.
- Frontend: React, Tailwind CSS, Axios
- Backend: Node.js, Express, Multer, Fluent-ffmpeg, ffmpeg-static
- Media Processing: ffmpeg
- File Handling: Multer for uploads, custom helpers for file management
mediaforge/
│
├── backend/ # Express API, ffmpeg logic, file handling
│ ├── app.js
│ ├── routes/
│ │ └── mediaRoutes.js
│ ├── utils/
│ │ └── ffmpegHelper.js
│ ├── uploads/ # Temporary uploaded files
│ └── public/ # Processed files for download
│
├── frontend/ # React app
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Feature pages (audio/video tools)
│ │ └── App.jsx, index.jsx
│ └── public/
│
└── README.md
-
Install Node.js:
- Download and install Node.js (LTS version recommended) from nodejs.org.
- This will also install npm (Node Package Manager) automatically.
-
(Optional) Install Yarn:
- If you prefer Yarn over npm, install it from yarnpkg.com.
-
Clone the repository:
git clone https://github.com/aberkipek/mediaforge.git cd mediaforge -
Install dependencies for both backend and frontend:
cd backend npm install # or yarn install # and then cd ../frontend npm install # or yarn install
-
Configure environment variables:
-
In both
backendandfrontendfolders, create a.env.developmentfile at the root of each project. -
Individual
README.mdfiles inbackend/andfrontend/are available for more details on environment variables.
-
-
Start the development servers:
- Backend:
- For development (auto-restart on changes):
cd backend npm run dev # uses nodemon for hot-reloading
- For production (single run):
cd backend npm start # uses node to run the server
- For development (auto-restart on changes):
- Frontend: (in a new terminal window/tab)
cd frontend npm start or npm run dev
- Backend:
- Access the frontend at
http://localhost:3000(default). - The backend API runs on
http://localhost:5000(default). - Processed files are available for download and are deleted after download for security, privacy, and storage efficiency.
See individual README.md files in backend/ and frontend/ for more details on development, scripts etc.
This project is open source and licensed under the MIT License – see the LICENSE file for details.