Como ejemplo, tengo un montón de .ogg
archivos en mi Downloads
directorio, así que... para convertir por lotes un montón de .ogg
archivos en un directorio determinado a .mp3
en el mismo directorio, hice lo siguiente en Terminal :
cd Downloads
for f in *.ogg; do ffmpeg -i "$f" "${f%.*}.mp3"; done
Esto creó una .mp3
archivo para cada .ogg
archivo que tengo en mi Descargas directorio.
Así que, utilizando la ruta de su directorio, haga lo siguiente:
cd ~/Downloads/Minecraft+Sound+Pack+1.13/step
for f in *.ogg; do ffmpeg -i "$f" "${f%.*}.mp3"; done
Dicho esto y teniendo en cuenta que se trata de un paquete de archivos de sonido que se ha descargado de Internet, Minecraft+Sound+Pack+1.13.zip, que contiene 131 directorios algunos anidados a 3 o más niveles de profundidad, y 1406 .ogg
archivos, de los cuales algunos nombres de archivo son los mismos, yo manejaría la situación teniendo en cuenta las siguientes condiciones.
- He descargado el
Minecraft+Sound+Pack+1.13.zip
de Internet.
- Expandí el archivo zip haciendo doble clic en él en mi carpeta de descargas en el Finder. Tenga en cuenta que esto se debe a que no dejo que el navegador descomprima los archivos comprimidos descargados. Esto también conserva una copia del archivo zip en caso de que todavía lo necesite después.
Una vez hecho esto, utilicé lo siguiente ejemplo bash script para convertir cada .ogg
dentro del archivo estructura jerárquica de carpetas a un .mp3
en la misma ubicación. A continuación, elimine el .ogg
archivos, ya que todavía tengo el archivo zip original.
#!/bin/bash
# s="/Path/To/Source/Files"
s="$HOME/Downloads/Minecraft+Sound+Pack+1.13"
for d in $(find "$s" -type f -iname '*.ogg' | sed -E 's|/[^/]+$||' | sort -u); do
cd "$d"
for f in *.ogg; do
ffmpeg -i "$f" "${f%.*}.mp3"
rm "$f"
done
done
- Sólo hay que cambiar el valor de
s="..."
como o si es necesario y como regla general me gusta usar $HOME
en lugar de ~
.
Tenga en cuenta que esto es sólo cómo elijo para hacer frente a la situación en el momento y hay muchas maneras diferentes que un script podría ser escrito. Sin embargo, creo que esto logra el objetivo final de tener el estructura jerárquica de carpetas del 131 directorios intacto con el 1406 convertido .mp3
archivos .
Por cierto... En mi viejo MacBook Pro, (Retina, 15 pulgadas, principios de 2013) 2,8 GHz Intel Core i7, tomó un poco menos de 9 minutos para procesar el 1406 .ogg
archivos .
0 votos
El código anterior no funcionó. Si se supone que ffmpeg debe leer en carpetas dentro del directorio, entonces algo está mal con ffmpeg. He probado "ffmpeg -i "{}" "{.}.mp3" ::: .ogg", "for i in *.ogg; do ffmpeg -i "$i" "${i%. }.mp3"; hecho" y el código anterior.
0 votos
@user10829240 ¿Intentaste convertir un archivo por separado para comprobar si ffmpeg funciona en tu sistema?
ffmpeg -i file_name.ogg file_name.mp3
0 votos
Si ya tienes un fragmento de código, añádelo directamente a la pregunta y explica en qué falla.
0 votos
Ffmpeg no se supone que lea dentro de los directorios; todo lo que hace es tomar la entrada de algún formato y la salida como otro, eso es todo. La lectura "dentro" de un directorio depende de cómo se codifique. Sin ver tu código, es imposible decir por qué está fallando.
0 votos
Ffmpeg sí funciona en mi sistema. Lo usé el otro día para convertir un vídeo de 1h 30m de .flv a .mp4 porque no podía abrir el archivo en mi sistema. Funcionó perfectamente sin ningún error.
0 votos
El mensaje de error le dice que no puede encontrar el archivo o directorio. En cuanto a su
ffmpeg
no está formateado correctamente. ¿Puedes intentar una sola conversión y ver cómo va?0 votos
La conversión funcionó bien en un archivo .ogg en el directorio.
0 votos
En la muestra falta un carácter de espacio entre el nombre de entrada y el de salida.