Skip to content

Repository files navigation

MediaForge

LicenseLanguageTypeVersion

Python desktop media converter with batch processing, automatic format detection, and FFmpeg-powered transcoding for audio, video, and image files. The conversion engine is usable headlessly, so scripted jobs do not need to start the Qt interface.

Features

  • Multi-Format Support — Convert between dozens of audio, video, and image formats
  • Batch Processing — Queue and convert multiple files at once
  • Auto-Detection — Automatically identifies input format and codec information
  • FFmpeg Backend — Leverages FFmpeg for professional-grade transcoding
  • Preset Profiles — Common conversion presets for quick access
  • Progress Tracking — Real-time conversion progress with time estimates
  • Dark Theme — Professional dark-themed GUI
  • Codec Choices — H.264, HEVC, AV1, HDR-to-SDR, AVIF, JPEG XL, WebP, and lossless remux paths
  • Hardware Fallback — Detects NVENC, QSV, AMF, and VideoToolbox encoders and falls back to CPU encoders safely
  • Preset Packs — Built-in sharing/mobile/web presets plus JSON import/export
  • Preset Chains — Reuse crop → resize → encode → metadata/audio actions from JSON across batches
  • Audio/Image Tools — Waveform and silence analysis, loudness normalization, metadata scrubbing, watermarking, and WebP/AVIF comparisons
  • Automation — Export commands to PowerShell/BAT/sh, edit metadata without re-encoding, benchmark encoders, use optional plugins/HandBrake, and hand off to an external AI upscaler
  • Stream Graphs — Inspect, reorder, and select video, audio, subtitle, and data streams before multiplexing
  • Remote Queue — Submit root-scoped jobs from the local GUI or CLI to a dependency-free HTTP worker

Installation

python MediaForge.py

The CLI is also available without opening the GUI:

python MediaForge.py --check
python MediaForge.py --list-presets
python MediaForge.py --probe input.mkv
python MediaForge.py --convert input.mkv --preset "HEVC x265 Quality" --output output.mp4
python MediaForge.py --watch ./incoming --watch-output ./converted --preset "Discord 25MB" --parallelism 2
python MediaForge.py --convert input.mkv --dry-run --command-script commands.ps1
python MediaForge.py --worker --worker-root ./shared-media --worker-port 8765
python MediaForge.py --convert ./shared-media/input.mkv --remote http://127.0.0.1:8765 --wait-remote

Remote workers only accept input, output, and optional asset paths inside their configured worker root. The local GUI uses the same shared-storage contract when its optional remote-worker URL is filled in.

Requirements

  • Python 3.8+
  • FFmpeg (auto-detected or bundled)

Build an unsigned Windows one-file executable with locally detected FFmpeg and FFprobe bundled:

python build.py

Related Tools

ToolBest For
MediaForge (this repo)Converting between formats — audio, video, and image transcoding
VideoCrushCompressing video files for smaller size — CRF, bitrate, and resolution controls

License

MIT License

About

Python desktop media converter with batch processing, format detection, and FFmpeg-powered transcoding for audio, video, and image files.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages