MLT Multimedia Framework

Author, manage, and run multitrack audio/video compositions.
The engine of a non-linear video editor that can be used in all sorts of apps, not just desktop video editors.
MLT is an open source multimedia framework, designed and developed for television broadcasting. It provides a toolkit for broadcasters, video editors, media players, transcoders, web streamers and many more types of applications. The functionality of the system is provided via an assortment of ready to use tools, XML authoring components, and an extensible plug-in based API.
Download source code. The easiest way to try out and learn MLT is by downloading Shotcut.

Recent News

v7.36.0 released

Dec 29, 2025

You can download it from GitHub.

This version adds image processing in linear color on the CPU (previously only Movit). Plus, it extends 10-bit video processing on the CPU to many more services.

Framework

  • Added mlt_image_default_colorspace()
  • Added mlt_image_default_trc()
  • Added mlt_image_default_primaries()
  • Added mlt_color_convert_trc()
  • Added the mlt_consumer property mlt_color_trc to drive a new color_transform normalizer filter. This sets the color transfer function to use for image/video effects. It is beneficial and correct to use linear color for any pixel mixing whether for blending or interpolation.
  • Removed atexit(mlt_factory_close) in mlt_factory_init(). Close the factory yourself if you feel the need to (not generally needed when exiting a process).
  • Prevent possible crash in mlt_service_connect_producer().
  • Added mlt_profile_is_valid() and Mlt::Profile::is_valid().
  • Fixed crash on invalid profile (CVE-2025-65834) in:
    • mlt_consumer_start()
    • mlt_factory_producer()
    • xml producer

Modules

  • Drop support for Qt 5.
  • Fixed bad color in luma transition’s dissolve (regression in v7.34.0).
  • Fixed HLG HDR broken in decklink consumer (regression in v7.34.0).
  • Fixed warnings when flushing audio in the avformat consumer.
  • Added support for hwaccel=vulkan to the avformat producer.
  • Added a color_transform normalizer filter to the core module to convert all image/video producers to and from linear color. It is abstract in the core module and drives the following filters:
    • avfilter.zscale
    • sws_colortransform
    • avfilter.scale
  • Added filter sws_colortransform that is more efficient than avfilter.swscale but requires FFmpeg 8.
  • Changed the default property values of the null consumer:
    • real_time: -1
    • terminate_on_pause: 1
  • Changed the luma and movit.luma transitions to progress linearly with linear color_trc.
  • Fixed the alpha channel dropped by the xml-clip producer.
  • Added mlt_image_rgba64 format to:
    • avcolor_space filter
    • avdeinterlace filter
    • affine filter and transition
    • audiolevelgraph filter
    • audiospectrum filter
    • audiowaveform filter
    • autofade filter
    • avformat producer and consumers
    • box_blur filter
    • brightness filter
    • pillar_echo filter
    • color producer
    • dropshadow filter
    • dynamictext filter (when used with qtext)
    • frei0r.alpha0ps filter
    • frei0r.alphagrad filter
    • frei0r.alphaspot filter
    • frei0r.bluescreen0r filter
    • frei0r.select0r filter
    • frei0r.transparency filter
    • gpsgraphic filter
    • gpstext filter
    • gradientmap filter
    • hslprimaries filter
    • hslrange filter
    • kdenlivetitle producer
    • lift_gamma_gain filter
    • lightshow filter
    • mask_apply (when used with qtblend)
    • movit.convert filter
    • outline filter
    • qtblend filter and transition
    • qtcrop filter
    • qtext producer
    • shape filter
    • spot_remover filter
    • strobe filter
    • subtitle filter (when used with qtext)
    • swscale filter
    • text filter (when used with qtext)
    • timeremap link
    • timer filter (when used with qtext)
    • vqm transition
  • Changed the mask_apply filter default transition to qtblend.
  • Removed the maximum for the alpha property on the brightness filter so that you can increase the opacity of an existing alpha channel.
  • Fixed background image scaling in the gpsgraphic filter.
  • Fix audio artifacts with pcm_s24le in mkv in avformat producer.

Other

  • Removed bitrate and quality limits in the vp9 and webm avformat presets.
  • Fixed melt on Windows not reading file path/name with extended characters (regression in v7.34.0).
  • Fixed building the ruby bindings with Ruby 3.0.
  • More fixes for MSVC.
  • Removed win32/strptime.c and replaced with Qt functions.
  • Stop showing melt usage on error exit.

v7.34.0 released

Nov 3, 2025

You can download it from GitHub.

This versions adds 10-bit video processing on the CPU, but you must ensure you are using compatible filters and transitions.

Framework

  • Added mlt_image_rgba64 format. This change touched core, avformat, and qt modules as well.
  • Added mlt_color_trc, mlt_color_primaries, and more mlt_colorspaces along with functions:
    • mlt_image_color_trc_name
    • mlt_image_color_trc_id
    • mlt_image_colorspace_name
    • mlt_image_colorspace_id
    • mlt_image_color_pri_name
    • mlt_image_color_pri_id
  • Fixed some minor memory leaks with cppcheck.

Modules

  • Added rgba and rgba64 formats to the luma transition.
  • Added rgba64 format to affine filter and transition.
  • Added rgba64 format to the qtblend transition.
  • Added support for FFmpeg 8 to the avformat module.
  • Fixed audio panner filter for 5.1 channel layout.
  • Fixed converting 10-bit full to limited range in avformat producer (regression in v7.30.0).
  • Fixed shadow not working for multi-line template titles in kdenlivetitle producer.
  • Fixed mask_apply filter with custom transition.
  • Added input_chmask & output_chmask properties to mono filter.
  • Added channel_mask property to LADSPA/LV2/VST2 filters.
  • Added channel_mask to the volume filter.
  • Added an outline video filter.
  • Fixed a deadlock on image with a % in the name in qimage producer.
  • Added scrubbing to the decklink consumer.
  • Fixed & not decoded to & in the xml producer.
  • Fixed converting BT.709 to BT.2020 in the avformat module.
  • Fixed building a ladspa module without JACK as dependency.
  • Deprecate a JACK Rack XML file in the jackrack and ladspa modules.
  • Added filter qtblend_mode.
  • Fixed incorrect alpha channel breaking optimization of qtblend.
  • Fixed pixel format gbrap (Ut Video with alpha channel) in the avformat producer.
  • Fixed opencv_tracker filter on cut playlist clips.
  • Fixed warning about missing color range for avfilters that use it (e.g. avfilter.colorspace).
  • Added typewriter properties to the qtext filter.
  • Fixed color distortion or a crash if using hwaccel with orientation rotation in avformat producer.

Other

  • Enable Qt 6 and disable Qt 5 modules in CMake by default.
  • Disable the SDL1 module in CMake by default.
  • Changed melt now exits with 1 if the producer is invalid.
  • Various changes to work with MSVC compiler.
  • Changed SVT-AV1 encode presets to VBR for Opus audio.
  • Fixed initializing Qt on the main thread in melt.
  • Documented the -progress2 option for melt.
  • Increased the minimum C++ version to C++20.
  • Converted many modules to use CMake find_package().
  • Added libgen.c and libgen.h for MSVC.

v7.32.0 released

May 7, 2025

You can download it from GitHub.

Framework

  • Added mlt_service_set_consumer() and `Mlt::Service::set_consumer().
  • Optimized mlt_multitrack to not request a frame from a producer that is both hidden and muted.

Modules

  • Fixed pixel format for VP8/VP9 streams in avformat producer.
  • Fixed yuva422p pixel format in avformat producer.
  • Added MLT_AVFORMAT_HWACCEL & MLT_AVFORMAT_HWACCEL_DEVICE environment variables to avformat producer.
  • Updated decklink module for recent hardware and drivers.
  • Added colorspace and color_trc (including HDR) properties to the decklink consumer.
  • Fixed silencing extra audio channel (e.g. 6 => 8) in decklink consumer.
  • Fixed 5.1 C/LFE channels swapped over HDMI in decklink consumer.
  • Fixed text outline had sharp angles in kdenlivetitle producer.
  • Fixed default gamma to be Rec. 709 for 10-bit Y’CbCr from movit module.
  • Added support for HLG gamma to movit module (requires ddennedy/movit fork).
  • Fixed opencv_tracker filter should require multiple keyframes to be ready.
  • Fixed OpenCV crash on rect <= 1 pixel in opencv_tracker filter.
  • Fixed aspect ratio in qtblend filter and transition.
  • Fixed QT_QPA_PLATFORM=offscreen not working in qt and glaxnimate modules.
  • Improved preview scaling in qtblend filter.
  • Fixed requesting huge images on multiple qtblend filters or transitions.
  • Fixed sdl2 consumer on macOS.
  • Fixed the strobe filter not working with movit.
  • Fixed color and gamma using timeremap link with movit.
  • Fixed consumer properties (e.g. channels) missing on qglsl consumer injected by the xml producer.

v7.30.0 released

Jan 19, 2025

You can download it from GitHub.

Framework

  • Fixed Mlt::Producer::set_creation_time() not exported on i686.
  • Fixed Mlt::Properties::set(int64_t) symbol version.
  • Fixed mlt_factory_init() on Linux/BSD may fail to initialize when compiled with -DRELOCATABLE.
  • Added generic non-drop-frame timecode in mlt_property.c. Previously, it was only done for 30000/1001 and 60000/1001 frame rates, but 24000/1001 is especially important as well.
  • Added support for MLT XML embedded in chains. This, along with xml-clip producer handles mismatching frame rate between parent and child producers and facilites time-affecting links on the child.
  • Added mlt_image_full_range(const char *color_range) where any of the following strings return true (1): full, jpeg, pc.

Modules

  • Added xml-clip producer.
  • Fixed link in and out properties arenot serialized in the xml consumer.
  • Added hslprimaries and hslrange filters to the plus module.
  • Added a gradientmap filter to the plus module.
  • Fixed avfilter audio filters with FFmpeg 7.
  • Fixed incorrect frame rate for AVCHD (and possibly others) in avformat.
  • Fixed window_id property in consumer sdl2 by using SDL_CreateWindowFrom(), especially important for embedding in GTK+ or Qt.
  • Fixed text not rendering in transition vqm since Qt 6.
  • Added decimals keyword to gpstext filter and move RAW keyword check.
  • Fixed time_offset property handling in gpstext filter.
  • Fixed reading and writing SRT files with unicode in the path.
  • Fixed subtitle_feed filter on producers with an in point > 0.
  • Fixed opaque alpha channels become translucent in luma transition.
  • Fixed a crash in the mix transition with consumer producer.
  • Fixed freeze filter freezing too much.
  • Fixed avfilter.fillborders with preview scaling.
  • Fixed non-proportional scaling in qtblend transition and filter.
  • Fixed avfilter color distortion with mlt_image_rgb and mlt_image_rgba.
  • Extended support for colorspace=2020 consumer property and the BT.2020 colorspace in the avformat producer and consumer. This does not imply HDR, which is signaled through a color_trc property.
  • Added support for mlt_image_yuv420p10, mlt_image_yuv444p10, and mlt_image_yuv422p16 in avfilter, swscale, and rescale filters. This facilitates using these pixel formats end-to-end when using only FFmpeg producers, certain avfilters, and avformat consumer. This means it is possible to do 10-bit end-to-end on the CPU when being careful to select compatible components and options to avoid conversions. One can pass-through HDR; however, you must set the color_trc and pix_fmt properties on the avformat consumer (see ffmpeg -h full for these values). The avformat consumer automatically converts MLT colorspace (integer value) to FFmpeg’s colorspace and color_primaries (unless explicit) options.

Other

  • Cleaned up the examples in src/swig.
  • Changed the x264-medium preset to a higher quality.

v7.28.0 released

Sep 12, 2024

You can download it from GitHub.

This fixes a couple of major regressions in the previous version 7.26.0:

  • Fixed seeking and frozen video due by reverting “Improved performance with intra-only video and reducing the frame rate.”
  • Fixed using melt to render MLT XML with OpenGL effects from movit.

Other fixes and changes:

  • Deprecated the composite transition and the sdl and ndi modules.
  • Fixed Android camera video has the wrong frame rate (broken in v7.26.0).
  • Fixed audio not playing for audio-only DTS WMA.
  • Fixed using “https:” URLs in the xml producer.
  • Fixed crash on exit when running melt -query or melt -query links.
  • Added a transition property to the watermark filter. Now, it defaults to using affine.
  • Changed affine transition argument to set rect property if supplied.

Search

Featured Apps

Flowblade

Kdenlive

Shotcut

Subscribe

Subscribe to Newsvia RSS.

About

MLT enables you to author, manage, and run multitrack audio/video compositions. Copyright © 2008-2025 by Meltytech, LLC.

Social Links