Headless melt rendering — the JVM-only boundary of the MLT core.
Strata: Pure melt-argv — command vector from data Port IRender — who can render a document Boundary MeltRenderer — spawns the melt process Seam renderer — read at call time; rebind in tests
Results are data: {:ok {...}} | {:error kw ...}, same shape as mlt.xml.
Headless melt rendering — the JVM-only boundary of the MLT core.
Strata:
Pure melt-argv — command vector from data
Port IRender — who can render a document
Boundary MeltRenderer — spawns the melt process
Seam *renderer* — read at call time; rebind in tests
Results are data: {:ok {...}} | {:error kw ...}, same shape as mlt.xml.The IRender implementation render! dispatches through. Rebind in tests
with a recording stub; do not capture at wiring time.
The IRender implementation `render!` dispatches through. Rebind in tests with a recording stub; do not capture at wiring time.
(encoding-for out-path)Consumer arguments for OUT-PATH by extension: H.264 in yuv420p with AAC for .mp4/.mov/.m4v, the combination phones and social players accept, and faststart so playback begins before the download ends. Other extensions get melt's own choice.
Consumer arguments for OUT-PATH by extension: H.264 in yuv420p with AAC for .mp4/.mov/.m4v, the combination phones and social players accept, and faststart so playback begins before the download ends. Other extensions get melt's own choice.
(-render renderer mlt-path out-path opts)Render the MLT document at mlt-path to out-path. Returns {:ok {:out path :argv [...]}} | {:error :render/... :stderr string}
Render the MLT document at mlt-path to out-path.
Returns {:ok {:out path :argv [...]}} | {:error :render/... :stderr string}(load-failures stderr)The lines where melt says it could not create a producer, filter or transition. melt exits 0 after them, so they are the only sign the render is not the document.
The lines where melt says it could not create a producer, filter or transition. melt exits 0 after them, so they are the only sign the render is not the document.
(melt-argv melt-bin mlt-path out-path & {:keys [profile extra] :as _opts})The melt command vector for rendering mlt-path to out-path.
opts: :profile (avformat profile name), :extra (seq of raw args).
The melt command vector for rendering `mlt-path` to `out-path`. opts: :profile (avformat profile name), :extra (seq of raw args).
(melt-env env)Environment entries a melt process needs so its Qt module loads with no window system, given the current ENV map.
MLT's Qt module (qtblend, kdenlivetitle, qtext) refuses to load unless DISPLAY or WAYLAND_DISPLAY is set, and then melt still exits 0, rendering the word INVALID where each producer should be and skipping each transition. QT_QPA_PLATFORM=offscreen alone does not help: MLT checks the variable before Qt ever runs. A placeholder DISPLAY plus the offscreen platform renders all three with no X server (measured 2026-09-15, melt 7.22). A render never needs a real window, so offscreen is the default even when a display exists; a caller's own QT_QPA_PLATFORM wins.
Environment entries a melt process needs so its Qt module loads with no window system, given the current ENV map. MLT's Qt module (qtblend, kdenlivetitle, qtext) refuses to load unless DISPLAY or WAYLAND_DISPLAY is set, and then melt still exits 0, rendering the word INVALID where each producer should be and skipping each transition. QT_QPA_PLATFORM=offscreen alone does not help: MLT checks the variable before Qt ever runs. A placeholder DISPLAY plus the offscreen platform renders all three with no X server (measured 2026-09-15, melt 7.22). A render never needs a real window, so offscreen is the default even when a display exists; a caller's own QT_QPA_PLATFORM wins.
(melt-renderer)(melt-renderer bin)A MeltRenderer bound to the melt on PATH (explicit bin overrides).
A MeltRenderer bound to the melt on PATH (explicit `bin` overrides).
(render! mlt-xml out-path & {:as opts})Render MLT XML (a string) to out-path via *renderer*. The document is
written to a temp file because melt consumes paths, not stdin.
Render MLT XML (a string) to `out-path` via `*renderer*`. The document is written to a temp file because melt consumes paths, not stdin.
(render-doc! doc out-path & {:as opts})Like render! but takes a model node tree.
Like render! but takes a model node tree.
(run-process argv)Run ARGV with melt-env added to the inherited environment. {:exit :stdout :stderr}; both streams are drained concurrently, so a chatty melt cannot block on a full pipe.
Run ARGV with melt-env added to the inherited environment.
{:exit :stdout :stderr}; both streams are drained concurrently, so a chatty
melt cannot block on a full pipe.(which bin)Absolute path of bin on PATH, or nil.
Absolute path of `bin` on PATH, or nil.
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 |