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.