Quality over quantity

We do not aim at making a framework that handles all formats and tools ever invented. We prefer to maintain a smaller set of modules but with higher quality.

The first release of Membrane is limited when it comes to the number of plugins and supported formats but creates a strong core for future development. It is a proposition of an architecture that is an abstraction layer for future growth. It already supports the creation of pipelines from elements with the ability to configure them at runtime and implying backpressure. Currently, you can play, capture and transform audio. We plan to add video support in a subsequent release.

How it works

In Membrane environment, basic entities are called Elements. Every Element is created to solve problems like converting raw audio to encoded format, reading data from a file and passing it to other elements or sending data from an application via UDP socket. Elements have pads (their inputs & outputs) and capabilities, which define a type of data that is expected.
Multiple linked elements can be enclosed in containers called pipelines.

Use cases of Membrane Framework

Membrane Framework was created to provide support in the development of multimedia processing applications. Below are some use cases of our framework.


programming tools for broadcasting

Membrane generates stream

24/7 in a dozen radio stations


real-time mixing, high availability, distributed architecture

The cure for bottlenecks of existing frameworks

The Membrane has been used in production by RadioKit a year ago.

Become a contributor
Membrane Framework on GitHub


September 2016

Start of the Membrane Platform Development

April 2017

Membrane is a part of Radio Kit

June 2018

First public release

September 2018

Native interface abstraction layer

December 2018

Zero-copy memory infrastructure and video support

March 2019

Hardware accelleration support

Powered by a Team TEAM

The Membrane Team combines knowledge, passion for coding & industry expertise.

Marcin Lewandowski
Lead Developer
Bartosz Błaszków
Core Developer
Mateusz Nowak
Core Developer
Mateusz Front
Core Developer
Jakub Hajto


Membrane Framework in use

Frequently asked questions FAQS

Below we’ve provided a bit of information about Membrane Framework.

GStreamer has been a great inspiration for us regarding the abstraction layer it provides. However, we have decided to take a different approach to implementation. First of all, GStreamer, in our opinion, would not excel in highly scalable applications due to its monolithic design, dependency on GLib with its MainLoop and lack of Virtual Machine giving the benefit of real-time inspection as well as failure isolation preventing a single error from causing total system shutdown. Membrane is written in Elixir which means it is based on battle-tested Erlang VM. Moreover, GStreamer has grown big - it supports virtually every format being in use – but that functionality comes at the expense of quality. We prefer to maintain a smaller set of higher quality elements. We also have chosen a different release strategy. We don’t bundle plugins in huge packages like GStreamer does, but each plugin is a separate library you can easily link to your application without adding too many dependencies.

FFmpeg is a vast library, containing multiple stream processing tools. It exports a low-level API in C, thus making it possible to do almost anything with multimedia, it requires significant effort to develop various non-trivial solutions, such as establishing a complex live stream. Membrane Framework provides a high-level API in Elixir, which enables it to make linking following elements comfortable and convenient, taking care of fluent data flow, concurrency and fault tolerance. While supported tools are not as numerous as in the case of FFmpeg, making them work with one another is straightforward. The way they cooperate is configurable, and if needed, new ones can be painlessly implemented. It is also possible to wrap functionality of other libraries, such as FFmpeg, in Membrane elements.

Elixir is a young language, but it has already proven that it can easily bring benefits of the underlying Erlang VM (BEAM) to the masses. BEAM is one of the best VMs available – it is well tested, has excellent design. There are several benefits such as preemption, per-process garbage collector, etc. that are hard to find anywhere else.

Yes, the Community Edition of Membrane Framework is published as an Open-Source project under Apache License V.2.0, and therefore, it is free to use. On the other hand, some unique needs of customers can be fulfilled with the Enterprise Edition of Membrane Framework. Our team will gladly fulfill any challenging requests for an additional fee.


Find more, ask a question or start a discussion @ Membrane Framework community channels:

Contact us CONTACT