Interact com o ffmpeg de um programa .NET?

Estou tentando criar um wrapper .NET para conversão de arquivo de mídia usando ffmepg, aqui está o que eu tentei:

static void Main(string[] args)
{
  if (File.Exists("sample.mp3")) File.Delete("sample.mp3");

  string result;

  using (Process p = new Process())
  {
    p.StartInfo.FileName = "ffmpeg";
    p.StartInfo.Arguments = "-i sample.wma sample.mp3";

    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;

    p.Start();

    //result is assigned with an empty string!
    result = p.StandardOutput.ReadToEnd();

    p.WaitForExit();
  }
}

O que realmente acontece é que o conteúdo do programa ffmpeg é impresso no aplicativo Console, mas oresult variável é uma sequência vazia. Quero controlar o progresso da conversão interativamente, para que o usuário nem precise saber que estou usando o ffmpeg, mas ele ainda sabe os detalhes do progresso da conversão e qual porcentagem etc. o aplicativo está fazendo.

Basicamente, eu também ficaria feliz com um wrapper .NET para uma função de conversão P / Invoke SOMENTE (não estou interessado em uma biblioteca externa inteira, a menos que possa extrair a função PI dela

Alguém com experiência em ffmpeg e .NET?

Atualiza Por favor, veja minha pergunta adicional,como escrever entrada em um processo ffmpeg em execução.

questionAnswers(2)

yourAnswerToTheQuestion