/* * Esta función llamada desde el formulario incorporará mediante otras f aux * el archivo pasado como parametro, según tenga los procesos indicados * cada archivo terminará agrupado según corresponda, y el grupo se creará si es necesario. */ public static void agregarItemsProcesamiento(String archivo, ListView listaViewtrabajos, CheckedListBox chequeoVideo, CheckedListBox chequeoAudio, Label etiquetaMensajes) { //variables requeridas para cada ejecución del bucle String[] urlArchivo = archivo.Split('\\'); string escan = Tramite.esEntrelazado(archivo); ListViewGroup grupo = obtenerGrupoExistente(etiquetaMensajes, listaViewtrabajos, urlArchivo); incorporarProcesosChequeadosDeArchivoEnCola("Video", chequeoVideo, listaViewtrabajos, archivo, grupo, escan); incorporarProcesosChequeadosDeArchivoEnCola("Audio", chequeoAudio, listaViewtrabajos, archivo, grupo, "N/A"); }
private void botonComenzar_Click(object sender, EventArgs e) { int trabajosCorriendo = 0; Control.CheckForIllegalCrossThreadCalls = false; foreach (ListViewItem trabajo in listaViewtrabajos.Items) { Console.WriteLine("EJECUTANDO ESTO POR VEZ NRO " + trabajosCorriendo.ToString()); String archivoTratar = trabajo.SubItems[0].Text.ToString(); String tipo = trabajo.SubItems[1].Text.ToString(); String scan = trabajo.SubItems[3].Text.ToString(); etiquetaMensajes.Text = tipo; String parametro = trabajo.SubItems[2].Text.ToString(); String llamadaFFMPEG = ""; String rutaFFMPEG = anana_config.getRutaFFMPEG(); String carpetaExportacion = anana_config.getCarpetaExportacion(); // Limpiar la seleccion de trabajos y activar la actual for (int i = 0; i < listaViewtrabajos.Items.Count; i++) { listaViewtrabajos.Items[i].Selected = false; } listaViewtrabajos.Items[trabajosCorriendo].Selected = true; if (tipo.Equals("Video")) { llamadaFFMPEG = ayudanteParametrizadorffmpeg.textoArgumentoFfmpeg(archivoTratar, parametro, scan, chequeoVideo, anana_config); } else if (tipo.Equals("Audio")) { llamadaFFMPEG = ayudanteParametrizadorffmpeg.textoArgumentoFfmpegAudio(archivoTratar, parametro, scan, chequeoAudio, anana_config); } Console.WriteLine("======================================================"); Console.WriteLine(llamadaFFMPEG); Console.WriteLine("======================================================"); Tramite.ejecutar(llamadaFFMPEG, archivoTratar, etiquetaMensajes, barraDeProgreso); trabajosCorriendo++; } etiquetaMensajes.ForeColor = System.Drawing.Color.Blue; etiquetaMensajes.Text = "TERMINAMOS DE PROCESAR TODA LA COLA DE TRABAJO"; }
public static bool ejecutar(String argumento, String rutaArchivo, Label etiquetaMensajes, ProgressBar barraDeProgreso) { String rutaFFMPEG = ConfigurationManager.AppSettings["rutaFFMPEG"].ToString(); String rutaEXIF = ConfigurationManager.AppSettings["rutaEXIF"].ToString(); String[] frame; int frameActual = 0; int frameTotal = 0; Boolean terminamos = false; int contadorEstupido = 0; Process procprobe = new System.Diagnostics.Process(); procprobe.StartInfo.FileName = rutaEXIF; procprobe.EnableRaisingEvents = true; procprobe.StartInfo.CreateNoWindow = true; procprobe.StartInfo.Domain = ""; procprobe.StartInfo.LoadUserProfile = false; procprobe.StartInfo.Password = null; procprobe.StartInfo.RedirectStandardError = true; procprobe.StartInfo.RedirectStandardOutput = true; procprobe.StartInfo.StandardErrorEncoding = null; procprobe.StartInfo.StandardOutputEncoding = null; procprobe.StartInfo.UserName = ""; procprobe.StartInfo.UseShellExecute = false; procprobe.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; procprobe.StartInfo.WorkingDirectory = "C:\\LOGOS\\TRABAJOS"; // procprobe.StartInfo.Arguments = "-v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 \"" + rutaArchivo + "\""; procprobe.StartInfo.Arguments = "-MediaDuration \"" + rutaArchivo + "\""; Console.WriteLine(procprobe.StartInfo.Arguments); procprobe.OutputDataReceived += new DataReceivedEventHandler( (s, e) => { if (frameTotal == 0) { try { String[] duracion_raw = e.Data.Substring(34).Split(':'); int fps = Tramite.obtenerFPS(rutaArchivo); Console.WriteLine("#### que corno es el tiempo"); Console.WriteLine(duracion_raw[0]); Console.WriteLine(duracion_raw[1]); Console.WriteLine(duracion_raw[2]); int segundos = Int32.Parse(duracion_raw[0]) * 3600 + Int32.Parse(duracion_raw[1]) * 60 + Int32.Parse(duracion_raw[2]); frameTotal = segundos * fps + 1; Console.WriteLine("##### El frametotal es: " + frameTotal.ToString()); } catch (Exception) { Console.WriteLine("Algun error impidió revisar la metadata"); } } } ); procprobe.Start(); procprobe.BeginOutputReadLine(); // procprobe.BeginErrorReadLine(); procprobe.WaitForExit(); procprobe.Close(); procprobe.Dispose(); Process procesador = new System.Diagnostics.Process(); procesador.StartInfo.FileName = rutaFFMPEG; procesador.StartInfo.Arguments = argumento; procesador.EnableRaisingEvents = true; procesador.StartInfo.CreateNoWindow = true; procesador.StartInfo.Domain = ""; procesador.StartInfo.LoadUserProfile = false; procesador.StartInfo.Password = null; procesador.StartInfo.RedirectStandardError = true; procesador.StartInfo.RedirectStandardOutput = true; procesador.StartInfo.StandardErrorEncoding = null; procesador.StartInfo.StandardOutputEncoding = null; procesador.StartInfo.UserName = ""; procesador.StartInfo.UseShellExecute = false; procesador.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; procesador.StartInfo.WorkingDirectory = "C:\\LOGOS\\TRABAJOS"; procesador.OutputDataReceived += new DataReceivedEventHandler( (s, a) => { etiquetaMensajes.Text = a.Data; Console.WriteLine(a.Data); if (a.Data != null) { if (a.Data.ToString().Length > 6) { if (a.Data.Substring(0, 5) == "frame=") { frame = a.Data.Split('='); try { frameActual = Int32.Parse(frame[1].Substring(0, frame[1].Length - 3)); barraDeProgreso.Value = frameActual * 100 / frameTotal; } catch (Exception) { // Console.WriteLine("No se pudo obtener el frame actual"); } } } } } ); procesador.ErrorDataReceived += new DataReceivedEventHandler( (s, a) => { etiquetaMensajes.Text = a.Data; // Console.WriteLine(a.Data); try { frame = a.Data.Split('='); frameActual = Int32.Parse(frame[1].Substring(0, frame[1].Length - 3)); barraDeProgreso.Value = frameActual * 100 / frameTotal; } catch (Exception) { // Console.WriteLine("No se pudo obtener el frame actual"); } } ); procesador.Start(); procesador.BeginOutputReadLine(); procesador.BeginErrorReadLine(); procesador.WaitForExit(); procesador.Close(); procesador.Dispose(); return(true); // Console.WriteLine(rutaFFMPEG + " " + argumento); }
public static string textoArgumentoFfmpeg(string urlArchivo, string parametroListado, string escan, CheckedListBox listadoTareasVideo, ayudanteConfiguracion anana_config) { string[] segmentosUrlArchivo = urlArchivo.Split('\\'); int nroUltSegUrl = segmentosUrlArchivo.Length - 1; string nombreArchivoConExtension = segmentosUrlArchivo[nroUltSegUrl]; string nombreArchivoSinExtension = nombreArchivoConExtension.Substring(0, nombreArchivoConExtension.Length - 4); string llamadaFFMPEG = ""; String rutaFFMPEG = anana_config.getRutaFFMPEG(); String carpetaExportacion = anana_config.getCarpetaExportacion(); String motorVideo = anana_config.getMotorVideo(); String rutaTEMPORAL = anana_config.getRutaTEMPORAL(); String fps = ConfigurationManager.AppSettings["fpsExports"].ToString(); fps = "-r " + fps; // ONDEMAND if (parametroListado.Equals(listadoTareasVideo.Items[0].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 18000k -profile:v high -level 4.1 -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "VOD") + ".mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -video_size 1920x1080 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 18M -bufsize 8M -maxrate 18M -bf 2 -g 150 -b 18M -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "VOD") + ".mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 18000K -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "VOD") + ".mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 18000K " + fps + " -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "VOD") + ".mp4\""; break; } } // YOUTUBE if (parametroListado.Equals(listadoTareasVideo.Items[1].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 15000k -profile:v high -level 4.1 -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "YT") + ".mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -video_size 1920x1080 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 15M -bufsize 8M -maxrate 15M -bf 2 -g 150 -b 18M -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "YT") + ".mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 15000K -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "YT") + ".mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 15000K " + fps + " -c:a aac -b:a 256k \"" + carpetaExportacion + "\\YT - " + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "YT") + ".mp4\""; break; } } // FACEBOOK if (parametroListado.Equals(listadoTareasVideo.Items[2].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 8000k -profile:v high -level 4.1 -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "FB") + ".mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -video_size 1920x1080 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 8M -bufsize 8M -maxrate 8M -bf 2 -g 150 -b 8M -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "FB") + ".mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 8000K -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "FB") + ".mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 8000K " + fps + " -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "FB") + ".mp4\""; break; } } // TWITTER if (parametroListado.Equals(listadoTareasVideo.Items[3].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -video_size 1280x720 -c:v libx264 " + fps + " -b:v 2000k -profile:v high -level 4.1 -c:a aac -b:a 256k -map 0 -segment_time 00:02:19 -f segment -reset_timestamps 1 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "TW") + "_%03d.mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -video_size 1280x720 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 2M -bufsize 8M -maxrate 2M -bf 2 -g 150 -b 2M -c:a aac -b:a 256k -map 0 -segment_time 00:02:19 -f segment -reset_timestamps 1 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "TW") + "_ %03d.mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 2000K -c:a aac -b:a 256k -map 0 -segment_time 00:02:19 -f segment -reset_timestamps 1 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "TW") + "_ %03d.mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow " + fps + " -b:v 2000K -c:a aac -b:a 256k -map 0 -segment_time 00:02:19 -f segment -reset_timestamps 1 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "TW") + "_ %03d.mp4\""; break; } } // IGTV if (parametroListado.Equals(listadoTareasVideo.Items[4].ToString())) { llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"transpose = 1\" \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "IGTV") + ".mp4\""; } // INSTAGRAM if (parametroListado.Equals(listadoTareasVideo.Items[5].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -video_size 1280x720 -c:v libx264 " + fps + " -b:v 2500k -c:a aac -b:a 128k -map 0 -segment_time 00:00:57 -f segment -reset_timestamps 1 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "IG") + "_%03d.mp4"; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -video_size 1280x720 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 2.5M -bufsize 2M -maxrate 2.5M -bf 2 -g 150 -b 2.5M -c:a aac -b:a 128k -map 0 -segment_time 00:00:57 -f segment -reset_timestamps 1 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "IG") + "_%03d.mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 2500K -c:a aac -b:a 128k -map 0 -segment_time 00:00:57 -f segment -reset_timestamps 1 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "IG") + "_%03d.mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow " + fps + " -b:v 2500K -c:a aac -b:a 128 -map 0 -segment_time 00:00:57 -f segment -reset_timestamps 1 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "IG") + "_%03d.mp4\""; break; } } // WHATSAPP O TELEGRAM // @TODO El maximo tamaño deberia ir en algun lugar mas normalizado, tipo en la config if (parametroListado.Equals(listadoTareasVideo.Items[6].ToString())) { // Todos estos calculos es para obtener el bitrate en Kb/s // maximo posible segun el tamaño // Si el limite esta muy por arriba int duracionMs = Tramite.duracion(urlArchivo); Console.WriteLine("La duracion es " + duracionMs); double duracionsegDouble = duracionMs / 1000; double duracionSeg = Math.Round(duracionsegDouble, 0);; double maximoTamanioMB = 64.0; // EL MAXIMO TAMAÑO DE WHATSAPP // Si la duracion es menor de 2 minutos (7Megas) if (duracionSeg <= 120) { maximoTamanioMB = 8.0; } // Si la duracion es mayor de 3 minutos y menor de 4 minutos if (duracionSeg > 120 && duracionSeg <= 240) { maximoTamanioMB = 15.0; } // Si la duracion es mayor de 4 minutos y menor de 6 minutos if (duracionSeg > 240 && duracionSeg <= 360) { maximoTamanioMB = 20.0; } // Si la duracion es mayor de 6 minutos y menor de 8 minutos if (duracionSeg > 360 && duracionSeg <= 480) { maximoTamanioMB = 28.0; } // Si la duracion es mayor de 8 minutos y menor de 10 minutos if (duracionSeg > 480 && duracionSeg <= 600) { maximoTamanioMB = 36.0; } // Si la duracion es mayor de 10 minutos y menor de 15 minutos if (duracionSeg > 600 && duracionSeg <= 900) { maximoTamanioMB = 42.0; } // Si la duracion es mayor de 15 minutos y menor de 20 minutos if (duracionSeg > 900 && duracionSeg <= 1200) { maximoTamanioMB = 64.0; } // Si la duracion es mayor de 20 minutos if (duracionSeg > 1200) { maximoTamanioMB = 64.0; } // Calculo para llegar al bitrate optimo segun el tamaño especificado double bitrateKbFijoAudio = 96.0; double tamanioAudioKb = bitrateKbFijoAudio * duracionSeg; double tamanioAudioMb = tamanioAudioKb / 1000.0; double tamanioAudioMB = tamanioAudioMb / 8.0; double maximoTamanioMb = (maximoTamanioMB - tamanioAudioMB) * 8.0; Console.WriteLine("El duracionSeg es: " + duracionSeg); Console.WriteLine("El maximoTamanioMb es: " + maximoTamanioMb); double maximobitRateMb = maximoTamanioMb / duracionSeg; Console.WriteLine("El maximobitRateMb es: " + maximobitRateMb); maximobitRateMb = Math.Round(maximobitRateMb, 2); double maximobitRateKbDouble = maximobitRateMb * 1000.0; int maximobitRateKb = (int)Math.Round(maximobitRateKbDouble, 0); string bitrate = maximobitRateKb + "k"; switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v " + bitrate + " -c:a aac -b:a 96k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "CHAT") + ".mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -video_size 1280x720 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile main -b:v " + bitrate + " -bufsize 8M -maxrate " + bitrate + " -bf 2 -g 150 -b " + bitrate + " -c:a aac -b:a 96k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "CHAT") + ".mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v " + bitrate + " -c:a aac -b:a 96k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "CHAT") + ".mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale = 1280:720\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow " + fps + " -b:v " + bitrate + " -c:a aac -b:a 96k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "CHAT") + ".mp4\""; break; } } // MOSCA if (parametroListado.Equals(listadoTareasVideo.Items[7].ToString())) { string rutaMosca = ConfigurationManager.AppSettings["rutaMosca"].ToString(); switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -i \"" + rutaMosca + "\" -filter_complex \"[0:v][1:v]overlay = 10:10\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 18000k -profile:v high -level 4.1 -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "VOD") + ".mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -i \"" + rutaMosca + "\" -filter_complex \"[0:v][1:v]overlay = 10:10\" " + interlacedArg(escan) + " -video_size 1920x1080 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 18M -bufsize 8M -maxrate 18M -bf 2 -g 150 -b 18M -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "VOD") + ".mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -i \"" + rutaMosca + "\" -filter_complex \"[0:v][1:v]overlay = 10:10\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 18000K -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "VOD") + ".mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -i \"" + rutaMosca + "\" -filter_complex \"[0:v][1:v]overlay = 10:10\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 18000K " + fps + " -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "VOD") + ".mp4\""; break; } } // MARCA DE AGUA if (parametroListado.Equals(listadoTareasVideo.Items[8].ToString())) { string rutaMarca = ConfigurationManager.AppSettings["rutaMarca"].ToString(); switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -i \"" + rutaMarca + "\" -filter_complex \"[0:v][1:v]overlay = 10:10\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 5000k -profile:v high -level 4.1 -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PREV") + ".mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -i \"" + rutaMarca + "\" -filter_complex \"[0:v][1:v]overlay = 10:10\" " + interlacedArg(escan) + " -video_size 1920x1080 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 5M -bufsize 8M -maxrate 5M -bf 2 -g 150 -b 5M -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PREV") + ".mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -i \"" + rutaMarca + "\" -filter_complex \"[0:v][1:v]overlay = 10:10\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 5000K -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PREV") + ".mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -i \"" + rutaMarca + "\" -filter_complex \"[0:v][1:v]overlay = 10:10\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 5000K " + fps + " -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PREV") + ".mp4\""; break; } } // DNxHD 120 if (parametroListado.Equals(listadoTareasVideo.Items[9].ToString())) { llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vcodec dnxhd -b:v 120M -s 1920x1080 -pix_fmt yuv422p " + fps + " -c:a pcm_s16le -ar 48000 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "DNxHD_120") + ".mov\""; } // DNxHD 36 if (parametroListado.Equals(listadoTareasVideo.Items[10].ToString())) { llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vcodec dnxhd -b:v 36M -s 1920x1080 -pix_fmt yuv422p " + fps + " -c:a pcm_s16le -ar 48000 \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "DNxHD_36") + ".mov\""; } // H264 Edicion if (parametroListado.Equals(listadoTareasVideo.Items[11].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 20000k -profile:v high -level 4.1 -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "EDIT") + ".mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -video_size 1920x1080 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 20M -bufsize 8M -maxrate 20M -bf 2 -g 150 -b 20M -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "EDIT") + ".mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 20000K -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "EDIT") + ".mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 20000K " + fps + " -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "EDIT") + ".mp4\""; break; } } // TS if (parametroListado.Equals(listadoTareasVideo.Items[12].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 20000k -c:a aac -b:a 256k -bsf:v h264_mp4toannexb -f mpegts \"" + carpetaExportacion + "\\" + nombreArchivoSinExtension + ".ts\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -video_size 1920x1080 -pix_fmt yuv420p -c:v h264_nvenc " + fps + " -preset slow -profile high -b:v 20M -bufsize 5M -maxrate 21M -bf 2 -g 150 -b 20M -c:a aac -b:a 256k -bsf:v h264_mp4toannexb -f mpegts \"" + carpetaExportacion + "\\" + nombreArchivoSinExtension + ".ts\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 20000K -c:a aac -b:a 256k -bsf:v h264_mp4toannexb -f mpegts \"" + carpetaExportacion + "\\" + nombreArchivoSinExtension + ".ts\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 20000K " + fps + " -c:a aac -b:a 256k -bsf:v h264_mp4toannexb -f mpegts \"" + carpetaExportacion + "\\" + nombreArchivoSinExtension + ".ts\""; break; } } // SD if (parametroListado.Equals(listadoTareasVideo.Items[13].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale=854:480\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 1500k -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "SD") + ".mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale=854:480\" " + interlacedArg(escan) + " -video_size 1920x1080 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 1.5M -bufsize 8M -maxrate 1.5M -bf 2 -g 150 -b 1.5M -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "SD") + ".mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale=854:480\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 1500K -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "SD") + ".mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -vf \"scale=854:480\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 1500K " + fps + " -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "SD") + ".mp4\""; break; } } // PAL if (parametroListado.Equals(listadoTareasVideo.Items[14].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -filter:v \"pad = iw:iw * 3 / 4:(ow - iw) / 2:(oh - ih) / 2,scale = 720:576\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 2500k -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PAL") + ".mp4\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -filter:v \"pad = iw:iw * 3 / 4:(ow - iw) / 2:(oh - ih) / 2,scale = 720:576\" " + interlacedArg(escan) + " -video_size 720x576 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 2.5M -bufsize 8M -maxrate 2.5M -bf 2 -g 150 -b 2.5M -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PAL") + ".mp4\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -filter:v \"pad = iw:iw * 3 / 4:(ow - iw) / 2:(oh - ih) / 2,scale = 720:576\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 2500K -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PAL") + ".mp4\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" -filter:v \"pad = iw:iw * 3 / 4:(ow - iw) / 2:(oh - ih) / 2,scale = 720:576\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 2500K " + fps + " -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PAL") + ".mp4\""; break; } } // H264 Edicion if (parametroListado.Equals(listadoTareasVideo.Items[15].ToString())) { switch (motorVideo) { case "x264": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -c:v libx264 " + fps + " -b:v 25000k -profile:v high -level 4.1 -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PGM") + ".mov\""; break; case "NVENC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -video_size 1920x1080 -pix_fmt yuv420p -c:v h264_nvenc -preset slow " + fps + " -profile high -b:v 25M -bufsize 15M -maxrate 25M -bf 2 -g 150 -b 25M -c:a aac -b:a 256k \"" + carpetaExportacion + "\\PGM - " + nombreArchivoSinExtension + ".mov\""; break; case "INTELQS": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_qsv -look_ahead_depth 0 -preset slow " + fps + " -b:v 25000K -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PGM") + ".mov\""; break; case "AMDAVC": llamadaFFMPEG = "-y -i \"" + urlArchivo + "\" " + interlacedArg(escan) + " -vcodec h264_amf -preset slow -b:v 25000K " + fps + " -c:a aac -b:a 256k \"" + carpetaExportacion + "\\" + nuevoNombreDelArchivo(nombreArchivoSinExtension, "PGM") + ".mov\""; break; } } return(llamadaFFMPEG); }