Параллельное преобразование всей аудиотеки

lc() { od="$1"; nd="$2"; of=$3; nf=$4; cp -rl "$od" "$nd"; parallel -0 "ffmpeg -i {1} -loglevel error -q:a 6 {1.}.{2} && { rm {1}; echo {1.}.{2}; }" :::: <(find "$nd" -type f -iname \*$of -print0) ::: "$nf"; }


Команда «lc()» – это пользовательский скрипт на Bash, который позволяет преобразовать всю аудиотеку в указанной директории в формат, заданный пользователем.

Аргументы, передаваемые команде, описывают следующее:
— «od» – исходная директория;
— «nd» – новая директория для сохранения преобразованных файлов;
— «of» – формат исходных файлов (например, mp3);
— «nf» – желаемый формат файла после преобразования (например, wav).

Сначала команда создает копию всей исходной директории в новую директорию с помощью «cp», затем используя утилиту «parallel», проходим по всем файлам формата «$of» в новой директории «$nd» и выполняем преобразование формата в формат «$nf» при помощи FFmpeg. После этого, исходные файлы удаляются, а новые, преобразованные файлы, переименовываются с добавлением расширения «$nf».

Альтернативами могут служить другие скрипты, использующие утилиты конвертации форматов (например, «sox»), но они могут не содержать таких возможностей, как параллельное выполнение заданий.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *