Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  Dividiendo archivos de sonido ¡Shell no me hace caso!
#1

Estoy añadiendo a gbAmp la utilidad de extraer pistas de un archivo de sonido, que a veces sólo consigues todo el disco en un solo archivo o sólo te interesa un trocito de un concierto. Todo muy bien y muy chulo y muy fácil con ffmpeg... pero a la hora de enviar la instrucción al Shell, natis de natis. He probado redirigiendo la salida de errores, he probado con Exec y al final con lo único que funciona es con un terminalview... pero la estética no me gusta nada.

Adjunto un pequeño proyecto que hace lo que digo. Elegid un archivo de disco y marcad un tiempo "desde" y otro "hasta" y una carpeta de salida, un nombre para la pista extraída (incluyendo la extensión) y pulsando "Extraer en terminalview" funciona. Con "Extrayendo con Shell" ni flores...

¿Alguien sabría y podría decirme qué es lo que estoy haciendo mal?

Saludos

Tenéis que tener instalado ffmpeg, claro. Que se me olvidaba decirlo.

Saludos


Archivos adjuntos
.gz Divisor-0.0.1.tar.gz Tamaño: 12.74 KB  Descargas: 3

No podemos regresar
    ¡Gracias!
#2

(08-09-2022, 21:19)Shordi escribió:  qué es lo que estoy haciendo mal?

En mi opinión, no estás haciendo nada malo. Parece que "Shell" Confused no puede manejar la línea de comando con "ffmpeg".

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
[-] Los siguientes 1 usuarios dice gracias a vuott por este post:
  • Shordi
    ¡Gracias!
#3

Cita:En mi opinión, no estás haciendo nada malo.
Big Grin Big Grin 
Cita:Parece que "Shell"  no puede manejar la línea de comando con "ffmpeg".
Aaaarrgghh.... Huh Dodgy Angry

Una noche de descanso y la solución se me hace obvia a la primera. No sé a qué se debe que Shell ...for Read ... no funcione pero está claro que cuando se usa un terminal sí lo hace. ¿Hay pues manera de ejecutar el comando dentro de un terminal virtual? Sí la hay: Shell... for Input ...
Confieso que no tengo nada clara la diferencia (Nota mental: leer detenidamente las ayudas sobre los terminales virtuales), pero he cambiado la palabrita y todo perfecto.

¡No hay nada como dormir bien!


Saludos

No podemos regresar
    ¡Gracias!
#4

Lo Confused más curioso es que, si en tu programa reduzco la línea de comandos con "Shell" a lo esencial:
 
GAMBAS


es decir sin una variable que apunte al proceso lanzado y sin abrir el proceso en lectura, ...el archivo de audio final Confused no se crea.

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!
#5

(09-09-2022, 13:47)vuott escribió:  Lo Confused más curioso es que, si en tu programa reduzco la línea de comandos con "Shell" a lo esencial:
 
GAMBAS


es decir sin una variable que apunte al proceso lanzado y sin abrir el proceso en lectura, ...el archivo de audio final Confused no se crea.

Efectivamente, algo raro hace ffmpeg...

Saludos

No podemos regresar
    ¡Gracias!
#6

En el programa Splitter [1] que separa el sonido del audio y los vuelve a juntar supongo que debo haber tenido algun problema similar porque uso Exec en lugar de Shell, por ejemplo uso estas sentencias.

[1] https://gambas-es.org/showthread.php?tid...t=splitter

GAMBAS
  1. Public Sub NSplit(sFile As String)
  2.  
  3.   Dim sDir As String
  4.   Dim sCmd As String
  5.   Dim sKill As Variant
  6.  
  7.   aFiles.clear
  8.  
  9.   If Exist(sFile) Then
  10.  
  11.     If Lower(File.Ext(Dialog.Path)) = "mp4" Then
  12.  
  13.       Inc Application.Busy
  14.       sDir = File.Dir(sFile)
  15.       sAudio = sDir &/ "audio.mp3"
  16.       sMute = sDir &/ "mute.mp4"
  17.       sOutput = sDir &/ "denoise.mp4"
  18.  
  19.       For Each sKill In [sAudio, sMute, sOutput]
  20.         If Exist(sKill) Then
  21.           Shell "rm -f '" & sKill & "'" Wait
  22.         Endif
  23.       Next
  24.  
  25.       Exec ["ffmpeg", "-i", sFile, "-c", "copy", "-an", sMute] Wait For Read As "Job"
  26.  
  27.       aFiles.Add(sMute)
  28.  
  29.       Exec ["ffmpeg", "-i", sFile, "-map", "0:a", sAudio] Wait For Read As "Job"
  30.  
  31.       aFiles.Add(sAudio)
  32.  
  33.       Dec Application.Busy
  34.       If Message.Question(("Audio track was extracted") & gb.NewLine & ("Do you want to open it?"), ("Yes"), ("Cancel")) = 1 Then
  35.         Shell "audacity " & sAudio
  36.       Endif
  37.  
  38.     Endif
  39.  


Y para unir:
GAMBAS
  1.  
  2.   If Exist(aFiles[0]) And Exist(aFiles[1]) Then
  3.     Exec ["ffmpeg", "-i", aFiles[0], "-i", aFiles[1], "-c:v", "copy", "-c:a", "mp3", sOutput] Wait For Read As "Job"
  4.  



1 Saludo.
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)