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.

News Subscribe to RSS feed

Meltytech Acquires Copyrights from Ushodaya Tue, 04 Nov 2014 01:32:00 +0000
Ushodaya Enterprises Limited of India, the original sponsor of the MLT and Melted projects has assigned their copyrights to Daniel R. Dennedy, sole proprietor and CTO of Meltytech, LLC. What does that mean? Not much. There are no planned changes to project direction at this time, but it may provide some options in the future. It is just good to have the copyrights under control of active members of the project to make it possible to exercise future options. Many thanks to project co-founder, BGa, for facilitating this transaction.

Post or view comments

Synfig Studio uses MLT for cross-platform sound Tue, 28 Oct 2014 20:43:00 +0000
Synfig Studio is a good, free, open source, cross-platform 2D animation program. They wanted to add audio support, but they needed more than just a hardware abstraction layer for audio output. They needed more than a multi-format/-codec library. They also wanted something that provides timing and mixing with a succinct API. They chose MLT.

Post or view comments

version 0.9.2 released Sun, 29 Jun 2014 20:37:00 +0000
Thanks to the combined effort of several contributors over the past year, there is a new bugfix and enhancement release 0.9.2 of MLT.


  • Added "boolean" parameter type and "argument" parameter attribute to service metadata schema.
  • Added mlt_properties_frames_to_time().
  • Added mlt_properties_time_to_frames().
  • Changed mlt_events_fire() to return the number of listeners.
  • Added consumer-thread-create and consumer-thread-join events.
  • Added LC_NUMERIC handling for Windows.
  • Added mlt_playlist_mix_out() and mlt_playlist_mix_in().
  • Added mlt_properties_from_utf8().


  • Renamed "qimage" module to "qt".
  • Added support for Qt 5.
  • Added qtext producer, which is now prefered by dynamictext filter over pango.
  • Added xml-nogl consumer.
  • Consolidated dgraft, burningtv, and rotoscoping into new plusgpl module.
  • Added vid.stab module with vidstab and deshake filters. This depends on external vid.stab library unlike its predecessors.
  • Rewrote opengl module.
  • Added loudness filter based on EBU R128.
  • Added rgblut filter to plus module.
  • Added luma-only liftgammagain filter to plusgpl module.
  • Added lift_gamma_gain filter to plus module.
  • Added support new keyframable animated properties to brightness, volume, panner, boxblur, wave, sepia, charcoal, burn, gamma, grain, dust, lines, tcolor, oldfilm.
  • Added movit.luma transition to opengl module.
  • Added cbrts consumer to plusgpl module.
  • Removed the "ppm" PPM-pipe producer.
  • Added more VITC functionality to decklink module.
  • Added matte transition to core module.


  • Deprecate videostab module with videostab and videostab filters. This will not be removed soon in order to keep old scripts and projects functional.
  • Deprecate the dv (libdv), kino, and vorbis modules. These are scheduled to be removed in next release.

Post or view comments

New video stabilization and EBU R128 loudness filters Wed, 12 Feb 2014 04:18:00 +0000
There are a few new filters in MLT git. The "videostab" filter is a new version based vid.stab replacing the old videostab2 filter. Because it uses an externally compiled version of vid.stab, you can use the latest and greatest version of vid.stab, which is not only faster but gives better quality results. In addition, while vidstab is a dual pass filter - first pass generates a .stab file, second pass reads it - there is a new single-pass "deshake" video filter that uses vid.stab's single-pass mode. It will not give as good results as dual pass, but it is handy for realtime/live applications. Thanks go to Jakub Ksiezniak, a new MLT contributor, and Brian Matherly for helping to get it into shape for merging.
Also, Brian contributed a new audio filter named "loudness" that uses libebur128 to provide better audio normalization because EBU R128 is based on perceived loudness and newer research than traditional RMS- and peak-based approaches.

Post or view comments

v0.9.0 released with new property animation API Mon, 03 Jun 2013 04:16:00 +0000
Earlier in the year we announced the introduction of OpenGL-based image processing on the GPU. However, now it is finally available in a release version of the software. Not only that, but we have also added a new, properly integrated property animation API to replace the limited, awkward mlt_geometry API. Here are the features of the new API:
  • The time of a keyframe can be set using frame number, time clock string, or a timecode string.
  • A negative time value makes it relative to the end of an object's duration.
  • Keyframes support 3 forms of interpolation: discrete (no interpolation), linear, and a smooth Catmull-Rom  spline.
  • Supports a new mlt_rect propery type in addition to string (discrete only), integer, and floating point.
  • API for most apps is just a few new, simple methods on the Properties object.
  • Integrated with the OpenGL-based effects only at this time to ease the migration - will be extended to other plugins in the next version or two.
Above is a plot of the curve described by the following property value.
0|=50; 50|=100; 100=200; 200~=60; -7:00~=180; -2:00~=100; -1=220
This shows that it is possible to combine a number of things in the same curve. It starts out with discrete keyframes (|), switches to a linear interpolated keyframe (=), and ends with a few smooth spline keyframes (~) set using timecode relative to the end/width (-).

Here are other highlights of the release:
  • Improved pause behavior when using buffered rendering in mlt_consumer.
  • Added mlt_color type.
  • Deprecated mlt_geometry API.
  • Support for the latest versions of FFmpeg and Libav (but dropping support for 0.5 and 0.6 versions).
  • Added alpha channel output to avformat consumer.
  • Added reconnect and exit_on_disconnect properties to avformat producer.
  • Added qglsl consumer to use opengl with avformat, sdi, and decklink.
  • Added avsync module with blipflash producer and consumer for testing.
  • Added new "count" producer to gtk2 module.
  • Changed frei0r to use index-based property names making it impervious to param name changes (param name still accepted for compatibility). 
  • Added default parameter values to frei0r metadata.
  • Added more python example web services.
  • Started a unit test suite.

Post or view comments

Older News

Learn More





Online Support

Build Tips & Scripts

Source Code

Project Management @ Fast, secure and Free Open Source software downloads
(Bug Tracker, Patch Tracker, Mailing List)


Hall of Fame


Topic revision: r53 - 2014-06-28 - DanDennedy
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2015 by Meltytech, LLC.
TWiki Appliance - Powered by TurnKey Linux