Kdenlive is a powerful, free and open-source video editor that brings professional-grade video editing capabilities to everyone. Whether you're creating a simple family video or working on a complex project, Kdenlive provides the tools you need to bring your vision to life.
This fork adds an opt-in recording and reconstruction system for producing auditable video-editing trajectories and deterministic training samples. It records semantic timeline changes and exact Kdenlive/MLT project states; it does not attempt to reproduce a session by replaying mouse gestures or keyboard timing. The MVP does not ask editors for plans, explanations, decisions, or creative intent. The internal team adds the task prompt later when preparing client samples.
The production pipeline is:
JSONL trajectory + content-addressed assets + exact state sidecars
-> validate session, semantic hashes, and global project hash chain
-> resolve the accepted commit/undo/redo branch
-> reconstruct and validate every captured checkpoint
-> render and validate the final accepted state with pinned Melt/MLT and FFmpeg
-> reconstruct every raw command, shortcut, gesture, and state change in a full editor training view
-> gate final-state media on structure, duration, audio structure, and video SSIM
-> atomically publish an accepted sample or a detailed quarantine bundle
Schema 0.3 recordings include stable entity IDs, transaction and undo-entry IDs, project profile/tool context, compressed content-addressed project states, capture-time checkpoint proxies, and explicit abort/recovery lifecycle events. The readers remain backward-compatible with schema 0.1 and 0.2 trajectories and finalized legacy sample directories.
| Platform | Editor collection | Reconstruction | Distribution status |
|---|---|---|---|
| Windows 10/11 x64 | EditPath.exe launches the adjacent instrumented kdenlive.exe |
Embedded Python plus packaged Melt/FFmpeg | Primary portable engineering build; unsigned |
| Linux x64 | Native source build and run-collector-app.sh |
Native tools or the pinned Docker image | Fully validated development path |
| macOS | Native source build using the upstream Kdenlive dependencies | Native tools or Docker Desktop | Developer path; no signed app bundle yet |
The normal editor entry point is the EditPath supervisor, not Kdenlive directly. Direct Kdenlive launches still work, but recording is disabled unless the supervisor supplies the recorder environment.
Use a portable artifact produced by the Windows portable MVP workflow, or build one from a 64-bit Windows PowerShell session:
Set-ExecutionPolicy -Scope Process Bypass
.\packaging\windows\build-editpath.ps1 -PreflightOnly
.\packaging\windows\build-editpath.ps1Extract windows-output\EditPath-Windows-x64.zip, confirm
SELF-TEST.json reports "passed": true, and run:
bin\EditPath.exe
Do not start bin\kdenlive.exe directly for collection. The portable package
contains Kdenlive, Melt/MLT, FFmpeg/FFprobe, the Python reconstruction package,
and its required Python dependency. Detailed prerequisites and failure-handling
instructions are in WINDOWS_BUILD.md.
Install the normal Kdenlive build dependencies documented in
dev-docs/build.md, plus Ninja, Python 3.10+, Zstandard,
Melt/MLT 7.38+, FFmpeg and FFprobe. Install the complete MLT plugin set used by
Kdenlive; at minimum reconstruction needs avformat, xml, and qimage or
pixbuf. Frei0r, AVFilter, kdenlivetitle, Glaxnimate, and an SDL/RtAudio
backend are needed when the project uses those capabilities.
On openSUSE/WSL, the QtMultimedia QML import is also mandatory for Kdenlive's timeline. The supervisor now refuses to start a broken editor instead of allowing the missing import to become a later Qt crash:
sudo zypper --non-interactive install \
qt6-multimedia-imports libmlt7-modules libmlt7-module-qt6 frei0r-pluginspython3 -m venv .venv
. .venv/bin/activate
python -m pip install -e .
cmake -S . -B build -GNinja -DBUILD_TESTING=OFF
cmake --build build --parallel
python -m edit_path doctor
./video-path-pilot/run-collector-app.shIf dependencies come from KDE Craft rather than system paths, set the location before running the launcher:
export KDENLIVE_PILOT_CRAFT_ROOT=/absolute/path/to/CraftRoot
./video-path-pilot/run-collector-app.shFor recorder diagnostics without the supervisor, use a fresh absolute JSONL path:
./video-path-pilot/run-video-path-pilot.sh /absolute/path/session-001.jsonlmacOS currently uses a source build. Install the Qt/KDE/MLT/FFmpeg dependencies from the upstream build guide, create the Python environment shown above, and build both applications:
cmake -S . -B build -GNinja -DBUILD_TESTING=OFF
cmake --build build --parallel
python3 -m edit_path doctor
EDIT_PATH_REPO_ROOT="$PWD" ./build/bin/EditPathrun-collector-app.sh may also be used when the dependencies are discoverable
by CMake. This path has no notarized or signed package yet, so it is intended
for developer testing rather than editor distribution.
- EditPath creates an isolated session under the user's Videos/Movies folder,
writes
session.json, and launches instrumented Kdenlive with a stable session ID and a session-ownededit.kdenliveproject. - Recorder hooks capture schema-0.3 semantic state changes, transaction and undo/redo identities, exact compressed Kdenlive/MLT states, project context, and independent checkpoint proxies. UI events remain audit evidence.
- If Kdenlive stops unexpectedly, existing evidence remains immutable. Resume Editing reopens the same project and configuration, retains stable entity IDs, and records the continuation as a new numbered segment.
- The editor renders one independent final video and closes Kdenlive normally.
EditPath presets
editor-final.mp4inside the active session, and if the editor chooses another.mp4,.mov,.mkv, or.webmdestination, finalization discovers that path from the saved Kdenlive project. No manual file copying is required; H.264 is not required. - Create Dataset Sample discovers and hashes project assets, assembles recovery segments, resolves file-backed media separately from self-contained Kdenlive generators and sequences, resolves the accepted commit/undo/redo branch, and reconstructs from the exact accepted project state—not from mouse/keyboard replay.
- Melt first renders a validation file matched to the independent editor
render, then creates
verification/reconstructed.mp4with the first available supported encoder (libx264,libopenh264, thenmpeg4). FFprobe rejects an audio-only encoder "success". FFmpeg compares structure, duration, audio, and video SSIM. The pipeline then joins the raw UI evidence to each exact before/after state and renders a full nonlinear-editor replay asedit-path/replay.mp4: project bin, monitor, effects/properties, multitrack timeline, selections, cursor motion, shortcuts, command feedback, and semantic apply events. Passing samples are atomically published; failures are quarantined with the precise gate and sequence.
The finished dataset item is under the displayed session's
completed-sample/ directory. sample.json is its authoritative entry point;
source media is under inputs/, the editor target under outputs/, the
normalized path and replay under edit-path/, derived QA under
verification/, and native audit material under provenance/. See
DATASET_ITEM.md for the complete layout.
For long-lived WSL GUI containers, create the container with docker run --init ... so a tiny init process reaps Kdenlive render children. The recorder
uses a dedicated single-thread sidecar pool with a bounded queue (two pending
states by default), reaps completed work during the session, flushes every
event, and updates the supervisor manifest heartbeat every 60 seconds. Override
the queue only for diagnostics with KDENLIVE_VIDEO_PATH_MAX_PENDING_SIDECARS
(accepted range 1-8).
The edit-path CLI implements validation, reconstruction, atomic publication,
multi-worker queue claiming, dataset indexing, and deterministic human-QA
sampling:
python3 -m edit_path doctor
python3 -m edit_path inspect /path/to/finalized-sample
python3 -m edit_path ingest /path/to/finalized-sample /path/to/work-queue
python3 -m edit_path work-one /path/to/work-queue /path/to/dataset \
--runtime-lock /path/to/runtime-lock.json
python3 -m edit_path qa-sample /path/to/dataset --sample-rate 0.10
python3 -m edit_path index /path/to/datasetAccepted samples contain outputs/final.*, the visual path replay at
edit-path/replay.mp4, the separately validated
verification/reconstructed.mp4, a portable reconstructed Kdenlive project,
normalized operations and events, source assets, exact states, checkpoint
references, and a verification report. Rejected sessions retain
their raw evidence and a machine-readable gate failure under quarantine/.
The pinned reconstruction image is defined in
reconstruction/Containerfile. Detailed gate
semantics, worker operation, runtime locking, QA review, and publication bundle
layout are documented in
video-path-pilot/RECONSTRUCTION.md.
Asset licensing metadata is retained but is intentionally non-blocking until
the publication phase; operators can enable that later with
--require-license.
For more information about Kdenlive's features, tutorials, and community, please visit our official website.
There you can also find downloads for both stable releases and experimental daily builds for Kdenlive.
Kdenlive is a community-driven project, and we welcome contributions from everyone! There are many ways to contribute beyond coding:
- Help translate Kdenlive into your language
- Report and triage bugs
- Write documentation
- Create tutorials
- Help other users on forums and bug trackers
Visit kdenlive.org to learn more about non-code contributions.
Kdenlive is written in C++ and is using these technologies and frameworks:
- Core Framework: MLT for video editing functionality
- GUI Framework: Qt and KDE Frameworks 6
- Additional Libraries: frei0r (video effects), LADSPA (audio effects)
- Check out our build instructions to set up your development environment
- Familiarize yourself with the architecture and coding guidelines
- If the MLT library is new to you check out MLT Introduction
- Join our Matrix channel
#kdenlive-dev:kde.orgfor developer discussions and support
Kdenlive's primary development happens on KDE Invent. While we maintain a GitHub mirror, all code contributions should be submitted through KDE's GitLab instance. For more information about KDE's development infrastructure, visit the KDE GitLab documentation.
- Browse open issues on KDE Invent, for example those labeled with First Task
- Check the KDE Bug Tracker for reported issues
- Look for issues tagged with "good first issue" or "help wanted"
Need help getting started? Join our Matrix channel #kdenlive-dev:kde.org - our community is friendly and always ready to help new contributors!
Please get in touch with us before working on a task, either by commenting in the issue or through our Matrix channel.
