How do I use afconvert to convert all the files in

2019-03-08 11:58发布

I have a directory with about 50 wav files that I need to convert to caf, because AudioServicesCreateSystemSoundID() returns an error for some of them (but not all).

Here's an example of the command I've used successfully for a single file:

afconvert -f caff -d LEI16@44100 -c 1 whistle.wav whistle.caf

How do I do this quickly - not one-by-one for each file?

7条回答
男人必须洒脱
2楼-- · 2019-03-08 12:12
for file in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 "$file"; done

Hit the Return key directly after done.

Simple :)

查看更多
趁早两清
3楼-- · 2019-03-08 12:12

For the people who are using OSX and are a bit afraid of Terminal scripts I created a little application with Automator, this application converts the files you select.

Download here

查看更多
Animai°情兽
4楼-- · 2019-03-08 12:18

On Windows, use the %~ni syntax.

for %i in (*.wav) do afconvert -f caff -d LEI16@44100 -c 1 %i %~ni.caf
查看更多
Animai°情兽
5楼-- · 2019-03-08 12:24

Similar approach for bash: for i in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 $i ${i%.wav}.caf; done

查看更多
该账号已被封号
6楼-- · 2019-03-08 12:25

Python script on OSX. Default data format of the .caf is ima4. Default directory is '.'

Make a file called wav2caf.py, put it in your path, make it executable, fill it with:

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

Converts all .wav to .caf in current directory:

wav2caf.py

Converts all .wav to .caf in specified directory:

wav2caf.py -f Desktop/wavs/

Converts all .wav to .caf with data type 'aac ':

wav2caf.py -d 'aac '
查看更多
Fickle 薄情
7楼-- · 2019-03-08 12:33

found this:

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

Customize the aconvert options then save it as a text file called 'converttocaf.sh', place it in the directory of files you want to convert and run it from Terminal.

It works with files with spaces in their names.

查看更多
登录 后发表回答