2009-08-13 11 views
12

Mam katalog zawierający około 50 plików WAV, które muszę przekonwertować na caf, ponieważ AudioServicesCreateSystemSoundID() zwraca błąd dla niektórych z nich (ale nie wszystkich).Jak używać afconvert do konwertowania wszystkich plików z katalogu z WAV na caf?

Oto przykład polecenia używałem z powodzeniem na jednym pliku:

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

Jak to zrobić szybko - nie jeden po jednym dla każdego pliku?

+3

Powinieneś przyjrzeć się innym odpowiedziom. Użytkownik zaznaczył odpowiedź specyficzną dla systemu Windows dla pytania na Maca. –

Odpowiedz

9

W systemie Windows użyj składni %~ni.

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

Co robi program% ~ ni? – mahboudz

+0

Widzę, że usuwa ostatnie rozszerzenie pliku. Chłodny! – mahboudz

+0

Próbowałem użyć tego polecenia, ale podał mi ten błąd: -bash: błąd składni w pobliżu nieoczekiwanego tokena '(' –

5

znaleźć to:

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

Dostosuj opcje aconvert następnie zapisać go jako plik tekstowy o nazwie 'converttocaf.sh', należy umieścić go w katalogu plików, które chcesz przekonwertować i uruchomić z Terminal.

Działa z plikami zawierającymi spacje w swoich nazwach.

+1

w połączeniu z odrobiną składni z odpowiedzi Randall i moimi własnymi ustawieniami konwersji i zadziałało, dziękuję! – horseshoe7

5

Dla osób, które używają OSX i trochę boją się skryptów Terminal, stworzyłem małą aplikację z Automatorem, ta aplikacja konwertuje wybrane pliki.

Pobierz here

+0

link jest wyłączony ... –

+0

Właśnie zaktualizowałem link, jest teraz dostępny na: https://dl.dropboxusercontent.com/u/135074/convert-to-caff.zip – Jankeesvw

1

Jeśli masz do czynienia z nazwami plików, które zawierają spacje na Linux, spróbuj następujący kod:

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 

Hit klawisz Return bezpośrednio po done.

Proste :)

0

skrypt Pythona na OSX. Domyślny format danych .caf to ima4. domyślnym katalogiem jest '.'

Dodać plik o nazwie wav2caf.py, umieścić go na swojej drodze, sprawiają, że plik wykonywalny, napełnić go:

#!/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() 

konwertuje wszystkie .wav do .caf w bieżącym katalogu:

wav2caf.py 

konwertuje wszystkie .wav do .caf w określonym katalogu:

wav2caf.py -f Desktop/wavs/ 

Konwertuje wszystkie pliki .wav na .caf z typem danych "aac":

wav2caf.py -d 'aac ' 
Powiązane problemy