diff --git a/FFMpegCore.Examples/FFMpegCore.Examples.csproj b/FFMpegCore.Examples/FFMpegCore.Examples.csproj
new file mode 100644
index 0000000..f9daae7
--- /dev/null
+++ b/FFMpegCore.Examples/FFMpegCore.Examples.csproj
@@ -0,0 +1,12 @@
+
+
+
+ Exe
+ net5.0
+
+
+
+
+
+
+
diff --git a/FFMpegCore.Examples/Program.cs b/FFMpegCore.Examples/Program.cs
new file mode 100644
index 0000000..256ef3c
--- /dev/null
+++ b/FFMpegCore.Examples/Program.cs
@@ -0,0 +1,124 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.IO;
+using FFMpegCore;
+using FFMpegCore.Enums;
+using FFMpegCore.Pipes;
+using FFMpegCore.Extend;
+
+var inputPath = "/path/to/input";
+var outputPath = "/path/to/output";
+
+{
+ var mediaInfo = FFProbe.Analyse(inputPath);
+}
+
+{
+ var mediaInfo = await FFProbe.AnalyseAsync(inputPath);
+}
+
+{
+ FFMpegArguments
+ .FromFileInput(inputPath)
+ .OutputToFile(outputPath, false, options => options
+ .WithVideoCodec(VideoCodec.LibX264)
+ .WithConstantRateFactor(21)
+ .WithAudioCodec(AudioCodec.Aac)
+ .WithVariableBitrate(4)
+ .WithVideoFilters(filterOptions => filterOptions
+ .Scale(VideoSize.Hd))
+ .WithFastStart())
+ .ProcessSynchronously();
+}
+
+{
+ // process the snapshot in-memory and use the Bitmap directly
+ var bitmap = FFMpeg.Snapshot(inputPath, new Size(200, 400), TimeSpan.FromMinutes(1));
+
+ // or persists the image on the drive
+ FFMpeg.Snapshot(inputPath, outputPath, new Size(200, 400), TimeSpan.FromMinutes(1));
+}
+
+var inputStream = new MemoryStream();
+var outputStream = new MemoryStream();
+
+{
+ await FFMpegArguments
+ .FromPipeInput(new StreamPipeSource(inputStream))
+ .OutputToPipe(new StreamPipeSink(outputStream), options => options
+ .WithVideoCodec("vp9")
+ .ForceFormat("webm"))
+ .ProcessAsynchronously();
+}
+
+{
+ FFMpeg.Join(@"..\joined_video.mp4",
+ @"..\part1.mp4",
+ @"..\part2.mp4",
+ @"..\part3.mp4"
+ );
+}
+
+{
+ FFMpeg.JoinImageSequence(@"..\joined_video.mp4", frameRate: 1,
+ ImageInfo.FromPath(@"..\1.png"),
+ ImageInfo.FromPath(@"..\2.png"),
+ ImageInfo.FromPath(@"..\3.png")
+ );
+}
+
+{
+ FFMpeg.Mute(inputPath, outputPath);
+}
+
+{
+ FFMpeg.ExtractAudio(inputPath, outputPath);
+}
+
+var inputAudioPath = "/path/to/input/audio";
+{
+ FFMpeg.ReplaceAudio(inputPath, inputAudioPath, outputPath);
+}
+
+var inputImagePath = "/path/to/input/image";
+{
+ FFMpeg.PosterWithAudio(inputPath, inputAudioPath, outputPath);
+ // or
+ var image = Image.FromFile(inputImagePath);
+ image.AddAudio(inputAudioPath, outputPath);
+}
+
+IVideoFrame GetNextFrame() => throw new NotImplementedException();
+{
+ IEnumerable CreateFrames(int count)
+ {
+ for(int i = 0; i < count; i++)
+ {
+ yield return GetNextFrame(); //method of generating new frames
+ }
+ }
+
+ var videoFramesSource = new RawVideoPipeSource(CreateFrames(64)) //pass IEnumerable or IEnumerator to constructor of RawVideoPipeSource
+ {
+ FrameRate = 30 //set source frame rate
+ };
+ await FFMpegArguments
+ .FromPipeInput(videoFramesSource)
+ .OutputToFile(outputPath, false, options => options
+ .WithVideoCodec(VideoCodec.LibVpx))
+ .ProcessAsynchronously();
+}
+
+{
+ // setting global options
+ GlobalFFOptions.Configure(new FFOptions { BinaryFolder = "./bin", TemporaryFilesFolder = "/tmp" });
+ // or
+ GlobalFFOptions.Configure(options => options.BinaryFolder = "./bin");
+
+ // or individual, per-run options
+ await FFMpegArguments
+ .FromFileInput(inputPath)
+ .OutputToFile(outputPath)
+ .ProcessAsynchronously(true, new FFOptions { BinaryFolder = "./bin", TemporaryFilesFolder = "/tmp" });
+}
\ No newline at end of file
diff --git a/FFMpegCore.sln b/FFMpegCore.sln
index eab20fd..27eab0a 100644
--- a/FFMpegCore.sln
+++ b/FFMpegCore.sln
@@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FFMpegCore", "FFMpegCore\FF
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FFMpegCore.Test", "FFMpegCore.Test\FFMpegCore.Test.csproj", "{F20C8353-72D9-454B-9F16-3624DBAD2328}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FFMpegCore.Examples", "FFMpegCore.Examples\FFMpegCore.Examples.csproj", "{3125CF91-FFBD-4E4E-8930-247116AFE772}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -21,6 +23,10 @@ Global
{F20C8353-72D9-454B-9F16-3624DBAD2328}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F20C8353-72D9-454B-9F16-3624DBAD2328}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F20C8353-72D9-454B-9F16-3624DBAD2328}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3125CF91-FFBD-4E4E-8930-247116AFE772}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3125CF91-FFBD-4E4E-8930-247116AFE772}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3125CF91-FFBD-4E4E-8930-247116AFE772}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3125CF91-FFBD-4E4E-8930-247116AFE772}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE