https://github.com/membraneframework/membrane_stream_plugin
Plugin for recording the entire stream sent through Membrane pads into a binary format and replaying it
https://github.com/membraneframework/membrane_stream_plugin
Last synced: 10 months ago
JSON representation
Plugin for recording the entire stream sent through Membrane pads into a binary format and replaying it
- Host: GitHub
- URL: https://github.com/membraneframework/membrane_stream_plugin
- Owner: membraneframework
- License: apache-2.0
- Created: 2022-05-17T07:41:17.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-11-17T14:51:51.000Z (over 2 years ago)
- Last Synced: 2025-04-10T00:39:02.931Z (about 1 year ago)
- Language: Elixir
- Homepage:
- Size: 58.6 KB
- Stars: 1
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Membrane Stream Plugin
[](https://hex.pm/packages/membrane_stream_plugin)
[](https://hexdocs.pm/membrane_stream_plugin)
[](https://circleci.com/gh/membraneframework/membrane_stream_plugin)
Plugin for recording the entire stream sent through Membrane pads into a binary format and replaying it.
This capability might be useful for creating snapshots of the stream at a given point in the pipeline for usage in tests, or for communication between two parts of the pipeline without using BEAM clusters.
The format used by Membrane Stream Plugin features:
- header with version information, allowing for backwards compatibility
- self delimitation, so buffers sent out of `Membrane.Stream.Serializer` are suitable to be saved to a file or sent over UDP
- Consistency checks in the form of a magic keyword repeated before every term
As of version 1, Membrane Stream Format supports buffers, stream formats and events. Dynamic pads are not supported.
It is part of [Membrane Multimedia Framework](https://membraneframework.org).
## Installation
The package can be installed by adding `membrane_stream_plugin` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:membrane_stream_plugin, "~> 0.4.0"}
]
end
```
## Usage
For usage example, please refer to [`examples/split_pipeline.exs`](examples/split_pipeline.exs).
To run it, simply execute:
```bash
$ elixir examples/split_pipeline.exs
```
The example demonstrates a simple pipeline playing the H264 file using SDL Player, split in half using Membrane Stream Plugin capabilities.
## Credits
This plugin has been built thanks to the support from [dscout](https://dscout.com/) and [Software Mansion](https://swmansion.com).
## Copyright and License
Copyright 2022, [Software Mansion](https://swmansion.com/?utm_source=git&utm_medium=readme&utm_campaign=membrane_stream_plugin)
[](https://swmansion.com/?utm_source=git&utm_medium=readme&utm_campaign=membrane_stream_plugin)
Licensed under the [Apache License, Version 2.0](LICENSE)