DEV Community

Willem Janssen
Willem Janssen

Posted on

How to Build a Command-Line Video Converter with .NET 8 and FFmpeg

Video conversion is one of those tasks developers often bump into—whether it’s for building a media app, preparing assets for streaming, or just automating format conversions. The good news is that you don’t have to reinvent the wheel: FFmpeg is the industry standard for working with audio and video.

In this tutorial, we’ll build a simple command-line video converter in .NET 8 that wraps FFmpeg. By the end, you’ll have a lightweight tool that can take input files, convert them to different formats, and even be extended for batch processing.


🛠 Prerequisites

  • .NET 8 SDK installed
  • FFmpeg installed and added to your system PATH
  • Basic knowledge of C# and console apps

1. Create the Project

Open your terminal and create a new console app:

dotnet new console -n VideoConverter
cd VideoConverter
Enter fullscreen mode Exit fullscreen mode

2. Add a Process Wrapper for FFmpeg

FFmpeg is a command-line tool, so the easiest way to use it from .NET is to call it via System.Diagnostics.Process.

Create a file FfmpegWrapper.cs:

using System.Diagnostics;

public static class FfmpegWrapper
{
    public static void Convert(string inputPath, string outputPath, string format)
    {
        var args = $"-i \"{inputPath}\" \"{outputPath}.{format}\"";

        var process = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "ffmpeg",
                Arguments = args,
                RedirectStandardError = true,
                UseShellExecute = false,
                CreateNoWindow = true
            }
        };

        process.Start();
        string result = process.StandardError.ReadToEnd();
        process.WaitForExit();

        if (process.ExitCode != 0)
        {
            throw new Exception($"FFmpeg failed: {result}");
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

3. Build the CLI Entry Point

Modify Program.cs:

class Program
{
    static void Main(string[] args)
    {
        if (args.Length < 3)
        {
            Console.WriteLine("Usage: VideoConverter <input> <output> <format>");
            return;
        }

        var input = args[0];
        var output = args[1];
        var format = args[2];

        try
        {
            Console.WriteLine($"Converting {input} → {output}.{format} ...");
            FfmpegWrapper.Convert(input, output, format);
            Console.WriteLine("Conversion complete!");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

4. Run the Converter

Build and run your app:

dotnet build
dotnet run -- sample.mp4 output avi
Enter fullscreen mode Exit fullscreen mode

5. Extending the Tool

This is just the beginning! You can:

✅ Add batch conversion (loop through folders)

✅ Support audio extraction (e.g., convert to .mp3)

✅ Add preset quality settings (low/medium/high)

✅ Wrap this logic into a REST API for cloud-based conversion

🎯 Conclusion

In just a few lines of C# code, we’ve built a working command-line video converter powered by FFmpeg. With .NET 8 handling the CLI and FFmpeg doing the heavy lifting, you can now extend this into more advanced tools—or even the backend of your own media SaaS.

👉 Next step: consider adding GPU acceleration (NVENC, QuickSync, etc.) for lightning-fast conversions.

Top comments (2)

Collapse
 
amarantess profile image
Gabriel Amarantes

FFmpeg is a powerful tool, thank you for sharing!

Collapse
 
willem_janssen_ca51a0bfba profile image
Willem Janssen

Thanks! Yep, FFmpeg can do almost anything - even things like streaming or image manipulation. I'll probably cover more advanced use cases in a future post.