che sto cercando di creare un wrapper .NET per la conversione di media-file usando ffmepg, ecco che cosa ho provato:Interagire con ffmpeg da un programma .NET?
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();
}
}
Cosa succede in realtà è il contenuto del programma FFmpeg è stampato al Console app, ma la variabile result
è una stringa vuota. Voglio controllare l'avanzamento della conversione in modo interattivo, quindi l'utente non deve neanche sapere che sto usando ffmpeg, ma conosce ancora i dettagli dell'avanzamento della conversione e quale percentuale ecc. L'app è all'altezza.
Fondamentalmente sarei anche felice con un wrapper .NET per una funzione P/Invoke to conversion SOLO (non sono interessato a un'intera libreria esterna, a meno che non riesca a estrarre la funzione PI da esso).
Chiunque abbia esperienza in ffmpeg & .NET?
Aggiornamento Vedere la mia ulteriore domanda, how to write input to a running ffmpeg process.
Lo StringBuilder sb non viene utilizzato. –
@aaaa bbbb: rimosso, grazie. È rimasto da tentativi precedenti, comunque ho aggiunto alcune funzionalità importanti alla mia risposta. ** Potrebbe per favore dare un'occhiata a [questo] (http://stackoverflow.com/questions/7296901) **? – Shimmy