Resolve Converter
Batch-convert MP4 → DaVinci Resolve-compatible MOV — a native PyQt6 desktop
app for Linux that turns standard H.264/H.265 + AAC videos into MJPEG video + PCM 16-bit audio inside a QuickTime .mov container, so the free tier of
DaVinci Resolve can import them.
ffmpeg -i input.mp4 -c:v mjpeg -q:v 3 -c:a pcm_s16le output.mov
| Stream | Codec | Why |
|---|---|---|
| Video | MJPEG (-q:v 3, near-lossless JPEG) |
DaVinci free reads it natively |
| Audio | PCM s16le (uncompressed, little-endian) | DaVinci free reads it natively |
| Container | QuickTime .mov |
DaVinci free reads it natively |
DaVinci Resolve's free version on Linux cannot decode H.264/H.265 — the codecs almost every phone / camera / recorder produces. This app removes that friction with a folder-drop-and-go batch queue.
Features
- Add individual
.mp4files, a whole folder, or just drag & drop them in - Queue table with per-file status and live progress bars
- Runs up to 2 ffmpeg jobs in parallel without ever freezing the UI
- Global progress weighted by file size, plus a live ffmpeg console pane
- Dark, distraction-free theme that fits Hyprland/Omarchy setups
Install
pip install resolve-converter # or: pipx install resolve-converter
Runtime dependency: ffmpeg and ffprobe on your PATH.
sudo pacman -S ffmpeg # Arch / Omarchy
sudo apt install ffmpeg # Debian / Ubuntu
sudo dnf install ffmpeg # Fedora
Register with your desktop launcher
resolve-converter --install-desktop-entry
This installs the .desktop entry and icon into ~/.local/share/... and
refreshes the desktop database, so the app shows up in Quickshell, GNOME, KDE,
etc. Re-run it after moving to a different Python environment.
Usage
- + Add Files… or + Add Folder… (or drag
.mp4s onto the window) - Output — leave blank to write each file into a
Converted/subfolder next to its source; or pick one destination folder for everything. - ▶ Start Conversion — up to 2 parallel ffmpeg jobs; the UI never freezes.
- ■ Stop terminates running jobs and marks the rest as cancelled.
Status colors: Pending gray · Processing cyan · Completed green ·
Failed red · Cancelled amber · Skipped dim (when "Overwrite existing
files" is off and the .mov already exists).
Development
git clone <your-repo-url> && cd resolve-converter
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
python -m unittest discover -s tests
Building & publishing
pip install build twine
python -m build
python -m twine check dist/*
python -m twine upload --repository testpypi dist/* # try TestPyPI first
python -m twine upload dist/* # then PyPI
Notes & caveats
- Files get big. MJPEG is a JPEG per frame and PCM is uncompressed — output is typically 5–10× the input size. This is the price of DaVinci-free compatibility; import straight to Resolve, then export your edit.
- Quality of the video pass is set by
-q:v 3(2 = better, 4+ = smaller). EditConvertWorker._convertinsrc/resolve_converter/__init__.pyto change it. - Files whose output already exists are overwritten by default — uncheck Overwrite existing files to skip instead.
License
MIT — see LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file resolveconverter-1.0.0.tar.gz.
File metadata
- Download URL: resolveconverter-1.0.0.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c670d68233c0038560dd1eadab771719af81412d03cf60e32623edf5486ac34
|
|
| MD5 |
a01277b027ffae70ddd90f4f009647b7
|
|
| BLAKE2b-256 |
9d63ad6f13b8befd7aed5cbbebac92463ec9b36109d7a5bd9b5275f574ddc8d7
|
Provenance
The following attestation bundles were made for resolveconverter-1.0.0.tar.gz:
Publisher:
workflow.yml on CloudSnapManage/resolveconverter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
resolveconverter-1.0.0.tar.gz -
Subject digest:
0c670d68233c0038560dd1eadab771719af81412d03cf60e32623edf5486ac34 - Sigstore transparency entry: 2760027568
- Sigstore integration time:
-
Permalink:
CloudSnapManage/resolveconverter@0831f402e6be60b837b260ef43cdafebbc4f94a8 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/CloudSnapManage
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@0831f402e6be60b837b260ef43cdafebbc4f94a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file resolveconverter-1.0.0-py3-none-any.whl.
File metadata
- Download URL: resolveconverter-1.0.0-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0828e20b2f66a6ddb552adc20447fb0685af65209bdd0438af3067a48c05175
|
|
| MD5 |
1830be61f0365ac99ad1816a21299061
|
|
| BLAKE2b-256 |
4bfee247900de4455faaf0d8d5cbd244b4c1c9474844ce06e60910cd78b3d028
|
Provenance
The following attestation bundles were made for resolveconverter-1.0.0-py3-none-any.whl:
Publisher:
workflow.yml on CloudSnapManage/resolveconverter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
resolveconverter-1.0.0-py3-none-any.whl -
Subject digest:
f0828e20b2f66a6ddb552adc20447fb0685af65209bdd0438af3067a48c05175 - Sigstore transparency entry: 2760027604
- Sigstore integration time:
-
Permalink:
CloudSnapManage/resolveconverter@0831f402e6be60b837b260ef43cdafebbc4f94a8 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/CloudSnapManage
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@0831f402e6be60b837b260ef43cdafebbc4f94a8 -
Trigger Event:
push
-
Statement type: