command-line audio wav caf afconvert
aquí

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í