Родной Flac .cue сплиттер
У меня есть несколько альбомов.Flac, которые я скопировал в один большой файл, чтобы сэкономить место (CD-диски без потерь составляют примерно 500 МБ каждый), теперь у меня больше места для хранения, и я хотел бы разбить их на оригинальные файлы.
Есть ли сплиттер Native.Flac /.cue для систем на основе Debian?
Я нашел некоторую информацию, но она либо старая, только для mp3 или с использованием вина, это не то, что я хочу.
Также я нашел скрипт Nautilus, но я не думаю, что он будет без потерь, также он выполняет только очень специфическую задачу, и я хотел бы некоторые параметры настройки, http://ubuntuforums.org/showthread.php?t=853794
Так может ли кто-нибудь предоставить сплиттер Flac .cue без потерь с нативной поддержкой и множеством вариантов конвертации?
ПОЖАЛУЙСТА, НЕТ ВИНА
Спасибо
8 ответов
Для начала нужно установить cuetools и shntool. Из типа терминала:
sudo apt install cuetools shntool flac
Чтобы разделить файл flac обратно на исходные файлы с помощью файла.cue:
cuebreakpoints '<cue file>' | shnsplit -o flac '<audio flac file>'
Вы можете перетащить файл cue и файл звукового флака в терминал, чтобы автоматически заполнить пути для '<cue file>'
а также '<audio flac file>'
, Когда вы запускаете команду, терминал будет показывать вам результаты каждого нового файла flac по мере его создания, по одному новому файлу за раз ("split-track01.flac" "split-track02.flac" ...), и затем остановитесь после того, как все новые файлы flac были созданы. Создание каждого нового файла flac занимает всего несколько секунд. Если ваш файл.cue является точным, результаты будут более точными и менее трудоемкими, чем если бы вы разделили файл flac вручную в Audacity.
Есть приложение под названием Flacon, которое делает именно это.
Установить:
sudo add-apt-repository ppa:flacon
sudo apt-get update
sudo apt-get install flacon
Мне нужно было разделить большой flac и установить имя файла и тег из файла cue, и это сработало для меня лучше всего:
- перейдите в папку с одной парой кия и flac
- введите это:
shnsplit -f *.cue -t "%n - %p - %t" -o "flac flac -s -8 -o %f -" *.flac
- удалить оригинальный файл flac
- пометить файлы с помощью:
cuetag *.cue *.flac
Пример вывода:
Splitting [Edvard Grieg - Complete Songs Vol.III.flac] (76:03.40) --> [25 - Edvard Grieg - Sighs, EG 134.flac] (2:43.08) : 100% OK
ссылка: CUE_Splitting
ОБНОВИТЬ
Я написал следующий скрипт для моего удобства. Чтобы использовать его - перейдите в каталог с одной парой совпадающих файлов ape и cue.
mkdir -p orig
mv *ape orig/.
shnsplit -f *.cue -t "%n - %p - %t" -o "flac flac -s -8 -o %f -" orig/*.ape
rm -f 00*
cuetag *.cue *.flac
#fix bad file names
find . -exec rename 's/[^\x00-\x7F]//g' "{}" \;
назовите этот скрипт как split_ape
, chmod +x
это и положить в какой-то каталог на вашем пути. Я сделал аналогичный скрипт для FLAC-файла в качестве источника, просто замените каждый ape
с flac
в этом сценарии.
Самый простой способ - использовать K3B.
1.- Откройте файл CUE в K3B. 2.- Выберите конвертировать треки в FLAC. 3.- Нажмите Старт.
Он не будет повторно преобразовывать дорожки, а только разделит их на дорожки в соответствии с файлом CUE. Он сохранит оригинальное название каждой дорожки, и для завершения "преобразования / разделения" потребуется секунда.
Вы можете разделить файл CUE на отдельные дорожки FLAC с помощью fmedia ( http://fmedia.firmdev.com/) с помощью одной команды:
fmedia YOUR_FILE.cue --out='$tracknumber. $artist - $title.flac'
С помощью этой команды вы разделите все дорожки из одного файла CUE на отдельные файлы FLAC, названные как "01. ARTIST - TITLE.flac". Обратите внимание, что выходные файлы будут иметь точно такое же качество звука и длительность дорожки, что и оригинал.
Или вы можете скопировать только одну дорожку из файла.cue:
fmedia YOUR_FILE.cue --out='$tracknumber. $artist - $title.flac' --track=7
Вы также можете перезаписать метаинформацию во время разделения, например:
fmedia YOUR_FILE.cue --out=mytrack.flac --meta='artist=COOL ARTIST'
fmedia имеет минимальные внешние зависимости (т. е. cuetools, libFLAC и т. д. НЕ требуется устанавливать в вашей системе), она работает на 64-битных системах на основе Debian, но не работает на 32-битных системах.
И для flac:
cat file.cue | shnsplit -o flac -t %n-%t file.flac
разбить файл flac и добавить к полученным файлам номер дорожки (%n) и название заголовка (%t)
Вот PHP-скрипт:
<?php
$s_cue = $argv[1];
$a_cue = file($s_cue);
$n_row = -1;
foreach ($a_cue as $s_row) {
$s_trim = trim($s_row);
$a_row = str_getcsv($s_trim, ' ');
if (preg_match('/^FILE\s/', $s_row) == 1) {
$s_file = $a_row[1];
}
if (preg_match('/^\s+TRACK\s/', $s_row) == 1) {
$n_row++;
$a_table[$n_row]['track'] = $a_row[1];
}
if (preg_match('/^\s+TITLE\s/', $s_row) == 1) {
$a_table[$n_row]['title'] = $a_row[1];
}
if (preg_match('/^\s+PERFORMER\s/', $s_row) == 1) {
$a_table[$n_row]['artist'] = $a_row[1];
}
if (preg_match('/^\s+INDEX\s/', $s_row) == 1) {
$s_dur = $a_row[2];
$a_frame = sscanf($s_dur, '%d:%d:%d', $n_min, $n_sec, $n_fra);
$n_index = $n_min * 60 + $n_sec + $n_fra / 75;
$a_table[$n_row]['ss'] = $n_index;
if ($n_row > 0) {
$a_table[$n_row - 1]['to'] = $n_index;
}
}
}
$a_table[$n_row]['to'] = 10 * 60 * 60;
foreach ($a_table as $m_row) {
$a_cmd = [
'ffmpeg',
'-i', $s_file,
'-ss', $m_row['ss'],
'-to', $m_row['to'],
'-metadata', 'artist=' . $m_row['artist'],
'-metadata', 'title=' . $m_row['title'],
'-metadata', 'track=' . $m_row['track'],
$m_row['track'] . ' ' . $m_row['title'] . '.m4a'
];
$a_esc = array_map('escapeshellarg', $a_cmd);
$s_esc = implode(' ', $a_esc);
system($s_esc);
}
Установите shntool
sudo apt-get install shntool
Если вы хотите автоматически сохранить имена файлов, вы можете просто использовать:
cat infile.cue | shnsplit -t "%n - %p - %t" infile.wav