# Audio mixer

Media Blocks SDK .Net

The audio mixer block mixes multiple audio streams into one. Block mixes the streams regardless of their format, converting if necessary.

All input streams will be synchronized.

Use the AudioMixerSettings class to set the custom output format.

# Block info

Name: AudioMixerBlock.

Pin direction Media type Pins count
Input Uncompressed audio 1
Output Uncompressed audio 1

# The sample pipeline

graph LR;
    VirtualAudioSourceBlock#1-->AudioMixerBlock;
    VirtualAudioSourceBlock#2-->AudioMixerBlock;
    AudioMixerBlock-->VorbisEncoderBlock;
    VorbisEncoderBlock-->OGGSinkBlock;

# Sample code

var pipeline = new MediaBlocksPipeline();

var audioSource1Block = new VirtualAudioSourceBlock(new VirtualAudioSourceSettings());
var audioSource2Block = new VirtualAudioSourceBlock(new VirtualAudioSourceSettings());

var audioMixerBlock = new AudioMixerBlock(new AudioMixerSettings());

pipeline.Connect(audioSource1Block.Output, audioMixerBlock.CreateNewInput());
pipeline.Connect(audioSource2Block.Output, audioMixerBlock.CreateNewInput());

var vorbisEncoderBlock = new VorbisEncoderBlock(new VorbisEncoderSettings());
pipeline.Connect(audioMixerBlock.Output, vorbisEncoderBlock.Input);

var oggSinkBlock = new OGGSinkBlock(new OGGSinkSettings(@"output.ogg"));
pipeline.Connect(vorbisEncoderBlock.Output, oggSinkBlock.CreateNewInput(MediaBlockPadMediaType.Audio));     

await pipeline.StartAsync();

# Platforms

Windows, macOS, Linux, iOS, Android.