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

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

Docker

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

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
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 EVM performance.Hex.pm Docs GitHub

Plugins

Media agnostic

PackageDescriptionLinks
membrane_file_pluginPlugin for reading and writing to filesHex.pm Docs GitHub
membrane_element_udpPlugin 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_element_fakeFake Membrane sinks that drop incoming dataHex.pm Docs GitHub
membrane_scissors_pluginElement for cutting off parts of the streamHex.pm Docs GitHub
membrane_element_teePlugin 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_pcap_plugin[Experimental]GitHub

Media network protocols & containers

PackageDescriptionLinks
membrane_rtp_pluginMembrane bins and elements for handling RTP and RTCP streamsHex.pm Docs GitHub
membrane_rtp_aac_plugin[Alpha] RTP AAC depayloaderHex.pm Docs GitHub
membrane_rtp_h264_pluginRTP payloader and depayloader for H264Hex.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_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_ice_pluginPlugin for ICE protocolHex.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

| |

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_element_flac_parserParser 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 and decoderHex.pm Docs GitHub
membrane_wav_pluginWAV parserHex.pm Docs GitHub
membrane_element_flac_encoder[Suspended]GitHub

Video codecs

PackageDescriptionLinks
membrane_h264_ffmpeg_pluginMembrane H264 parser, decoder and encoder based on FFmpeg and x264Hex.pm Docs GitHub
turbojpeg[Third-party] libjpeg-turbo bindings for Elixir by Binary NogginHex.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_element_rawvideo_parserPlugin for parsing raw video streamsHex.pm Docs GitHub
membrane_ffmpeg_swscale_pluginPlugin for scaling raw video streamsHex.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 device.Hex.pm Docs GitHub

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

Formats

PackageDescriptionLinks
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_caps_audio_flacFLAC audio format definitionHex.pm Docs GitHub
membrane_mpegaudio_formatMPEG audio format definitionHex.pm Docs GitHub
membrane_caps_audio_rawRaw audio format definitionHex.pm Docs GitHub
membrane_caps_video_h264H264 video format definitionHex.pm Docs GitHub
membrane_caps_video_rawRaw video format definitionHex.pm Docs GitHub
membrane_cmaf_formatCMAF definitionHex.pm Docs GitHub
membrane_matroska_formatMatroska format definitionHex.pm Docs GitHub

Apps, protocols & plugins' utilities

PackageDescriptionLinks
membrane_webrtc_serverSignaling server for WebRTCHex.pm Docs GitHub
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
fake_turnCore of the membrane_ice_pluginGitHub
membrane_protocol_icecast[Suspended]GitHub
membrane_server_icecast[Suspended]GitHub

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

PackageDescriptionLinks
membrane_libnice_pluginReplaced by membrane_ice_pluginHex.pm Docs GitHub
membrane_dtls_pluginDTLS and DTLS-SRTP handshake implementation for Membrane ICE pluginHex.pm Docs GitHub
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