Как мне использовать afconvert для преобразования всех файлов в каталоге из wav в caf?
-
13-09-2019 - |
Вопрос
У меня есть каталог с примерно 50 файлами wav, которые мне нужно преобразовать в caf, поскольку AudioServicesCreateSystemSoundID() возвращает ошибку для некоторых из них (но не для всех).
Вот пример команды, которую я успешно использовал для одного файла:
afconvert -f caff -d LEI16@44100 -c 1 whistle.wav whistle.caf
Как мне сделать это быстро, а не по одному для каждого файла?
Решение
В Windows используйте %~ni
синтаксис.
for %i in (*.wav) do afconvert -f caff -d LEI16@44100 -c 1 %i %~ni.caf
Другие советы
Аналогичный подход для bash: for i in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 $i ${i%.wav}.caf; done
нашел это:
##
## 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
Настройте параметры преобразования, затем сохраните его как текстовый файл с именем «converttocaf.sh», поместите его в каталог файлов, которые вы хотите преобразовать, и запустите его из терминала.
Он работает с файлами с пробелами в именах.
for file in *.wav; do afconvert -f caff -d LEI16@44100 -c 1 "$file"; done
Нажмите клавишу Return сразу после done
.
Простой :)
Для людей, которые используют OSX и немного боятся сценариев терминала, я создал небольшое приложение с помощью Automator, оно преобразует выбранные вами файлы.
Скачать здесь
Если вы имеете дело с именами файлов, содержащими пробелы в 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
Скрипт Python для OSX.Формат данных по умолчанию .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 в .caf с типом данных «aac»:
wav2caf.py -d 'aac '