¿Interactúa con ffmpeg desde un programa .NET?

Estoy tratando de crear un contenedor .NET para la conversión de archivos multimedia usando ffmepg, esto es lo que he intentado:

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 sucede es que el contenido del programa ffmpeg se imprime en la aplicación Consola, pero elresult variable es una cadena vacía. Quiero controlar el progreso de la conversión de manera interactiva, para que el usuario ni siquiera tenga que saber que estoy usando ffmpeg, pero aún conoce los detalles del progreso de la conversión y qué porcentaje, etc., está haciendo la aplicación.

ásicamente, también estaría contento con un contenedor .NET para una función de conversión P / Invocación SOLAMENTE (no estoy interesado en una biblioteca externa completa, a menos que pueda extraer la función PI de ella).

¿Alguien con experiencia en ffmpeg y .NET?

Actualiza Por favor vea mi otra pregunta, Cómo escribir una entrada en un proceso ffmpeg en ejecución.

Respuestas a la pregunta(2)

Su respuesta a la pregunta