2009-08-13 59 views
12

我有一個包含約50個wav文件的目錄,我需要將其轉換爲caf,因爲AudioServicesCreateSystemSoundID()會爲其中一些(但不是全部)返回錯誤。如何使用afconvert將目錄中的所有文件從wav轉換爲caf?

這裏是我已經成功地用於單個文件的命令的例子:

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

如何做到這一點很快 - 而不是一個接一個地爲每個文件?

+3

您應該看看其他答案。您爲Mac問題標記了Windows特定的答案。 – 2013-10-17 04:01:39

回答

9

在Windows上,使用%~ni語法。

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

%〜ni做什麼? – mahboudz 2009-09-02 05:29:40

+0

我看到它刪除了最後的文件擴展名。涼! – mahboudz 2009-09-02 05:35:13

+0

我試圖使用該命令,但它給了mi這個錯誤: -bash:在意外標記附近的語法錯誤'(' – 2010-01-12 15:02:35

5

發現這一點:

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

定製aconvert選項,然後將其保存爲名爲 'converttocaf.sh' 的文本文件,將其放置在目錄您要轉換並從終端運行它的文件。

它適用於名稱中帶有空格的文件。

+1

將它與Randall的答案和我自己的轉換設置的一些語法結合起來,它工作得很好!謝謝! – horseshoe7 2011-07-25 20:19:05

5

對於那些使用OSX並且有點害怕終端腳本的人,我使用Automator創建了一個小應用程序,此應用程序將轉換您選擇的文件。

下載here

+0

鏈接關閉... – 2016-06-09 05:11:25

+0

我剛剛更新了鏈接,現在可在以下位置獲取:https://dl.dropboxusercontent.com/u/135074/convert-to-caff.zip – Jankeesvw 2016-06-09 13:44:28

1

如果您正在處理包含在Linux上空格的文件名,請嘗試以下代碼:

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 
0

OSX上的Python腳本。 .caf的默認數據格式是ima4。默認目錄爲'.'

建立一個叫做wav2caf.py文件,把它在你的路徑,使其可執行,用填充:

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

所有的.wav轉換在當前目錄下的.caf:

wav2caf.py 

所有的.wav轉換在指定目錄下的.caf:

wav2caf.py -f Desktop/wavs/ 

將所有.wav轉換爲數據類型'aac'.caf:

wav2caf.py -d 'aac '