Mp4Forge

Mp4Forge

Docker app from Jessielw's Repository

Overview

Mp4Forge (https://github.com/jessielw/MP4Forge) is a lightweight open source MP4Box GUI.

Mp4Forge

A modern MP4 muxing tool with a desktop GUI interface, powered by MP4Box.

Desktop Application

image image image image image

WebUI (Docker/headless)

image image image image image image

Features

  • Multi-track support: Add multiple video, audio, subtitle, and chapter tracks to a single MP4 container
  • Multi-track MP4 audio selection: Select specific audio tracks from MP4 files containing multiple audio streams
  • Language & metadata: Set language codes, titles, default/forced flags for all tracks
  • Audio delay: Support for audio delay values (automatically detected from filenames or MediaInfo)
  • Chapter support: Import chapters from OGM/XML files or other MP4 containers
  • Queue system: Build and manage multiple muxing jobs in a queue
  • Cross-platform: Available for Windows (8+ x64), macOS, and Linux
  • Theme support: Light, dark, and auto themes
  • Quick access titles: Save and use quick access titles for audio/subtitles

Supported Formats

Video: H.264/AVC, H.265/HEVC, MP4/M4V
Audio: AAC, AC3, E-AC3, MP2, MP3, Opus, OGG, MP4/M4A (with multi-track selection)
Subtitles: SRT, SSA, ASS, VTT, MP4/M4V
Chapters: OGM, XML, MP4 (extracted from existing files)
Output: MP4 container only

Desktop Application Requirements

MP4Box must be installed and available in your system PATH, or configured in the application settings.

  • Download MP4Box: GPAC Downloads
  • Or install via package manager:
    • Windows: winget install GPAC.GPAC or choco install gpac
    • macOS: brew install gpac
    • Linux: apt install gpac or yum install gpac

Docker Application Requirements

Everything is self contained and included that you would need.

Installation

Option 1: Download Pre-built Binaries (Recommended)

  1. Go to the Releases page
  2. Download the archive for your platform:
    • Windows: Mp4Forge-Windows.zip
    • macOS (Apple Silicon): Mp4Forge-macOS-ARM64.zip
    • macOS (Intel): Mp4Forge-macOS-Intel.zip
    • Linux: Mp4Forge-Linux.tar.gz
  3. Extract the archive
  4. Run the application:
    • Windows: Run Mp4Forge.exe
    • macOS: Extract the .zip and drag Mp4Forge.app to your Applications folder, then launch from Launchpad or Finder
    • Linux: Run ./Mp4Forge

Option 2: Run from Source

Requirements: Python 3.11 or 3.12, uv

git clone https://github.com/jessielw/MP4-Mux-Tool.git
cd MP4-Mux-Tool
uv sync --all-extras
uv run python frontend_desktop/main.py

Option 3: Docker (Web Interface)

Run MP4Forge with a web interface using Docker:

Compose Example:

services:
  mp4forge:
    image: ghcr.io/jessielw/mp4forge:latest
    platform: linux/amd64
    container_name: mp4forge-web
    ports:
      - "8000:8000"
    volumes:
      # mount for persistent config and logs
      - /SOME_PATH/runtime:/app/runtime
      # mount volume(s) you may need for input/output files
      - /SOME_PATH:/data/SOME_PATH
      - /SOME_PATH2:/data/SOME_PATH2
    environment:
      - PYTHONUNBUFFERED=1
    restart: "no"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
      interval: 60s
      timeout: 10s
      retries: 3
      start_period: 10s

Usage

  1. Add tracks: Use the Video, Audio, Subtitles, and Chapters tabs to add input files

    • Drag & drop files directly onto input fields (desktop only)
    • Use the file browser button
    • For multi-track MP4 audio files, a track selector dialog will appear
  2. Configure metadata: Set language, title, default/forced flags, and delay for each track

  3. Set output: Go to the Output tab and specify your output file path

  4. Add to queue: Click "Add Current Job" to add the muxing job to the queue

  5. Process: Click "Process Queue" to start muxing all queued jobs

Multi-track Audio

When adding an MP4 file with multiple audio tracks to an audio tab, Mp4Forge will display a track selector dialog showing:

  • Track ID
  • Format
  • Channels
  • Bitrate
  • Sample rate
  • Language
  • Title
  • Delay

Select the track you want to use and click OK.

Portable Mode

By default, configuration is stored in your OS user config directory:

  • Windows: %APPDATA%\Mp4Forge\config.toml
  • macOS: ~/Library/Application Support/Mp4Forge/config.toml
  • Linux: ~/.config/Mp4Forge/config.toml

For portable installations, the config is stored in the runtime/ folder alongside the executable (desktop only).

Development

Building from Source

# Install dependencies
uv sync --all-extras

# Run the application
uv run python frontend_desktop/main.py

# Build executables
uv run python build_desktop.py

Tech Stack

Desktop

  • Backend: MP4Box (GPAC)
  • Frontend: PySide6 (Qt6)
  • Build: PyInstaller
  • Package Manager: uv
  • MediaInfo: pymediainfo for track inspection

WebUI

  • Backend: Python/FastAPI/GPAC
  • Frontend: Svelte
  • Build: Docker
  • Package Managers: uv & node
  • MediaInfo: pymediainfo for track inspection

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

See LICENSE for details.

Credits

Install Mp4Forge on Unraid in a few clicks.

Find Mp4Forge in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Mp4Forge Review the template variables and paths Click Install

Related apps

Details

Repository
ghcr.io/jessielw/mp4forge
Last Updated2026-07-17
First Seen2026-01-28

Runtime arguments

Web UI
http://[IP]:[PORT:8000]
Network
bridge
Shell
sh
Privileged
false

Template configuration

WebUIPorttcp

Port for webui

Target
8000
Default
8000
Value
8000
AppdataPathrw

Config and logs

Target
/app/runtime
Default
/mnt/cache/appdata/mp4forge/runtime
Value
/mnt/cache/appdata/mp4forge/runtime