2009-08-13 14 views
12

Ho una directory con circa 50 file wav che ho bisogno di convertire in caf, perché AudioServicesCreateSystemSoundID() restituisce un errore per alcuni di essi (ma non per tutti).Come posso usare afconvert per convertire tutti i file in una directory da wav a caf?

Ecco un esempio del comando che ho usato con successo per un singolo file:

afconvert -f caff -d [email protected] -c 1 whistle.wav whistle.caf 

Come faccio a fare in fretta - non uno per uno per ogni file?

+3

Si dovrebbero guardare le altre risposte. Hai contrassegnato una risposta specifica per Windows per una domanda Mac. –

risposta

9

Su Windows, utilizzare la sintassi %~ni.

for %i in (*.wav) do afconvert -f caff -d [email protected] -c 1 %i %~ni.caf 
+0

Che cosa fa% ~ ni? – mahboudz

+0

Vedo, rimuove l'ultima estensione del nome file. Freddo! – mahboudz

+0

Ho provato a usare quel comando ma mi ha dato questo errore: -bash: errore di sintassi vicino a un token imprevisto '(' –

33

approccio simile per bash: for i in *.wav; do afconvert -f caff -d [email protected] -c 1 $i ${i%.wav}.caf; done

5

pensano che questa:

## 
## 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 

personalizzare le opzioni aconvert quindi salvarlo come un file di testo chiamato 'converttocaf.sh', posizionarlo nella directory dei file che si desidera convertire ed eseguirlo dal terminale.

Funziona con i file con spazi nei loro nomi.

+1

combinato con un po 'di sintassi dalla risposta di Randall e le mie impostazioni di conversione e ha funzionato benissimo! Grazie! – horseshoe7

5

Per le persone che utilizzano OSX e hanno un po 'paura degli script Terminal, ho creato una piccola applicazione con Automator, questa applicazione converte i file selezionati.

Scarica here

+0

link is down ... –

+0

Ho appena aggiornato il link, è ora disponibile su: https://dl.dropboxusercontent.com/u/135074/convert-to-caff.zip – Jankeesvw

1

Se avete a che fare con nomi di file che contengono spazi su Linux, provare il seguente codice:

SAVEIFS=$IFS 
IFS=$(echo -en "\n\b"); for i in *.wav; do afconvert -f caff -d [email protected] -c 1 $i ${i%.wav}.caf; done 
4
for file in *.wav; do afconvert -f caff -d [email protected] -c 1 "$file"; done 

tocca il tasto INVIO direttamente dopo done.

Semplice :)

0

Script Python su OSX. Il formato dati predefinito di .caf è ima4. directory predefinita è '.'

Fai un file chiamato wav2caf.py, metterlo nel tuo percorso, renderlo eseguibile, riempirlo 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() 

converte tutti i .wav .caf nella directory corrente:

wav2caf.py 

converte tutti i .wav .caf nella directory specificata:

wav2caf.py -f Desktop/wavs/ 

Converte tutti i file .wav in .caf con il tipo di dati "aac":

wav2caf.py -d 'aac ' 
Problemi correlati