It might seem this project is rather quiet lately, but nothing could be farther from the truth. So, here is a quick update on what has been happening lately, what will be in the next release, and what to look forward to in 2012.
New Logo Did you notice the new logo in the top, left of the page? It certainly can be improved, but the concept is represented. It is kind of like a wax seal, but not exactly - more like a flattened, melted blob.
ASI Consumer This is mainly interesting only to the broadcast users of MLT. This component actually started development in 2010, but was finally wrapped up and verified DVB compliant recently. For playout, this basically provides a channel-in-a-box solution. When coupled with SDI input, it makes a live encoder for broadcast. This is not yet an open source component, but its existence is not exactly a secret since it has been listed on our Documentation page. With just a little work, I am certain this could be used for ATSC and CBR UDP output as well. If you are interested in this, contact us or B.C.E.
Multi-Consumer This is an exciting new consumer plugin for the next release that basically lets you have multiple outputs! That could mean encoding from any sort of MLT playlist or composition to multiple files at the same time, each with their own unique attributes including different resolution and frame rate. Here are some other example use cases: simultaneous SDI/HDMI and IP streaming for playout, preview while capturing from SDI/HDMI, simultaneous GUI and SDI/HDMI preview in video editor.
Frame rate adaption In addition to the multi consumer letting you have outputs with different frame rates, in the next release the special consumer producer lets an input with a different frame rate conform to the composition's profile. Most people do not notice this because the avformat producer is used most often, and it has performed this from the beginning. However, the decklink SDI producer is not quite as flexible. Basically, this means you can do simple (non-interpolated) frame rate conversion with SDI input, but it also means in the future we can fully enable the telecide filter for smart inverse telecine. Also, as a result of this work, now the decklink producer is compatible with the YADIF deinterlacer for superior results when encoding to progressive file or stream.
Meltymedia.net I have a working prototype of running melt on Amazon Web Services under a job queue that dynamically adds and removes render nodes. The idea here is that there are a number of web and mobile app developers that want to use the power of MLT for advanced processing of XML-based audio/video compositions, but they do not want to deal with the hassle of dependencies, a good-working and current build of melt, compiling melt themselves, or command line usage of melt. Via HTTP, one can simply POST MLT-XML to the web service where the XML contains HTTP or S3 links to the file resources. Then, another service API call lets the client application check on the status and get links to the outputs. This is not quite ready to make available as I have a few more things to do, but it will be a paid service.
Shotcut Shotcut is an old MLT project that provides a FLTK-based video editor suited to the very particular requirements of the original project sponsor UEL. That project has not been active for a very long time, and I am not really fond of FLTK or the app's design, but I liked the name well enough to reuse it for a new Qt-based cross-platform, open-source video editor. It will also work with the Melted server for broadcast customers that want a client that runs on non-Linux desktops. I am not ready to provide much more information or to provide a sneak peak, but I will soon because this is much more than just an idea at this point - the progress has been very steady and promising!
A new filter for image stabilization was contributed by Marco Gittler and improved by Dan Dennedy. It is built upon the excellent work by Lenny at http://vstab.sourceforge.net/.
Important: change consumer property profile to mlt_profile.
Improve frame-dropping and drop_max property to mlt_consumer.
Added support for presets for any service through special property named "properties"
Added mlt_profile_from_producer() for auto-profile.
Added mlt_properties_set_lcnumeric() and mlt_properties_get_lcnumeric().
Added LC_NUMERIC to YAML Tiny metadata schema and parser.
Modules
Added support for more than 2 channels of greater than 16-bit audio.
Added discrete filters for each SoX effect.
Added discrete filters for each LADSPA audio plugin.
Added automatic service metadata for SoX and LADSPA plugins.
Added at least basic metadata for nearly every service.
Added support for decklink on Windows (tested) and Mac OS X (untested).
Added support for JACK transport synchronization.
Added blacklist.txt to jackrack plugin (contains dssi-vst).
Rewrite of decklink consumer.
Added support for live network, multi-stream device, and pipe/fifo sources in avformat producer.
Added LC_NUMERIC attribute to root XML element.
Melt
Added '-query presets' option.
Added -jack option for transport synchronization.
Send -help and -query output to stdout to make it convenient for pagers.
Other
Added mlt.Frame.get_image() for Python.
Removed configure option --avformat-svn.
Fixes for locales that use comma for decimal point.
Added presets for DVD, DV, x264, and WebM encoding.
Since FFmpeg forked and there were a few releases, there is no recommended version at this time. With that said, there were changes to accomodate the API changes with some moderate testing of the 0.6, 0.7, and 0.8 series releases of both FFmpeg and Libav.
MLT now supports libavformat's protocols to read network streams such as multicast MPEG2-TS/UDP, RTP, RTMP (librtmp recommended), RTSP (your mileage may vary), MMS, and HTTP Live Streaming. It also lets you read various formats such as DV, HDV, and TS over pipes. Of course, you can use them with all the other services MLT offers such as SDI output and filters. However, you can not seek on it, so things such as in point and speed changes are ignored.(Mon, 13 Jun 2011 03:18:00 +0000)
Andrew Wason has been working on a video effects engine, called WebVfx, that allows effects to be implemented using HTML or QML. It includes producer, filter and transition plugins for MLT.
Video effects can be authored using web technologies like CSS3, Canvas, WebGL etc. Video frames decoded by MLT are available to the effect as JavaScript Image or ImageData objects. QML is supported as an alternative to WebGL for 3D based transitions, by extending it with QtQuick3D.
3D scenes can be modeled in a tool like Blender, the scene can be rendered and baked to a texture and the 3D camera path can be animated and exported using a Blender plugin included with WebVfx. Then video frames can be applied as textures to portions of the scene. Here is the source to a simple 3D example with demo video.
Here is an example of a more sophisticated 3D birthday card theme developed internally, rendered with WebVfx and MLT using the avformat consumer.
Advanced 2D image effects can be implemented using WebGL and a GLSL fragment shader. WebVfx includes a support framework so only the shader code needs to be written. Here is the source to PageCurl and CrossZoom GLSL transitions (with links to demo videos).
I made a simple ruby script using the MLT API binding that enumerates all services of all plugins, fetches their metadata/documentation, and generates a wiki page. The results appear under the Services section of the Documentation page of the web site.
Of course, do not forget that all of this is also available at the command line using melt -query. (Tue, 31 May 2011 03:08:00 +0000)