El asunto es el siguiente, usando el programa ffmpeg eh hecho muchas cosas y en este caso el poder capturar el sonido del microfono y la pantalla del escritorio en un video.
Este codigo es totalmente funcional, el unico detalle es que el video va a una velocidad muy rapida no acorde a la voz del microfono asi que no se reproduce como debe ser se corta antes de tiempo, eh buscado mucho y no eh encontrado nada relacionado a eso, espero alguien pueda ayudarme.
Código:
string input = "salida";
string audio = Settings.Default.micDefault;
string destFile = Path.Combine(Settings.Default.directorioVideo, Path.GetFileNameWithoutExtension(input) + ".mp4");
string args = string.Format(@"-y -rtbufsize 200M -f gdigrab -thread_queue_size 1024 -probesize 10M -r 30 -draw_mouse 1 -i desktop -f dshow -channel_layout stereo -thread_queue_size 1024 -i audio=""{0}"" -c:v libx264 -r 30 -preset ultrafast -tune zerolatency -crf 25 -pix_fmt yuv420p -c:a aac -strict -2 -ac 2 -b:a 128k ""{1}", audio, destFile);
System.Threading.Tasks.Task.Run(() =>
{
System.Diagnostics.Process Conversor = new System.Diagnostics.Process();
Conversor.StartInfo.FileName = "ffmpeg";
Conversor.StartInfo.Arguments = args;
Conversor.Start();
Conversor.WaitForExit();
Conversor.Close();
});
Nota: Como un extra , si alguien sabe como bajar el peso del archivo seria fantastico ya que con solo 2 segundos ya son 2 Mb aproximadamente... (muy alto).
Nota 2 : La Settings.Default.micDefault; es donde se guarda un microfono (nombre exactamente)
Settings.Default.directorioVideo; Ruta de salida odnde se guarda el archivo.
Muchas Gracias