elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ffmpeg archivos con espacio
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ffmpeg archivos con espacio  (Leído 1,484 veces)
rigorvzla

Desconectado Desconectado

Mensajes: 187


Ver Perfil
ffmpeg archivos con espacio
« en: 8 Abril 2018, 17:18 »

Hola muchachos, tengo un pequeño problema y es que en c# no logro colocar en la linea de argumentos las dobles comillas " " para archivos con espacio, me explico mejor.

esta es la linea para convertir archivos : "ffmpeg -i entrada.mp4 salida.mp3"

Pero cuando intento esto "ffmpeg -i entrada dos.mp4 salida.mp3" me genera un error el cual para corregirlo debo colocar, "ffmpeg -i "entrada dos.mp4" salida.mp3" y me convierte el archivo todo esto desde una ventana de "Dos".

El problema es que en C# , wpf no encuentro para hacer esta linea "ffmpeg -i "entrada dos.mp4" salida.mp3"

el codigo esta en un boton(openfiledialog)

Código:
                string entrada = "\"" + ofd.FileName + "\"";

                    System.Diagnostics.Process Conversor = new System.Diagnostics.Process();
                    Conversor.StartInfo.FileName = "ffmpeg";
                    Conversor.StartInfo.Arguments = $"-i {entrada} -b:a 320k {@"C:\"}";
                    Conversor.Start();
                    Conversor.WaitForExit();           
                    Conversor.Close();

es funcional para archivos sin espacio, espero puedan ayudarme


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: ffmpeg archivos con espacio
« Respuesta #1 en: 8 Abril 2018, 19:33 »

Ya estás encerrando entre comillas dobles la ruta del archivo indiferentemente de si contiene espacios en blanco o sin ellos, por ende no hay problema con respecto a eso.

Un problema real que si hay en ese código, es que no estás asignando ningún nombre ni extensión de archivo en el argumento de la ruta de destino, y eso es algo que ffmpeg no lo genera automáticamente por si solo. Si no especiicas ninguna extensión de archivo entonces ffmpeg no puede determinar un codec de audio para la extracción (ya que tampoco has especificado el nombre de ningún codec en los argumentos).

Prueba así:
Código
  1. string input =  @"C:\File.avi";
  2. string output = Path.Combine(Path.GetDirectoryName(input), Path.GetFileNameWithoutExtension(input)) + ".mp3";
  3. string args = string.Format(@"-i ""{0}"" -b:a 320k ""{1}""", input, output);
  4.  
  5. using (Process p = new Process()) {
  6.    p.StartInfo.FileName = "ffmpeg.exe";
  7.    p.StartInfo.Arguments = args;
  8.    p.Start();
  9.    p.WaitForExit(Timeout.Infinite);
  10. }

Saludos.


« Última modificación: 8 Abril 2018, 19:38 por Eleкtro » En línea


rigorvzla

Desconectado Desconectado

Mensajes: 187


Ver Perfil
Re: ffmpeg archivos con espacio
« Respuesta #2 en: 8 Abril 2018, 20:06 »

COMO SIEMPRE!!!! GRACIAS!! elektro si tenia la ruta de salida solo que cuando copie aqui el post , borre unas cosas que no estaban como debia ser y las deje mal puesta al "corregirlas" (mi error en el post) mas , mataste 2 pajaros de un tiro al darme tu respuesta incluso me di cuenta que hay planteamientos que aunque teoricamente esten bien , logicamente no es asi.

"Ya estás encerrando entre comillas dobles la ruta del archivo indiferentemente de si contiene espacios en blanco o sin ellos, por ende no hay problema con respecto a eso."

Codigo Sin Error

Código:
string destFile = Path.Combine(@"C:\", Path.GetFileNameWithoutExtension(ofd.FileName) + ".mp3");


                System.Threading.Tasks.Task.Run(() =>
                {
                    System.Diagnostics.Process Conversor = new System.Diagnostics.Process();
                    Conversor.StartInfo.FileName = "ffmpeg";
                    Conversor.StartInfo.Arguments = $"-i {ofd.FileName} -b:a 320k {destFile}";
                    Conversor.Start();
                    Conversor.WaitForExit();
                    Conversor.Close();

No es problema solo es para aclara esa duda que me surgio porfavor, nuevamente gracias por que es la solucion correcta. Gracias!

porque esto no sirvio?
Código:
  string entrada = "\"" + ofd.FileName + "\"";
« Última modificación: 8 Abril 2018, 20:09 por rigorvzla » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: ffmpeg archivos con espacio
« Respuesta #3 en: 8 Abril 2018, 23:07 »

porque esto no sirvio?
string entrada = "\"" + ofd.FileName + "\"";

No sabría decirte sin comprobar el output de FFMPEG. Pero como ya te dije no hay nada erroneo en esa linea, ahí estás encerrando una ruta absoluta entre comillas dobles, y la estás insertando con comillas dobles cuando asignas los argumentos en la propiedad 'Conversor.StartInfo.Arguments'. Por eso te digo que el error que tuvieras no está relacionado con rutas con espacios en blanco; el código que mostraste debería funcionarte bien, siempre y cuando le asignases una ruta absoluta en el argumento de destino en vez de poner solamente "C:\".

saludos
« Última modificación: 8 Abril 2018, 23:13 por Eleкtro » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines