Come si usa afconvert per convertire tutti i file in una directory da WAV a Caf?
-
13-09-2019 - |
Domanda
Ho un elenco con circa 50 file wav che ho bisogno di convertire in caf, perché AudioServicesCreateSystemSoundID () restituisce un errore per alcuni di loro (ma non tutti).
Ecco un esempio del comando che ho usato con successo per un singolo file:
afconvert -f caff -d LEI16@44100 -c 1 whistle.wav whistle.caf
Come faccio a fare in fretta -? Non uno per uno per ogni file
Soluzione
In Windows, utilizzare la sintassi %~ni
.
for %i in (*.wav) do afconvert -f caff -d LEI16@44100 -c 1 %i %~ni.caf
Altri suggerimenti
approccio simile per bash: for i in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 $i ${i%.wav}.caf; done
ha trovato questo:
##
## 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 'support@ezone.com'
##
for f in *; do
if [ "$f" != "converttocaf.sh" ]
then
/usr/bin/afconvert -f caff -d LEI16 "$f"
echo "$f converted"
fi
done
Personalizza le opzioni aconvert quindi salvarlo come file di testo chiamato 'converttocaf.sh', posizionarlo nella directory di file che si desidera convertire ed eseguirlo dal Terminal.
Si lavora con i file con gli spazi nei loro nomi.
for file in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 "$file"; done
tocca il tasto INVIO direttamente dopo done
.
Semplice:)
Per le persone che sono con OSX e sono un po 'paura di script terminali ho creato una piccola applicazione con Automator, questa applicazione converte i file selezionati.
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 LEI16@44100 -c 1 $i ${i%.wav}.caf; done
script Python su OSX. formato dei dati di default del .caf
è ima4
. directory predefinita è '.'
Crea 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 tutte .wav .caf nella directory corrente:
wav2caf.py
Converte tutte .wav .caf nella directory specificata:
wav2caf.py -f Desktop/wavs/
Converte tutte .wav .caf con tipo di dati 'aac':
wav2caf.py -d 'aac '