# MOV output

Media Blocks SDK .Net

The MOV format is popular on Apple devices. Typically, AAC is used to encode the audio stream, and H264 or HEVC codecs are used to encode the video stream.

Use the MOVSinkSettings class to set the parameters.

# Block info

Name: MOVSinkBlock.

Pin direction Media type Pins count
Input audio S32LE, S32BE, S24LE, S24BE one or more
S16LE, S16BE, S8, U8
audio/mpeg
audio/x-ac3
audio/x-adpcm
audio/x-alaw
audio/x-mulaw
audio/AMR
audio/AMR-WB
audio/x-alac
audio/x-opus
Input video RGB, UYVY, v210 one or more
video/mpeg
video/x-divx
video/x-prores
video/x-cineform
video/x-h263
video/x-h264
video/x-h265
video/x-svq
video/x-dv
image/jpeg
image/png
video/x-vp8
video/x-vp9
video/x-dirac
video/x-av1
Input subtitle text/utf8 one or more

# The sample pipeline

graph LR;
    UniversalSourceBlock-->H264EncoderBlock;
    UniversalSourceBlock-->AACEncoderBlock;
    H264EncoderBlock-->MOVSinkBlock;
    AACEncoderBlock-->MOVSinkBlock;

# Sample code

var pipeline = new MediaBlocksPipeline();

var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));

var aacEncoderBlock = new AACEncoderBlock(new MFAACEncoderSettings() { Bitrate = 192 });
pipeline.Connect(fileSource.AudioOutput, aacEncoderBlock.Input);

var h264EncoderBlock = new H264EncoderBlock(new NVENCH264EncoderSettings());
pipeline.Connect(fileSource.VideoOutput, h264EncoderBlock.Input);

var movSinkBlock = new MOVSinkBlock(new MOVSinkSettings(@"output.mov"));
pipeline.Connect(h264EncoderBlock.Output, movSinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
pipeline.Connect(aacEncoderBlock.Output, movSinkBlock.CreateNewInput(MediaBlockPadMediaType.Audio));

await pipeline.StartAsync();

# Platforms

Windows, macOS, Linux, iOS, Android.