All apps · 0 apps
Mp4Forge
Docker app from Jessielw's Repository
Overview
Readme
View on GitHubMp4Forge
A modern MP4 muxing tool with a desktop GUI interface, powered by MP4Box.
Desktop Application
WebUI (Docker/headless)
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.GPACorchoco install gpac - macOS:
brew install gpac - Linux:
apt install gpacoryum install gpac
- Windows:
Docker Application Requirements
Everything is self contained and included that you would need.
Installation
Option 1: Download Pre-built Binaries (Recommended)
- Go to the Releases page
- 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
- Windows:
- Extract the archive
- Run the application:
- Windows: Run
Mp4Forge.exe - macOS: Extract the .zip and drag
Mp4Forge.appto your Applications folder, then launch from Launchpad or Finder - Linux: Run
./Mp4Forge
- Windows: Run
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
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
Configure metadata: Set language, title, default/forced flags, and delay for each track
Set output: Go to the Output tab and specify your output file path
Add to queue: Click "Add Current Job" to add the muxing job to the queue
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
- Powered by GPAC/MP4Box
- Built with PySide6
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/jessielw/mp4forgeRuntime arguments
- Web UI
http://[IP]:[PORT:8000]- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Port for webui
- Target
- 8000
- Default
- 8000
- Value
- 8000
Config and logs
- Target
- /app/runtime
- Default
- /mnt/cache/appdata/mp4forge/runtime
- Value
- /mnt/cache/appdata/mp4forge/runtime