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.
- 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
python MediaForge.pyThe 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-remoteRemote 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.
- 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| Tool | Best For |
|---|---|
| MediaForge (this repo) | Converting between formats — audio, video, and image transcoding |
| VideoCrush | Compressing video files for smaller size — CRF, bitrate, and resolution controls |
MIT License