# Membrane Video Compositor Plugin

[![API Docs](](

Membrane SDK for VideoCompositor, that takes multiple input streams, transforms them according to provided transformations and composes them into output streams / videos.

It is part of [Membrane Multimedia Framework](

## Installation

The package can be installed by adding `membrane_video_compositor_plugin` to your list of dependencies in `mix.exs`:

def deps do
    {:membrane_video_compositor_plugin, "~> 0.8.0"}

VideoCompositor requires having locally installed:

- [FFmpeg 6.0]( - for streaming inputs / outputs to VideoCompositor
- [wget]( - for downloading VideoCompositor binary file
- [tar]( - for decompressing VideoCompositor binary file

## Examples

Examples can be found in `examples` directory.

To run example run:

1. `cd examples`
2. `mix deps.get`
3. `mix run lib/[example_name].exs`

### Layout with shader example

The example presents dynamically added video arranged onto a tiled layout and "twisted" with the simple shader. Shaders can be used to create custom visual effects.

### Transition example

The example presents dynamic transition of input videos. Transitions are used for smooth, dynamical animations.

### Dynamic outputs example

The example presents dynamic outputs linking.
Multiple outputs are useful for live-streaming for multiple platforms (e.g. different layout for mobile devices), target resolutions
or any other case, when user want to process input videos differently.