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.
Package | Description | Links |
---|
membrane_core | The core of the framework | |
membrane_common_c | Utilities for the native parts of Membrane | |
membrane_telemetry_metrics | Tool for generating metrics | |
bundlex | Tool for compiling C/C++ code within Mix projects | |
unifex | Tool automatically generating NIF and CNode interfaces between C/C++ and Elixir | |
bunch | Extension of Elixir standard library | |
sebex | The ultimate assistant in Membrane Framework releasing & development | |
Beamchmark | Tool for measuring EVM performance. | |
Plugins
Package | Description | Links |
---|
membrane_file_plugin | Plugin for reading and writing to files | |
membrane_element_udp | Plugin for sending and receiving UDP streams | |
membrane_hackney_plugin | HTTP sink and source based on Hackney library | |
membrane_element_fake | Fake Membrane sinks that drop incoming data | |
membrane_scissors_plugin | Element for cutting off parts of the stream | |
membrane_element_tee | Plugin for splitting data from a single input to multiple outputs | |
membrane_funnel_plugin | Plugin for merging multiple input streams into a single output | |
membrane_realtimer_plugin | Membrane element limiting playback speed to realtime, according to buffers' timestamps | |
membrane_pcap_plugin | [Experimental] | |
Package | Description | Links |
---|
membrane_rtp_plugin | Membrane bins and elements for handling RTP and RTCP streams | |
membrane_rtp_aac_plugin | [Alpha] RTP AAC depayloader | |
membrane_rtp_h264_plugin | RTP payloader and depayloader for H264 | |
membrane_rtp_vp9_plugin | RTP payloader and depayloader for VP9 | |
membrane_rtp_mpegaudio_plugin | RTP MPEG Audio depayloader | |
membrane_rtp_opus_plugin | RTP payloader and depayloader for OPUS audio | |
membrane_mpegts_plugin | MPEG-TS demuxer | |
membrane_mp4_plugin | Utilities for MP4 container parsing and serialization and elements for muxing the stream to CMAF | |
membrane_http_adaptive_stream_plugin | Plugin generating manifests for HLS (DASH support planned) | |
membrane_ice_plugin | Plugin for ICE protocol | |
membrane_matroska_plugin | Plugin for muxing audio and video streams to Matroska container and demuxing matroska stream to audio and video | |
| |
Audio codecs
Package | Description | Links |
---|
membrane_aac_plugin | AAC parser and complementary elements for AAC codec | |
membrane_aac_fdk_plugin | AAC decoder and encoder based on FDK library | |
membrane_element_flac_parser | Parser for files in FLAC bitstream format | |
membrane_mp3_lame_plugin | Membrane MP3 encoder based on Lame | |
membrane_mp3_mad_plugin | Membrane MP3 decoder based on MAD | |
membrane_element_mpegaudioparse | Element capable of parsing bytestream into MPEG audio frames | |
membrane_opus_plugin | Opus encoder and decoder | |
membrane_wav_plugin | WAV parser | |
membrane_element_flac_encoder | [Suspended] | |
Video codecs
Package | Description | Links |
---|
membrane_h264_ffmpeg_plugin | Membrane H264 parser, decoder and encoder based on FFmpeg and x264 | |
turbojpeg | [Third-party] libjpeg-turbo bindings for Elixir by Binary Noggin | |
Raw audio
Package | Description | Links |
---|
membrane_portaudio_plugin | Raw audio retriever and player based on PortAudio | |
membrane_ffmpeg_swresample_plugin | Plugin performing audio conversion, resampling and channel mixing, using SWResample module of FFmpeg library | |
membrane_audiometer_plugin | Elements for measuring the level of the audio stream | |
membrane_audio_mix_plugin | Elements for mixing audio streams | |
membrane_element_fade | [Experimental] | |
Raw video
Package | Description | Links |
---|
membrane_sdl_plugin | Membrane video player based on SDL | |
membrane_element_rawvideo_parser | Plugin for parsing raw video streams | |
membrane_ffmpeg_swscale_plugin | Plugin for scaling raw video streams | |
membrane_video_merger_plugin | Plugin for cutting and merging raw video streams | |
membrane_camera_capture_plugin | This plugin can be used to capture video stream from an input device. | |
External APIs
Package | Description | Links |
---|
membrane_element_gcloud_speech_to_text | Plugin providing speech recognition via Google Cloud Speech-to-Text API | |
membrane_element_ibm_speech_to_text | Plugin providing speech recognition via IBM Cloud Speech-to-Text service | |
Package | Description | Links |
---|
membrane_aac_format | Advanced Audio Codec format definition | |
membrane_mp4_format | MPEG-4 container format definition | |
membrane_opus_format | Opus audio format definition | |
membrane_rtp_format | Real-time Transport Protocol format definition | |
membrane_caps_audio_flac | FLAC audio format definition | |
membrane_mpegaudio_format | MPEG audio format definition | |
membrane_caps_audio_raw | Raw audio format definition | |
membrane_caps_video_h264 | H264 video format definition | |
membrane_caps_video_raw | Raw video format definition | |
membrane_cmaf_format | CMAF definition | |
membrane_matroska_format | Matroska format definition | |
Apps, protocols & plugins' utilities
Package | Description | Links |
---|
membrane_webrtc_server | Signaling server for WebRTC | |
ex_sdp | Parser and serializer for Session Description Protocol | |
ex_libnice | Libnice-based Interactive Connectivity Establishment (ICE) protocol support for Elixir | |
ex_libsrtp | Elixir bindings for libsrtp | |
ex_dtls | DTLS and DTLS-SRTP handshake library for Elixir, based on OpenSSL | |
membrane_rtsp | RTSP client for Elixir | |
membrane_common_audiomix | [Experimental] | |
fake_turn | Core of the membrane_ice_plugin | |
membrane_protocol_icecast | [Suspended] | |
membrane_server_icecast | [Suspended] | |
Tutorials
Package | Description | Links |
---|
membrane_tutorials | Repository with tutorials text | |
membrane_basic_pipeline_tutorial | Code used in the comprehensive basic pipeline tutorial | |
membrane_videoroom_tutorial | Code used in the videroom tutorial | |
membrane_webrtc_tutorial | Code used in the webrtc tutorial | |
No longer mantained
Package | Description | Links |
---|
membrane_libnice_plugin | Replaced by membrane_ice_plugin | |
membrane_dtls_plugin | DTLS and DTLS-SRTP handshake implementation for Membrane ICE plugin | |
membrane_element_icecast | [Experimental] Element capable of sending a stream into Icecast streaming server | |
membrane_element_live_audiomixer | Simple mixer that combines audio from different sources | |
membrane_element_msdk_h264 | [Experimental] Hardware-accelerated H.264 encoder based on IntelMediaSDK | |