Как перекодировать файлы FLAC с помощью flac2all в Linux

flac2all — это простой инструмент, который позволяет преобразовывать качественные файлы FLAC в почти любой современный аудиоформат. В отличие от ffmpeg, этот инструмент автоматизирует процесс сортировки, тегирования и кодирования вашего аудио FLAC. flac2all легко установить и использовать. Узнайте, как пользоваться этой универсальной программой, которая может служить интерфейсом для всех ваших потребностей в транскодировании аудио.
Содержание
- Почему использовать flac2all
- Установка flac2all
- Использование flac2all для транскодирования аудио
- Транскодирование в несколько форматов
- Создание пользовательских заданий по транскодированию
- Создание кластера транскодирования flac2all
- Настройка сетевого монтирования
- Запуск кластера flac2all
- Часто задаваемые вопросы
Также читайте: 4 способа увеличить время работы от батареи вашего ноутбука с Linux
Почему использовать flac2all
В своей основе flac2all является как оберткой, так и программой для планирования. Он берет список файлов FLAC и использует различные кодеки для постановки в очередь и управления процессом транскодирования.
Одним из преимуществ этого подхода является то, что flac2all не зависит от одного кодировщика, что означает, что вы можете легко адаптировать программу к любому новому формату, который вы захотите использовать. Например, вы можете установить пользовательский кодировщик Fraunhofer FDK AAC наряду с обычным AAC.

Наконец, flac2all также сохраняет структуру папок вашей коллекции FLAC, так что вам не нужно заново создавать каталог вашего архива при использовании этой программы. Эти функции делают flac2all удобным инструментом, если вы ищете быстрый и простой способ воссоздать вашу коллекцию FLAC в другом формате.
Также читайте: Различия между Su, Sudo Su, Sudo -s и Sudo -i
Установка flac2all
Перед установкой flac2all важно получить все его зависимости, чтобы гарантировать, что после установки не возникнет конфликтов:
sudo apt install python3 flac python3-pip python3-zmq python3-notcurses lame opus-tools
Следующее, что нужно сделать, это скачать flac2all через pip, специальный менеджер пакетов для Python, который вы можете использовать для установки дополнительного программного обеспечения. Выполните следующую команду, чтобы использовать pip:
pip3 install--user flac2allЭто установит flac2all в “локальную” директорию текущего пользователя. Таким образом, если вы находитесь в системе с несколькими пользователями, другие пользователи не смогут запустить программу.

Чтобы запустить flac2all, добавьте вашу “локальную” директорию в переменную PATH вашего компьютера, добавив следующую строку кода в ваш файл “.bash_profile”:
PATH=$PATH:/home/$USER/.local/bin/
export PATHНаконец, перезагрузите или выйдите из текущей сессии, чтобы применить новые настройки, после чего вы можете выполнить flac2all -h, чтобы подтвердить, что программа установлена правильно.

Использование flac2all для транскодирования аудио
Разработчик flac2all спроектировал программу так, чтобы она была как можно проще. Например, синтаксис для транскодирования директории FLAC в один формат выглядит так:
flac2all mp3 -o ./output ./royalty-free- Первый элемент после “flac2all” указывает на формат, в который вы хотите сделать транскодирование. В этом примере я преобразую свою папку FLAC в MP3.
- Второй элемент содержит параметры для текущей работы по транскодированию. Здесь опция
-oуказывает flac2all отправить все MP3 файлы в папку “output”. - Наконец, третий элемент указывает исходную папку для ваших файлов FLAC. В моем случае это моя папка “royalty-free”.

Также читайте: Как изменить размер и оптимизировать изображения из терминала Linux
Транскодирование в несколько форматов
Вы также можете использовать flac2all для транскодирования файлов в несколько форматов параллельно, что может быть полезно, если вы хотите перенести свой архив на проигрыватели с разными требованиями к форматам.
Например, я могу выполнить следующую команду, чтобы транскодировать свою папку “royalty-free” в MP3 и Opus:
flac2all mp3,opus -o ./output ./royalty-freeОбратите внимание, что транскодирование в несколько форматов займет больше времени, чем транскодирование в один формат, потому что flac2all будет кодировать каждый файл в вашей директории для каждого формата, который вы указали. В моем случае, транскодирование MP3 и AAC займет в два раза дольше, чем только транскодирование MP3.

Создание пользовательских заданий по транскодированию
Помимо создания простых транскодов, возможно изменить поведение кодировщиков с помощью flac2all, что особенно полезно, если вы хотите, чтобы копия вашего архива имела определенное качество аудио. Посмотрите на следующую команду, например.
flac2all mp3 --lame-options='b 320' -o ./output ./royalty-freeЭта команда говорит программе использовать кодировщик LAME MP3, чтобы транскодировать мою папку “royalty-free” на постоянную битрейт 320k.

Вы также можете создавать пользовательские задания для многопоточного транскодирования. Например, следующая команда говорит flac2all создать пользовательское транскодирование с MP3 и Opus:
flac2all mp3,opus --opus-options='downmix-mono' --lame-options='b 320' -o ./output ./royalty-free
Создание кластера транскодирования flac2all
Хотя вы можете использовать flac2all на одном компьютере, также возможно распределить программу по нескольким системам — практическое решение для ускорения процесса транскодирования. Убедитесь, что у вас есть следующие ресурсы:
- Две или более машины, которые могут напрямую соединяться друг с другом
- NAS, к которому вы можете получить доступ со всех машин, поскольку процесс flac2all — мастер, только инструктирует своих клиентских рабочих обработать существующие данные
- Надежное сетевое соединение между главным процессом и его клиентскими рабочими
Зная эти факторы, этот учебник сосредоточится на создании небольшого кластера flac2all между двумя машинами Ubuntu 22.04.
Также читайте: Как настроить и использовать SSH в Linux
Настройка сетевого монтирования
Создайте сетевое хранилище, чтобы начать. Для этого я собираюсь использовать SSHFS, так как это просто в использовании и доступно почти во всех дистрибутивах Linux.
Для начала установите SSHFS на всех машинах, которые вы собираетесь использовать:
sudo apt install ssh sshfs
Следующим шагом создайте папку, в которую будет монтироваться SSHFS. Я создам папку “royalty-free” в домашней директории своей рабочей машины:
mkdir /home/$USER/royalty-free
Теперь смонтируйте директорию “royalty-free” на каждую из ваших рабочих машин с помощью следующей команды:
sshfs -o allow_other,default_permissions [email protected]:/home/$USER/royalty-free /home/$USER/royalty-free
Запуск кластера flac2all
Теперь вы можете запустить кластер транскодирования, запустив мастер-процесс и добавив оба флага -m и -C к flac2all.
Например, выполните эту команду на вашем основном компьютере, чтобы создать мастер-процесс:
flac2all lame,aac -m -C --lame-options='b 320' -o /home/$USER/output /home/$USER/royalty-free
В отличие от обычного flac2all, создание мастер-процесса не запустит сессию транскодирования. Чтобы транскодировать файлы, вам также нужно подключить рабочих к мастер-процессу, выполнив следующую команду на ваших рабочих машинах:
flac2all_worker 192.168.68.10После завершения клиент рабочий создаст безголовый процесс, который подключается к основной программе. После этого flac2all начнет немедленно, как только найдет несколько рабочих на ожидании.

Также читайте: Как скачать и настроить DaVinci Resolve в Linux
Часто задаваемые вопросы
flac2all не завершает работу после обработки моих аудиофайлов. Как я могу исправить эту проблему?
Это происходит каждый раз, когда возникает конфликт между flac2all и его зависимостями Python. Исправьте это, обновив вашу установку, чтобы отразить любые изменения между flac2all и его зависимостями. Выполните pip install --user --upgrade flac2all, чтобы обновить flac2all.
flac2all выдает ошибку “FileNotFound”. Моя установка сломана?
Нет! Эта проблема возникает, когда программа не может обнаружить кодировщик для формата, в который вы хотите транскодировать.
Например, выполнение flac2all opus […] без кодировщика Opus приведет к ошибке “FileNotFound”. Вы можете исправить проблему, установив ffmpeg. Это универсальная программа, которая также установит большинство распространенных аудио кодировщиков. Выполните sudo apt install ffmpeg, чтобы добавить ffmpeg в вашу систему.
Рабочий процесс не смог найти никаких медиа в моем монтировании SSHFS. flac2all сломан?
Нет. Это обычно происходит из-за несоответствия директорий между мастер-процессом и его рабочими. Чтобы убедиться, что кластер транскодирования работает, проверьте, что пути к файлам на каждой машине одинаковые, выполнив pwd как в вашей папке медиа, так и в корне вашего монтирования SSHFS.