How do I use afconvert to convert all the files in a directory from wav to caf?

后端 未结 7 2098
无人共我
无人共我 2021-01-31 00:24

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).

Her

相关标签:
7条回答
  • 2021-01-31 00:48

    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 afconvert 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.

    0 讨论(0)
  • 2021-01-31 00:50

    If you are dealing with filenames that contain spaces on Linux, try the following code:

    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
    
    0 讨论(0)
  • 2021-01-31 00:51

    On Windows, use the %~ni syntax.

    for %i in (*.wav) do afconvert -f caff -d LEI16@44100 -c 1 %i %~ni.caf
    
    0 讨论(0)
  • 2021-01-31 01:01

    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 '
    
    0 讨论(0)
  • 2021-01-31 01:07

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

    0 讨论(0)
  • 2021-01-31 01:08

    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

    0 讨论(0)
提交回复
热议问题