2026-06-01 02:06:49 +03:00
2026-06-01 02:06:49 +03:00
2026-06-01 02:06:49 +03:00
2026-06-01 02:06:49 +03:00
2026-05-06 16:00:11 +03:00
2026-06-01 02:06:49 +03:00
2026-06-01 02:06:49 +03:00
2026-06-01 02:06:49 +03:00

Transmutate (Python GUI)

A modern Python/CustomTkinter rewrite of the original transmutate.sh bash script. Convert images, videos, and audio using ffmpeg + ImageMagick with a modern, cross-platform GUI.

Requirements

  • Python 3.8+
  • customtkinter (pip install customtkinter)
  • Pillow (for animated image detection)
  • ffmpeg (must be in PATH)
  • magick / ImageMagick (optional, provides better WebP/GIF handling)

Usage

cd rewrite
python transmutate.py <path/to/file>

The GUI opens automatically and detects the media type of the file.

Features

Supported Conversions

Source → Target Options
Image → Image PNG, JPG, WebP, AVIF, GIF (animated), MP4, MKV, WebM, AVI, MOV (animated)
Image → Video MP4, MKV, WebM, AVI, MOV
Image → Audio MP3, FLAC, WAV, OGG, M4A, AAC
Video → Image PNG, JPG, WebP, AVIF
Video → Video MP4, MKV, WebM, AVI, MOV, GIF, WebP (animated)
Video → Audio MP3, FLAC, WAV, OGG, M4A, AAC
Audio → Image PNG, JPG, WebP, AVIF
Audio → Video MP4, MKV, WebM, AVI, MOV
Audio → Audio MP3, FLAC, WAV, OGG, M4A, AAC

Per-Conversion Options

  • Quality slider (0-100, or 0-51 for video CRF) — smooth CustomTkinter slider
  • Audio quality slider (for video output)
  • Audio track selection (when multiple tracks exist)
  • Subtitle track selection (when multiple tracks exist)
  • Loop toggle (for GIF/WebP output)
  • Output path — same directory as source, auto-renamed on conflict

Conversion Modes

  • Image → Image: Direct ffmpeg conversion with quality control
  • Image → Video: Animated images are re-encoded with CRF
  • Image → Audio: Single frame extracted to audio
  • Video → Image: Single frame extraction
  • Video → Video: Full conversion with CRF and audio quality control
  • Video → GIF: Palettegen-based GIF with quality-dependent dithering
  • Video → WebP: Animated WebP output
  • Audio → Audio: Format conversion with quality control
  • Audio → Image: First frame extracted as image
  • Audio → Video: Single frame rendered as video

Architecture

rewrite/
├── transmutate.py          # Entry point (CLI → GUI)
├── transmutate_app/        # Package
│   ├── __init__.py
│   ├── gui.py              # CustomTkinter GUI application
│   └── engine/             # Conversion engine
│       ├── __init__.py
│       └── ffmpeg_engine.py  # Command building + execution

Compared to Bash Version

Feature Bash (kdialog) Python (CustomTkinter)
Dependencies bash, ffmpeg, kdialog python3, customtkinter, ffmpeg
GUI Multiple sequential popups Single unified CustomTkinter window
Stream selection kdialog checklist CustomTkinter checkboxes
Quality input kdialog inputbox CustomTkinter slider
File overwrite kdialog yes/no CustomTkinter dialog + auto-rename
Animated detection ffprobe Pillow + ffprobe
Code organization Single monolithic script Modular package
Description
Transmutate is a KDE desktop tool for converting images, videos, and audio files. It uses KDialog to provide interactive menus where users select the output format, set quality parameters, and choose audio/subtitle tracks. Under the hood, it leverages FFMPEG and ImageMagick to perform the actual transcoding.
Readme MIT 67 KiB
Languages
Python 66.5%
Shell 33.5%