Membrane packages

If you see any out-of-date information or an invalid link here, feel free to create an issue or open a PR in the guide repository

To improve modularity, Membrane is split into multiple packages. Here we gathered all of the official ones and keep adding third-party ones too, so if you created a Membrane plugin or other Membrane-based library, let us know! We use the following [tags] in package descriptions:

  • [In progress] - in active development, but not yet ready
  • [Experimental] - possible to use, but may lack some core features/tests/documentation
  • [Alpha] - ready to use, but may lack some features or need more testing
  • [Third-party] - maintained by the community
  • [Suspended] - not ready and development was suspended

Check the Membrane GitHub organization to see which packages are actively developed currently.

demos

Demos

The official Membrane demos reside in the membrane demo repository. Check there for details.

docker

Docker

The Membrane docker (Docker Hub, GitHub) contains Erlang, Elixir and libraries necessary to test and run the Membrane Framework.

media-agnostic-packages

Media agnostic packages

PackageDescriptionLinks
membrane_coreThe core of the frameworkHex.pm Docs GitHub
membrane_common_cUtilities for the native parts of MembraneHex.pm Docs GitHub
membrane_telemetry_metricsTool for generating metricsHex.pm Docs GitHub
membrane_opentelemetryWrapper of OpenTelemetry functions for Membrane Multimedia FrameworkHex.pm Docs GitHub
bundlexTool for compiling C/C++ code within Mix projectsHex.pm Docs GitHub
unifexTool automatically generating NIF and CNode interfaces between C/C++ and ElixirHex.pm Docs GitHub
bunchExtension of Elixir standard libraryHex.pm Docs GitHub
sebexThe ultimate assistant in Membrane Framework releasing & developmentGitHub
BeamchmarkTool for measuring BEAM performanceHex.pm Docs GitHub

plugins

Plugins

Membrane plugins are packages which provide the elements and bins that can be used in pipelines built with the Membrane Framework. These plugins can provide various multimedia processing capabilities and help in dealing with various formats, codecs, protocols, containers and external APIs.

media-agnostic

Media agnostic

PackageDescriptionLinks
membrane_file_pluginPlugin for reading and writing to filesHex.pm Docs GitHub
membrane_udp_pluginPlugin for sending and receiving UDP streamsHex.pm Docs ![GitHub](https://api.iconify.design/octicon:logo-github-16.svg?color=gray&height=20)
membrane_hackney_pluginHTTP sink and source based on Hackney libraryHex.pm Docs GitHub
membrane_scissors_pluginElement for cutting off parts of the streamHex.pm Docs GitHub
membrane_tee_pluginPlugin for splitting data from a single input to multiple outputsHex.pm Docs GitHub
membrane_funnel_pluginPlugin for merging multiple input streams into a single outputHex.pm Docs GitHub
membrane_realtimer_pluginMembrane element limiting playback speed to realtime, according to buffers' timestampsHex.pm Docs GitHub
membrane_stream_pluginPlugin for dumping and restoring a Membrane Stream to and from a binary formatHex.pm Docs GitHub
membrane_fake_pluginPlugin with fake sink elements that consume & drop incoming dataHex.pm Docs GitHub
membrane_pcap_plugin[Experimental] Plugin for reading files in pcap formatGitHub
membrane_live_framerate_converter_plugin[Third-Party] [Experimental] Plugin for producing a stable output framerateGitHub
membrane_node_proxy[Third-Party] [Experimental] Plugin providing a mechanism for starting and connecting sources and sinks that span Erlang nodesGitHub

media-network-protocols-containers

Media network protocols & containers

PackageDescriptionLinks
membrane_rtp_pluginMembrane bins and elements for handling RTP and RTCP streamsHex.pm Docs GitHub
membrane_rtp_h264_pluginRTP payloader and depayloader for H264Hex.pm Docs GitHub
membrane_rtp_vp8_pluginRTP payloader and depayloader for VP8Hex.pm Docs GitHub
membrane_rtp_vp9_pluginRTP payloader and depayloader for VP9GitHub
membrane_rtp_mpegaudio_pluginRTP MPEG Audio depayloaderHex.pm Docs GitHub
membrane_rtp_opus_pluginRTP payloader and depayloader for OPUS audioHex.pm Docs GitHub
membrane_rtmp_pluginPlugin for receiving, demuxing, parsing and streaming RTMP streams. Includes TCP server for handling connectionsHex.pm Docs GitHub
membrane_mpegts_pluginMPEG-TS demuxerHex.pm Docs GitHub
membrane_mp4_pluginUtilities for MP4 container parsing and serialization and elements for muxing the stream to CMAFHex.pm Docs GitHub
membrane_http_adaptive_stream_pluginPlugin generating manifests for HLS (DASH support planned)Hex.pm Docs GitHub
membrane_matroska_pluginPlugin for muxing audio and video streams to Matroska container and demuxing matroska stream to audio and videoHex.pm Docs GitHub
membrane_flv_pluginPlugin for muxing audio and video streams to FLV format and demuxing FLV stream to audio and videoHex.pm Docs GitHub
membrane_ivf_pluginPlugin for serializing and deserializng Indeo Video Format streamHex.pm Docs GitHub
membrane_ogg_plugin[Experimental] Ogg demuxer and parserGitHub
membrane_quic_plugin[Experimental] Plugin containing elements for sending and receiving data over QUIC. It contains also QUIC serverGitHub
membrane_hls_plugin[Third-Party] [Alpha] Membrane.HLS.Source element for HTTP Live Streaming (HLS) playlist filesGitHub
membrane_ogg_plugin[Third-Party] [Alpha] Ogg plugin based on the liboggGitHub

audio-codecs

Audio codecs

PackageDescriptionLinks
membrane_aac_pluginAAC parser and complementary elements for AAC codecHex.pm Docs GitHub
membrane_aac_fdk_pluginAAC decoder and encoder based on FDK libraryHex.pm Docs GitHub
membrane_flac_pluginParser for files in FLAC bitstream formatHex.pm Docs GitHub
membrane_mp3_lame_pluginMembrane MP3 encoder based on LameHex.pm Docs GitHub
membrane_mp3_mad_pluginMembrane MP3 decoder based on MADHex.pm Docs GitHub
membrane_element_mpegaudioparseElement capable of parsing bytestream into MPEG audio framesHex.pm Docs GitHub
membrane_opus_pluginOpus encoder, decoder and parserHex.pm Docs GitHub
membrane_wav_pluginWAV parserHex.pm Docs GitHub

video-codecs

Video codecs

PackageDescriptionLinks
membrane_h264_ffmpeg_pluginMembrane H264 parser, decoder and encoder based on FFmpeg and x264Hex.pm Docs GitHub
membrane_h264_pluginPure Elixir Membrane H264 parserHex.pm Docs GitHub
turbojpeg[Third-party] libjpeg-turbo bindings for Elixir by Binary NogginHex.pm Docs GitHub
membrane_subtitle_mixer_plugin[Third-party] [Alpha] Plugin that uses CEA708 to merge subtitles directly in H264 packetsGitHub
membrane_mpeg_ts_plugin[Third-party] [Alpha] MPEG-TS DemuxerGitHub

raw

Raw

PackageDescriptionLinks
membrane_generator_pluginVideo and audio samples generatorHex.pm Docs GitHub

Raw audio

PackageDescriptionLinks
membrane_portaudio_pluginRaw audio retriever and player based on PortAudioHex.pm Docs GitHub
membrane_ffmpeg_swresample_pluginPlugin performing audio conversion, resampling and channel mixing, using SWResample module of FFmpeg libraryHex.pm Docs GitHub
membrane_audiometer_pluginElements for measuring the level of the audio streamHex.pm Docs GitHub
membrane_audio_mix_pluginElements for mixing audio streamsHex.pm Docs GitHub
membrane_element_fade[Experimental]GitHub

Raw video

PackageDescriptionLinks
membrane_sdl_pluginMembrane video player based on SDLHex.pm Docs GitHub
membrane_raw_video_parser_pluginPlugin for parsing raw video streamsHex.pm Docs GitHub
membrane_ffmpeg_swscale_pluginPlugin for scaling raw video streams and converting raw video formatHex.pm Docs GitHub
membrane_framerate_converter_pluginPlugin for adjusting the framerate of raw video streamHex.pm Docs GitHub
membrane_video_merger_pluginPlugin for cutting and merging raw video streamsHex.pm Docs GitHub
membrane_camera_capture_pluginThis plugin can be used to capture video stream from an input deviceHex.pm Docs GitHub
membrane_ffmpeg_video_filter_pluginThis plugin contains elements providing video filters based on ffmpeg video filter featureHex.pm Docs GitHub
membrane_video_compositor_plugin[Alpha] WGPU based plugin for composing, transforming and editing multiple raw videos in real timeGitHub
membrane_video_mixer_plugin[Experimental] [Third-Party] Element which mixes multiple video inputs to a single output using ffmpeg filtersHex.pm GitHub

external-apis

External APIs

PackageDescriptionLinks
membrane_element_gcloud_speech_to_textPlugin providing speech recognition via Google Cloud Speech-to-Text APIHex.pm Docs GitHub
membrane_element_ibm_speech_to_textPlugin providing speech recognition via IBM Cloud Speech-to-Text serviceHex.pm Docs GitHub
membrane_s3_plugin[Third-Party] Plugin providing sink that writes to Amazon S3Hex.pm Docs GitHub
membrane_transcription[Third-Party] [Experimental] Plugin based on Whisper allowing creating transcriptionsGitHub
xturn_membrane[Third-Party] [Experimental] Experimental Membrane source / sink for XTurnGitHub

formats

Formats

PackageDescriptionLinks
membrane_raw_audio_formatRaw audio format definitionHex.pm Docs GitHub
membrane_raw_video_formatRaw video format definitionHex.pm Docs GitHub
membrane_aac_formatAdvanced Audio Codec format definitionHex.pm Docs GitHub
membrane_mp4_formatMPEG-4 container format definitionHex.pm Docs GitHub
membrane_opus_formatOpus audio format definitionHex.pm Docs GitHub
membrane_rtp_formatReal-time Transport Protocol format definitionHex.pm Docs GitHub
membrane_mpegaudio_formatMPEG audio format definitionHex.pm Docs GitHub
membrane_h264_formatH264 video format definitionHex.pm Docs GitHub
membrane_cmaf_formatCMAF definitionHex.pm Docs GitHub
membrane_matroska_formatMatroska format definitionHex.pm Docs GitHub
membrane_vp8_formatVP8 Format DescriptionHex.pm Docs GitHub
membrane_vp9_formatVP9 Format DescriptionHex.pm Docs GitHub

apps-protocols-plugins-utilities

Apps, protocols & plugins' utilities

PackageDescriptionLinks
ex_sdpParser and serializer for Session Description ProtocolHex.pm Docs GitHub
ex_libniceLibnice-based Interactive Connectivity Establishment (ICE) protocol support for ElixirHex.pm Docs GitHub
ex_libsrtpElixir bindings for libsrtpHex.pm Docs GitHub
ex_dtlsDTLS and DTLS-SRTP handshake library for Elixir, based on OpenSSLHex.pm Docs GitHub
membrane_rtspRTSP client for ElixirHex.pm API Docs GitHub
membrane_common_audiomix[Experimental]GitHub
membrane_telemetry_dashboardIntroduction to integrating membrane_timescaledb_reporter repository with membrane_dashboard to monitor your pipeline behaviourGitHub
membrane_webrtc_serverSignalling server for WebRTCHex.pm Docs GitHub

jellyfish

Jellyfish

Jellyfish is a GitHub organization containing Membrane WebRTC-related repositories, focusing on creating a standalone media server.

plugins-1

Plugins

PackageDescriptionLinks
membrane_rtc_engineRTC Engine and its client libraryHex.pm Docs GitHub
membrane_webrtc_plugin[Alpha] Plugin for sending and receiving media with WebRTCHex.pm Docs GitHub
membrane_ice_pluginPlugin for ICE protocolHex.pm Docs GitHub

libraries

Libraries

PackageDescriptionLinks
fake_turnSTUN and TURN library for Erlang / ElixirGitHub
membrane_rtc_engine_timescaledbFunctions which allow storing Membrane.RTC.Engine metrics reports in a databaseHex.pm Docs GitHub
jellyfish[In progress] Standalone media serverGitHub

rtc-engine-clients

RTC Engine clients

PackageDescriptionLinks
membrane-webrtc-jsJS/TS client library for Membrane RTC EngineNPM version GitHub
membrane-webrtc-iosMembrane WebRTC client compatible with Membrane RTC EngineGitHub
membrane-webrtc-androidMembrane WebRTC client compatible with Membrane RTC EngineGitHub
react-native-membrane-webrtcReact Native wrapper for membrane-webrtc-ios and membrane-webrtc-androidNPM version GitHub

book

Book

PackageDescriptionLinks
JellybookTheoretical concepts behind general purpose media server.GitHub

rtc-engine-based-applications

RTC Engine based applications

PackageDescriptionLinks
membrane_videoroomVideo conferencing platform using WebRTCGitHub
membrane_live[Alpha] Webinar app in React, Phoenix and MembraneGitHub

tutorials

Tutorials

PackageDescriptionLinks
membrane_tutorialsRepository with tutorials textGitHub
membrane_basic_pipeline_tutorialCode used in the comprehensive basic pipeline tutorialGitHub
membrane_videoroom_tutorialCode used in the videroom tutorialGitHub
membrane_webrtc_tutorialCode used in the webrtc tutorialGitHub

no-longer-mantained

No longer mantained

PackageDescriptionLinks
membrane_libnice_pluginReplaced by membrane_ice_pluginHex.pm Docs GitHub
membrane_element_httpoisonReplaced by membrane_element_hackneyHex.pm Docs GitHub
membrane_dtls_pluginDTLS and DTLS-SRTP handshake implementation for Membrane ICE pluginHex.pm Docs GitHub
membrane_loggersReplaced by the Membrane.Logger in Membrane CoreHex.pm Docs GitHub
membrane_caps_audio_flac[Suspended] FLAC audio format definitionHex.pm Docs GitHub
membrane_remote_stream_formatContent of this package has been moved to membrane_coreHex.pm Docs
membrane_element_rtp_jitter_bufferPackage has become part of membrane_rtp_pluginHex.pm Docs
membrane_bin_rtpPackage has become part of membrane_rtp_pluginHex.pm Docs
membrane_element_icecast[Experimental] Element capable of sending a stream into Icecast streaming serverGitHub
membrane_element_live_audiomixerSimple mixer that combines audio from different sourcesGitHub
membrane_element_msdk_h264[Experimental] Hardware-accelerated H.264 encoder based on IntelMediaSDKGitHub
membrane_rtp_aac_plugin[Alpha] RTP AAC depayloaderHex.pm Docs GitHub
membrane_element_flac_encoder[Suspended]GitHub
membrane_protocol_icecast[Suspended]GitHub
membrane_server_icecast[Suspended]GitHub