Read an MLT / .kdenlive document back into a summary — the inverse leg of mlt.model. Pure and portable: nodes in, data out, no IO.
A .kdenlive file is an MLT document with Kdenlive conventions: the bin lives in a playlist id="main_bin", the timeline is the tractor whose multitrack references the track playlists, and cuts are in/out attributes (clock strings or frame counts).
Read an MLT / .kdenlive document back into a summary — the inverse leg of mlt.model. Pure and portable: nodes in, data out, no IO. A .kdenlive file is an MLT document with Kdenlive conventions: the bin lives in a playlist id="main_bin", the timeline is the tractor whose multitrack references the track playlists, and cuts are in/out attributes (clock strings or frame counts).
(bin mlt-node)The project bin: clips referenced by the main_bin playlist, as [{:id :resource} ...]. Kdenlive writes bin clips as <chain> (modern) or <producer> (legacy) elements; both carry the resource in a property. A bare MLT document has no main_bin and its producers are the bin.
The project bin: clips referenced by the main_bin playlist, as
[{:id :resource} ...]. Kdenlive writes bin clips as <chain> (modern) or
<producer> (legacy) elements; both carry the resource in a property.
A bare MLT document has no main_bin and its producers are the bin.(duration-frames {:keys [profile tracks]})Total timeline length in frames: the longest track's entries + blanks, resolved at the profile's fps. Cuts given as clocks convert; bare numbers are already frames. Sub-tractor nesting is flattened first.
Total timeline length in frames: the longest track's entries + blanks, resolved at the profile's fps. Cuts given as clocks convert; bare numbers are already frames. Sub-tractor nesting is flattened first.
(profile-summary mlt-node)The document's <profile> as data, numbers parsed.
The document's <profile> as data, numbers parsed.
(summarize s)Parse an MLT XML string into {:profile :bin :tracks}. Returns {:error ...} unchanged on malformed input.
Parse an MLT XML string into {:profile :bin :tracks}.
Returns {:error ...} unchanged on malformed input.(tracks mlt-node)The timeline's tracks as data. Real Kdenlive files NEST tractors: the timeline is a tractor whose tracks reference sub-tractors (one per timeline row, each pairing a video and an audio playlist) and producer0 (black). Tractor order and position are not reliable — the timeline is the track-bearing tractor with the MOST track refs, ties broken last.
Each timeline track resolves one level: {:id :tracks [...]}, where a track referencing a playlist expands to {:id :hide :entries :blanks} and one referencing a sub-tractor keeps :id with :tracks nested.
The timeline's tracks as data. Real Kdenlive files NEST tractors: the
timeline is a tractor whose tracks reference sub-tractors (one per
timeline row, each pairing a video and an audio playlist) and producer0
(black). Tractor order and position are not reliable — the timeline is
the track-bearing tractor with the MOST track refs, ties broken last.
Each timeline track resolves one level: {:id :tracks [...]}, where a
track referencing a playlist expands to {:id :hide :entries :blanks}
and one referencing a sub-tractor keeps :id with :tracks nested.cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |