command line - ¿Cómo uso afconvert para convertir todos los archivos en un directorio de wav a caf?
command-line audio (7)
Tengo un directorio con aproximadamente 50 archivos wav que necesito convertir a caf, porque AudioServicesCreateSystemSoundID () devuelve un error para algunos de ellos (pero no todos).
Aquí hay un ejemplo del comando que he usado con éxito para un solo archivo:
afconvert -f caff -d LEI16@44100 -c 1 whistle.wav whistle.caf
¿Cómo hago esto rápidamente, no uno por uno para cada archivo?
Un enfoque similar para bash: for i in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 $i ${i%.wav}.caf; done
for i in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 $i ${i%.wav}.caf; done
En Windows, use la sintaxis %~ni
.
for %i in (*.wav) do afconvert -f caff -d LEI16@44100 -c 1 %i %~ni.caf
encontró esto:
##
## Shell script to batch convert all files in a directory to caf sound format for iPhone
## Place this shell script a directory with sound files and run it: ''sh converttocaf.sh''
## Any comments to ''[email protected]''
##
for f in *; do
if [ "$f" != "converttocaf.sh" ]
then
/usr/bin/afconvert -f caff -d LEI16 "$f"
echo "$f converted"
fi
done
Personalice las opciones de aconvert luego guárdelas como un archivo de texto llamado ''converttocaf.sh'', colóquelo en el directorio de archivos que desea convertir y ejecútelo desde la Terminal.
Funciona con archivos con espacios en sus nombres.
Script de Python en OSX. El formato de datos predeterminado de .caf
es ima4
. El directorio predeterminado es ''.''
Cree un archivo llamado wav2caf.py
, póngalo en su ruta, wav2caf.py
ejecutable, llénelo con:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import os
import argparse
import glob
def main():
# handle command line args
parser = argparse.ArgumentParser(description=''A program that converts .wav to .caf files.'', formatter_class=argparse.RawTextHelpFormatter)
parser.add_help = True
parser.add_argument(''-f'', ''--folder'', dest=''folder'', type=str, default=''.'', help=''folder of files to convert'')
parser.add_argument(''-d'', ''--data'', dest=''data'', type=str, default=''ima4'', help=''data format of .caf'')
args = parser.parse_args()
# process files in folder
os.chdir(args.folder)
for filename in glob.glob("*.wav"):
name, ext = os.path.splitext(filename)
command = ''afconvert -f caff -d '' + args.data + '' '' + filename + '' '' + name + ''.caf''
os.system(command)
if __name__ == "__main__":
main()
Convierte todos los .wav a .caf en el directorio actual:
wav2caf.py
Convierte todos los .wav a .caf en el directorio especificado:
wav2caf.py -f Desktop/wavs/
Convierte todos los .wav a .caf con el tipo de datos ''aac'':
wav2caf.py -d ''aac ''
Si está tratando con nombres de archivos que contienen espacios en Linux, intente con el siguiente código:
SAVEIFS=$IFS
IFS=$(echo -en "/n/b"); for i in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 $i ${i%.wav}.caf; done
for file in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 "$file"; done
Presione la tecla Volver directamente después de done
.
Sencillo :)
Para las personas que usan OSX y le tienen un poco de miedo a las secuencias de comandos del Terminal, creé una pequeña aplicación con Automator, esta aplicación convierte los archivos que seleccionaste.
Descargue aquí