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 since 2017.

Live video streaming made simple

A case study of live video streaming from iOS devices with Elixir & Membrane Framework

Become a contributor
Membrane Framework on GitHub

Powered by our Extraordinary Team TEAM

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

Paweł Młocek
Mateusz Front
Bartosz Błaszków
Marek Kaput
Michał Śledź
Andrzej Podobiński
Feliks Pobiedziński
Samuel Hełdak
Jakub Perżyło
Piotr Żyła
Błażej Pierzak
Dominik Wołek
Marcin Lewandowski
Mateusz Nowak
Ex Core Developer


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