【问题标题】:How do I use afconvert to convert all the files in a directory from wav to caf?如何使用 afconvert 将目录中的所有文件从 wav 转换为 caf?
【发布时间】:2010-11-19 06:31:53
【问题描述】:

我有一个包含大约 50 个 wav 文件的目录,我需要将它们转换为 caf,因为 AudioServicesCreateSystemSoundID() 会为其中一些(但不是全部)返回错误。

这是我成功用于单个文件的命令示例:

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

我如何快速做到这一点——而不是一个一个地处理每个文件?

【问题讨论】:

  • 你应该看看其他答案。您为 Mac 问题标记了特定于 Windows 的答案。

标签: command-line audio wav caf afconvert


【解决方案1】:

bash 的类似方法:for i in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 $i ${i%.wav}.caf; done

【讨论】:

    【解决方案2】:

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

    for %i in (*.wav) do afconvert -f caff -d LEI16@44100 -c 1 %i %~ni.caf
    

    【讨论】:

    • 我明白了,它删除了最后一个文件扩展名。酷!
    • 我尝试使用该命令,但它给了我这个错误:-bash: syntax error near unexpected token `('
    • 那是因为这个特定的for 命令是针对 Windows 命令处理器的,而不是针对 bash *nix shell 的。
    • 为什么特定于 Windows 的答案对 Mac 问题标记为正确?它看起来与我无关。
    • "afconvert" 不在 Windows 上运行
    【解决方案3】:
    for file in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 "$file"; done
    

    done 之后直接按回车键。

    简单:)

    【讨论】:

      【解决方案4】:

      对于使用 OSX 并且有点害怕终端脚本的人,我用 Automator 创建了一个小应用程序,这个应用程序可以转换您选择的文件。

      下载here

      【讨论】:

      【解决方案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 '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
      

      自定义 afconvert 选项,然后将其保存为名为“converttocaf.sh”的文本文件,将其放在要转换的文件目录中并从终端运行。

      它适用于名称中带有空格的文件。

      【讨论】:

      • 将它与 Randall 的回答中的一些语法和我自己的转换设置相结合,效果很好!谢谢!
      【解决方案6】:

      如果您在 Linux 上处理包含空格的文件名,请尝试以下代码:

      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
      

      【讨论】:

        【解决方案7】:

        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 '
        

        【讨论】:

          猜你喜欢
          • 2023-03-27
          • 2010-09-30
          • 1970-01-01
          • 2015-03-31
          • 1970-01-01
          • 1970-01-01
          • 2013-10-07
          • 1970-01-01
          • 2012-12-09
          相关资源
          最近更新 更多