Skip to content

aberkipek/mediaforge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MediaForge Monorepo

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.

Security & Privacy

  • 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.

Features

  • 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.

Tech Stack

  • 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

Project Structure

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

Getting Started

Prerequisites

  1. Install Node.js:

    • Download and install Node.js (LTS version recommended) from nodejs.org.
    • This will also install npm (Node Package Manager) automatically.
  2. (Optional) Install Yarn:

    • If you prefer Yarn over npm, install it from yarnpkg.com.

Setup (Step-by-Step)

  1. Clone the repository:

    git clone https://github.com/aberkipek/mediaforge.git
    cd mediaforge
  2. Install dependencies for both backend and frontend:

    cd backend
    npm install   # or yarn install
    # and then
    cd ../frontend
    npm install   # or yarn install
  3. Configure environment variables:

    • In both backend and frontend folders, create a .env.development file at the root of each project.

    • Individual README.md files in backend/ and frontend/ are available for more details on environment variables.

  4. 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
    • Frontend: (in a new terminal window/tab)
      cd frontend
      npm start or npm run dev

Usage

  • 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.

Contributing

See individual README.md files in backend/ and frontend/ for more details on development, scripts etc.

License

This project is open source and licensed under the MIT License – see the LICENSE file for details.

About

Open-source full-stack media processor with React, Node.js, and FFmpeg for audio/video conversion, trimming, speed control, etc., with secure file handling.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors