estoy tratando de crear un contenedor .NET para la conversión de los medios de comunicación-archivo usando ffmepg, aquí es lo que he intentado:¿Interactuar con ffmpeg desde un programa .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();
}
}
Lo que en realidad sucede es el contenido del programa ffmpeg se imprime a la Aplicación de consola, pero la variable result
es una cadena vacía. Quiero controlar el progreso de la conversión de forma interactiva, por lo que el usuario ni siquiera tiene que saber que estoy usando ffmpeg, pero aún sabe los detalles del progreso de la conversión y qué porcentaje, etc., está haciendo la aplicación.
Básicamente también me gustaría tener un contenedor .NET para una función de P/invocación a conversió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 & .NET?
Actualización Por favor, consulte mi pregunta adicional, how to write input to a running ffmpeg process.
StringBuilder sb no se utiliza. –
@aaaa bbbb: Eliminado, gracias. Se mantuvo de intentos anteriores, de todos modos, agregué algunas funciones importantes a mi respuesta. ** ¿Podría echar un vistazo a [esto] (http://stackoverflow.com/questions/7296901) **? – Shimmy