Skip to content

Repository files navigation

Galaxy Media Pro

Galaxy Media Pro

Simple image, video & audio conversion — hardware acceleration & smart parallelism

تبدیل ساده تصویر، ویدیو و صدا — با شتاب سخت‌افزار و موازی‌سازی هوشمند

English · فارسی

Version 3.0 Pro · Windows · PySide6 · FFmpeg GPL

QA GateVersion 3.0 ProPython 3.11+WindowsBilingual UIProprietary license

Docs · User Guide · Install · License · Contributing


Galaxy Media Pro is a bilingual Windows desktop converter for images (Pillow), video, and audio (FFmpeg) in one PySide6 app. It auto-detects NVIDIA / AMD / Intel GPU encoders, picks a safe pipeline tier, and schedules jobs with smart parallelism — so users convert media instead of wrestling with FFmpeg CLI.

Persian readers: full translation → README.fa.md


Table of contents


Why Galaxy Media Pro?

PainWhat this app does
FFmpeg flags are hardOne UI for image, video, and audio
GPU encode is vendor-specificAuto NVENC · AMF · QSV with CPU fallback
Parallel encode can crash GPUsGlobalGpuSemaphore + Smart / Parallel / Sequential modes
Install frictionPortable single EXE with bundled FFmpeg
Mixed-language teamsBuilt-in فارسی RTL + English LTR

Features

CapabilityDetail
Three media, one UIImage (PIL) · Video/Audio (FFmpeg) in one app
GPU accelerationNVENC · AMF · QSV — auto-detect, fallback to CPU
Smart tiersFull GPU · Encode-only GPU · Remux · CPU
ParallelismSequential · Parallel · Smart (CPU/GPU aware)
Bilingual UIPersian RTL + English LTR (Vazirmatn)
PortableOne EXE with bundled FFmpeg — no installer
Pro modeExtra controls, performance, NVENC presets
Safe lifecycleStart/Stop/rerun, queue-while-busy, thread-safe shutdown

Quick start

Prerequisites

  • Windows 10/11 · Python 3.11+ (for development; 3.12 recommended)
  • ffmpeg.exe at the project root (FFmpeg guide)

Run from source

git clone https://github.com/Ali-Rashidi-80/MediaConverterPro.git
cd MediaConverterPro
pip install -r requirements.txt
python galaxy_ultimate.py

Build portable (one file)

.\build.bat# or: .\build_portable.bat# Output: dist\GalaxyMediaPro_Portable.exe

Folder (onedir) build:

.\build_onedir.bat

Full QA (developers)

pip install -r requirements-dev.txt
.\tools\run_qa.ps1 --full
# or: python tools/qa_full.py --full

Deep install & build notes: docs/INSTALL.md


Tech stack

LayerTechnology
UIPySide6 (Qt) · bilingual i18n
ImagePillow · optional pillow-heif (HEIC)
Video / AudioFFmpeg GPL (ffmpeg.exe)
PackagingPyInstaller · UPX (exe; FFmpeg not UPX’d)
Qualitypytest · pytest-qt · Ruff · MyPy · Bandit · GitHub Actions
FontsVazirmatn (bundled under fonts/)

Project structure

MediaConverterPro/
├── galaxy/ # Core engine (UI + services + workers)
│ ├── core/ # constants, paths, utils, exceptions
│ ├── services/ # ffmpeg, pipeline, hw_probe, scheduler, settings
│ ├── workers/ # media_worker, image_worker, image_task
│ └── ui/ # main_window, pages, theme, widgets
├── galaxy_i18n.py # FA / EN strings
├── galaxy_fonts.py # Vazirmatn + typography
├── galaxy_ultimate.py # Entry point (PyInstaller)
├── tests/ # 249 pytest tests
├── tools/ # verify, benchmark, qa_full, bootstrap
├── docs/ # Full documentation (EN default + FA)
├── fonts/ # Bundled fonts
├── ffmpeg.exe # FFmpeg GPL (required)
├── ffprobe.exe # Integration tests
├── archive/ # Legacy — not used in build
├── build.bat # Default → portable onefile
├── build_portable.bat
├── build_onedir.bat
├── GalaxyConverter.portable.spec
├── LICENSE
├── CONTRIBUTING.md
├── SECURITY.md
├── pyproject.toml
└── requirements.txt

Architecture

flowchart TB
subgraph UI["UI Layer"]
MW[MainWindow]
P1[ImagePage]
P2[VideoPage]
P3[AudioPage]
end
subgraph Workers["Workers"]
IW[ImageWorker · ThreadPool]
MWk[MediaWorker · ThreadPool]
end
subgraph Engine["Engine"]
FP[ffmpeg_pipeline]
HP[hw_probe]
JS[job_scheduler]
SEM[GlobalGpuSemaphore]
end
MW --> P1 & P2 & P3
P1 --> IW
P2 & P3 --> MWk
MWk --> FP & JS & SEM
IW --> JS
FP --> HP
Loading

Full deep-dive: docs/ARCHITECTURE.md


Conversion workflow

flowchart LR
A[Add files] --> B[Pick format / preset]
B --> C{Busy?}
C -->|No| D[Start]
C -->|Yes| E[Queue · auto-run]
D --> F[Scheduler + GPU sem]
F --> G[Worker / FFmpeg]
G --> H[Output folder]
D -.->|Stop| I[Cancel in-flight]
I --> J[UI unlock · safe to Start again]
Loading

Supported formats

TypeFormats
ImageJPG · PNG · WEBP · HEIC* · TIFF · GIF · BMP · ICO
VideoMP4 · MKV · MOV · WEBM · AVI · GIF
AudioMP3 · WAV · FLAC · AAC · M4A · OGG · OPUS · WMA

* HEIC when pillow-heif is installed


Hardware acceleration

GPUEncoderGPU filter (Tier 1)
NVIDIAh264/hevc NVENCscale_cuda
AMDh264/hevc AMFvpp_amf
Intelh264/hevc QSVscale_qsv

Settings: Settings → Pro mode → Performance
Details: docs/ARCHITECTURE.md · capabilities check: python tools/verify_ffmpeg_caps.py


Usage (end user)

  1. Add files — drag & drop, file picker, or folder
  2. Choose format / preset (defaults are fine for most jobs)
  3. Press Start — watch the footer badge (encoder · progress · tier)
  4. Optional: Stop, add more files to the queue while converting, open the output folder

In-app help: Help tab · full walkthrough: docs/USER_GUIDE.md


Documentation

DocumentTopic
docs/INDEX.mdDocumentation hub
docs/INSTALL.mdInstall, build, portable
docs/USER_GUIDE.mdEnd-user guide
docs/DEVELOPMENT.mdDev setup & conventions
docs/ARCHITECTURE.mdTechnical architecture
docs/TESTING.mdQA & pytest
docs/FFMPEG_BUNDLE.mdFFmpeg & GPL
docs/CHANGELOG.mdRelease history
CONTRIBUTING.mdHow to contribute
SECURITY.mdVulnerability reporting
README.fa.mdPersian README

Quality & CI

python tools/qa_full.py # Daily gate (unit)
python tools/qa_full.py --full # + FFmpeg integration
python -m pytest tests -q # 249 tests · ~70% coverage
GateTool
LintRuff
TypesMyPy
SecurityBandit
Testspytest + pytest-qt
Acceptancebenchmark_matrix, verify_ffmpeg_caps

CI: .github/workflows/qa.yml — Windows · Python 3.12 · --full

Honest limit: automated gates catch regressions; real GPU/driver matrices still need manual QA.


Troubleshooting

SymptomFix
FFmpeg not foundPlace ffmpeg.exe next to the EXE / project root, or on PATH
NVENC unavailableNVIDIA driver + GPL FFmpeg build with NVENC
HEIC failspip install pillow-heif
Portable feels slowFirst launch extracts cache (10–20s); SSD helps
GPU encode failedApp falls back to CPU; check Help → system / logs
Start stuck after cancelFixed in 3.0 — update build; see CHANGELOG

More: docs/INSTALL.md · docs/USER_GUIDE.md


Developer

NameAli Rashidi
BrandWrite Your Way
Telegram channel@writeyourway
Contact@a_ra_80

Full credits live in-app under Help → About / Developer.


Contributing

This is a proprietary project. External contributions are welcome by prior agreement with the author.

See CONTRIBUTING.md for setup, conventions, QA gates, and PR expectations.
Dev guide: docs/DEVELOPMENT.md


Security

Do not open public issues for sensitive vulnerabilities. Follow SECURITY.md.


License & attributions

ComponentLicense
App code (Galaxy Media Pro)Proprietary — © Ali Rashidi · LICENSE
FFmpegGNU GPL — gyan.dev · BtbN
PySide6 / QtLGPL / Qt license
Pillow & dependenciesPer-package licenses on PyPI

FFmpeg attribution also appears in Help → GPL inside the app.


Archive

The archive/ folder holds the old Phase 5 project — not part of the current build.
Details: archive/README.md


Clone / Git

git clone https://github.com/Ali-Rashidi-80/MediaConverterPro.git
cd MediaConverterPro

.gitignore excludes .cursor/, dist/, build/, and QA caches.


Galaxy Media Pro 3.0
Ali Rashidi · @writeyourway · @a_ra_80
Built for people who want to convert — not wrestle with FFmpeg CLI.
ساخته‌شده برای کاربرانی که می‌خواهند تبدیل کنند — نه با FFmpeg CLI درگیر شوند.

About

MediaConverterPro — bilingual Windows image/video/audio converter with GPU accel (NVENC/AMF/QSV), smart parallelism, and portable FFmpeg EXE.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages