Подтвердить что ты не робот

Как использовать afconvert для преобразования всех файлов в каталог из wav в caf?

У меня есть каталог с около 50 wav файлами, которые мне нужно преобразовать в caf, потому что AudioServicesCreateSystemSoundID() возвращает ошибку для некоторых из них (но не всех).

Вот пример команды, которую я успешно использовал для одного файла:

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

Как это сделать быстро - не по одному для каждого файла?

4b9b3361

Ответ 1

В Windows используйте синтаксис %~ni.

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

Ответ 2

Аналогичный подход для bash: for i in *.wav; do afconvert -f caff -d [email protected] -c 1 $i ${i%.wav}.caf; done

Ответ 3

нашел это:

##
## 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", поместите его в каталог файлов, которые вы хотите конвертировать, и запустите его из терминала.

Он работает с файлами с пробелами в своих именах.

Ответ 4

Для людей, которые используют OSX и немного боятся сценариев терминалов, я создал небольшое приложение с Automator, это приложение преобразует выбранные вами файлы.

Загрузить здесь

Ответ 5

for file in *.wav; do afconvert -f caff -d [email protected] -c 1 "$file"; done

Нажмите клавишу возврата непосредственно после done.

Простой:)

Ответ 6

Если вы имеете дело с именами файлов, которые содержат пробелы в 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

Ответ 7

Python script в 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 '