14 июня 2010 г.

И снова о разрезании lossless-аудио (ape, flac, wv, wav) по файлу cue

Ранее я выкладывал перевод одной заметки о том, как разрезать lossless-аудио на отдельные треки. Однако, в комментариях мне подсказали более простой способ.


Для этого понадибится утилита shntool (в Debian и Ubuntu живёт в одноимённом пакете). Вообще, это настоящий швейцарский армейский нож в области работы со звуковыми файлами (в том числе и сжатыми), в чём можно убедиться, открыв соответствующий man:
man shntool
Вот перечень некоторых команд, которые эта утилита поддерживает:
  • len — отображает продолжительность, размер и свойства звуковых данных
  • join — объединяет несколько файлов в один
  • split — разбивает звуковой файл на несколько отдельных файлов
  • cue — генерирует файл CUE или список точек разбиения по набору файлов
  • conv — преобразует из одного формата в другой
  • trim — удаляет тишину по краям записи
Список поддерживаемых форматов тоже немал: wav (RIFF WAVE), aiff (Audio Interchange File Format), shn (Shorten low complexity waveform coder), flac (Free Lossless Audio Codec), ape (Monkey's Audio Compressor), ofr (OptimFROG Lossless WAVE), lpac (Lossless Predictive Audio Compression), wv (WavPack Hybrid Lossless Audio Compression), alac (Apple Lossless Audio Codec) и другие, менее распространённые.

Естественно, для поддержки форматов нужно доустанавливать соответствующие утилиты. Для flac, ape и wv:
sudo apt-get install flac wavpack monkeys-audio
Собственно команда для разрезания будет иметь вид:
Эта команда не только разобьёт исходный flac-файл, но и переименует каждый трек в соответствии с форматом:

Исполнитель (Альбом) - Номер - Название

Естественно, можно указать и другой формат, задав свою строку и используя постановочные символы %p, %a, %n, %t.

Если файлы Music.flac и Music.cue расположены в одной папке, имеют одинаковое имя, как в данном случае и других подобных файлов нет, то можно использовать следующий скрипт:
#!/bin/bash
f=`ls *.cue`
f=${f%.cue}
shntool split -f "$f.cue" -o flac "$f.flac" -t "%p (%a) - %n - %t"
Я его назвал split_flac и поместил в ~/bin. Чтобы им воспользоваться достаточно зайти в директорию с разрезаемыми файлами и выполнить всего одну команду:
split_flac
Аналогичный скрипт можно написать и для формата APE. А можно сделать один большой интеллектуальный скрипт, если не лень.

Чтобы не было закорючек в именах, нужно следить, чтобы файл cue был в той же кодировке, что и текущая локаль (обычно, UTF-8).

Единственный минус — теги будут пустыми, но их можно заполнить командой cuetag или какой-то специализированной утилитой наподобие EasyTAG.

Комментариев нет:

Отправить комментарий