Choosing the right video SDK: MPlatform vs. MFormats

MPlatform SDK and MFormats SDK are both great software toolkits for video software development. However, they target different customer segments and are far from being similar. This post will help you understand both products and decide which one is best for your project.

First, let’s compare the two products in a few aspects, such as what the products consist of, what customers and areas of applications they are designed for, etc.

Unboxing

MPlatform SDK is a set of high-level components. It ships together with several sample applications that help understand the methods and interfaces or serve as template projects for your own apps. Detailed documentation is available both online and with the installer.

MFormats SDK was designed as an underlying framework for MPlatform. MFormats SDK ships with a set of small, finite sample applications.

Areas of application

MPlatform SDK targets developers and system integrators in the broadcast market who have playout, ingest, virtual studio, video switcher or CG use cases. Dozens of companies, such as Playbox, Axel Technologies, RUSHWORKS and Wolftech, use MPlatfrom SDK to build apps that are being shown at worldwide exhibitions such as IBC and NAB. MPlatform SDK is also in use on several leading TV stations around the world, including NRK, NOS, and LRT.

MFormats targets mostly developers (although, as we have noticed, some of them may work at TV stations), but in the broader market of everything that might have a use case that involves video. MFormats is a much more generic product — meaning that it can be applied to more areas. As practice has shown, MPlatform has its limitations and is simply too big and complex for some projects.

MFormats-based applications are likely to be shown at the same trade shows, but will also appear on other ones — relating to sports, security and video production. A lot of applications will probably be custom-made and will become a part of some workflow in a variety of industries.

Design approach and flexibility

Working with these SDKs as a developer will feel a little different. The higher-level use case-focused approach of MPlatform SDK has made it easy for developers to achieve quick results on a select set of broadcast use cases.

MFormats, however, was designed from a ground-up approach, where our goal was to provide meaningful and precise access to all of the most important aspects of the video workflow. MFormats is frame-centric and puts you in full control of the position and content of every frame that you decide to work with (some aspects of this idea are explained in [this post]). MFormats allows you to understand and control thigs like frame rate or synchronized playback and capture.

MPlatform hides many of these things, providing a higher level of abstraction, but allowing you to build these applications quicker. MFormats will definitely provide more control and design flexibility.

Speed of development

This mostly depends on the task. Take a look at the most common use cases of MPlatfrom SDK. If your use case is none of them (nor a combination) — it is best to look into MFormats SDK or consult with us before making a decision.

In MFormats, a lot of things — such as the code for playing out a file — have to be implemented manually. So — yes — working with MFormats is likely to involve writing more code. But most of these tasks are not the ones MPlatform is designed for.

Ease of use

This is a tricky question. Both products are designed to be as simple as the area of application allows. But, for every almost every task there will be a more or less definite answer.

For some tasks, MPlatfrom is the obvious choice — such as playout systems (with scheduling) or virtual studio applications. These also can be achieved with MFormats, but will require a lot of extra coding effort.

MFormats is a better fit for smaller tasks where frame-to-frame precision is important (such as synchronized multichannel capture). If you are not sure, simply ask our technical team.

Technologies and codecs

Both products work with the same set of development environments: C#, VB.NET, Delphi, and C++. However, MFormats is compatible (can be used with) other video frameworks, such as DirectShow or GStreamer.

The full version of MFormats provides the same set of codecs as MPlatform’s Encoder lib and Decoder lib. Both products use FFmpeg, as well as several proprietary implementations of our own. The play while recording feature is available in both products.

The following optional component (that can be licensed separately) will work with both SDKs:

Included with the main edition of MPlatform SDK is also the Character Generator engine. It is not included in MFormats SDK.

Licensing terms

Both products are licensed on a per developer basis. You can find more information in our Licensing FAQ.

Now, let’s compare the two products in some more detail.

MPlatform SDK is a higher-level SDK that provides almost-ready solutions for complex tasks. Common use cases include broadcast playout automation systems, live production switchers, virtual TV studios with chroma key and 24/7 video loggers (ingest systems). Developing these applications with MPlatform SDK requires minimum effort.

The internals

Each of the objects in MPlatform SDK is designed to perform specific functions:

  • MFile — controls the playback of one file or of a network stream
  • MLive — makes video and audio capture devices available as sources for your application.
  • MRenderer — outputs the signal to I/O devices.
  • MPlaylist — manages playlists with various kinds of items (files, live sources, network streams and sub-playlists). Usage is shown in detail in the Playlist sample, including playback from various sources, scheduling and playing out to a device.
  • MMixer — mixes video and audio. Usage is shown in the Mixer sample: you can use files, network streams, live sources and playlists as sources. The sample also illustrates scene configuration and control.
  • MWriter — writes to file and streams to network via RTMP, HTTP and UDP. Usage is shown in the Writer sample.

MFormats SDK is a flexible framework for a broad spectrum of video tasks. The principal object of MFormats is the MFFrame (the frame object). Other objects in MFormats work with the frame object to manipulate frames:

  • MFReader — the source object for getting frames from files and network streams.
  • MFLive — the source object for getting frames from video and audio capture devices.
  • MFRenderer — the receiver object for frames, which sends them to the output device.
  • MFWriter — the receiver object, which creates a file or network stream from the received frames.
  • MFPreview — the receiver object for viewing the received frames.

All MFormats-related items in the Knowledge base — such as how to play a file, record a file or control the frame rate — can be found here.

To sum it up, MPlatform SDK works best for a set of specific tasks. MFormats SDK, on the other hand, is fit for tasks in a variety of contexts but may require extra coding effort, if the task is complicated.

MFormats SDK stands for broader application range, more flexibility, more control. MPlatform is great for a specific set of use cases, where it provides faster time to market. But it may not be flexible enough to go too far away from those use cases.