LINUX.ORG.RU

Порезать flac на основе cue из консоли

 , ,


0

1

Такая проблема. Есть несколько альбомов — рипов с винила. Они в фомате FLAC, 1 файл (весь альбом) + cue, либо 2 файла (стороны А и B) + cue. Хочу порезать их нормально на треки.

Для CD (да и вообще для flac 16/44.1) помогает shnsplit, но здесь 24/192. shnsplit ругается, что форат 00:00:00 только для cd-качества. Пробовал в cue-файле заменить последнее двоеточие на точку и в конец добавить ноль (то есть, чтобы из 05:30:20 вышло 05:30.200), в этом случае shnsplit режет… Всё кроме последнего трека. Он пишет, что у него длина минус[огромное число], некоторое время висит на 0%, а потом выдаёт ошибку, в итоге получается порезано всё, но не хватает последнего трека. Такая хрень со всеми файлами 24/192.

Кто сталкивался, в чём может быть проблема? Или порекомендуйте, чем пользоваться для таких рипов вместо shnsplit. Вроде с этой задачей справляется audacity, но хотелось бы делать это из консоли.

★★★★★

Ответ на: комментарий от anonymous

bchunk?

Переконвертировал в wav, сделал

bchunk -w filename.wav filename.cue aaa

В результате получил 5 непонятных wav-файлов, в которых шипение, причём последний из них более часа длится. Такое чувство, что bchunk принял эту вафлю за 16/44.1

Думаю, bchunk тут точно не поможет.

Psych218 ★★★★★ ()

cuebreakpoints file.cue | sed s/$/0/ | shnsplit -o flac file.flac

anonymous ()

Любая виндоутилита под Wine, иначе - никак. Нативный shntool вместо того чтобы резать flac-файл на части конвертирует его в WAV с потерей тегов, которые кстати не нужно брать из CUE-файла - они есть внутри FLAC. Есть огромные команды, заставляющие shntool делать теги в названии файла и в файле, беря из из CUE, но это неправильно. Также промежуточный WAV можно закодировать любым кодеком, включая обратно во FLAC. Писал e-mail автору, получил ответ «It would be a nice feature, but currently I don't have any plans to add tagging support to shntool».

Даже oggenc умеет конвертировать FLAC в OGG без промежуточного WAV с сохранением тегов, и это занимает меньше времени, чем нарезание большого FLAC с помощью shntool. Поэтому - только виндоутилита.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Есть огромные команды, заставляющие shntool делать теги в названии файла и в файле, беря из из CUE, но это неправильно. Также промежуточный WAV можно закодировать любым кодеком, включая обратно во FLAC. Писал e-mail автору, получил ответ «It would be a nice feature, but currently I don't have any plans to add tagging support to shntool».

Бла-бла-бла. man cuetag

GotF ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Мне теги не нужны. Я их сам проставлю, или возьму из cue (в любом случае, они плохи что там, что там, надо самому править). Мне надо ПРОСТО порезать. Без wine обойтись можно — audacity. Но я хочу из консоли. Без разницы, напрямую, или через WAV.

Psych218 ★★★★★ ()
Ответ на: комментарий от Bod

А если cuebreakpoints filename.cue | shnsplit -o flac filename.flac

Пробовал же. Происходит то, что я описал в первом посте: последний треу выдаёт ошибку.

Psych218 ★★★★★ ()
Ответ на: комментарий от unfo

вот

По вашей ссылке shnsplit. Он работает хорошо для CD. Но для более высокого качества он отказывается работать с куями (надо переделать формат времени), а самое главное, выдаёт ошибку на последнем треке.

Алсо. Один альбом удалось таки порезать с помощью shnsplit! Понятия не имею, чем они отличаются, везде 24/192. В большинстве случаев на последнем треке ошибка, а тут нормально порезалось.

Psych218 ★★★★★ ()
Ответ на: комментарий от anonymous

cuebreakpoints file.cue | sed s/$/0/ | shnsplit -o flac file.flac

Я же говорю, ноль в конец я добавляю (это я понял), проблема в другом.

Вот:

% cuebreakpoints *.cue | sed s/$/0/ | shnsplit -o flac *.flac
Splitting [Pretty Maids - Future World [Japan 28-3P-811].flac] (266879977897:37) --> [split-track01.flac] (5:27.000) : 100% OK
Splitting [Pretty Maids - Future World [Japan 28-3P-811].flac] (266879977897:37) --> [split-track02.flac] (4:30.300) : 100% OK
Splitting [Pretty Maids - Future World [Japan 28-3P-811].flac] (266879977897:37) --> [split-track03.flac] (4:15.000) : 100% OK
Splitting [Pretty Maids - Future World [Japan 28-3P-811].flac] (266879977897:37) --> [split-track04.flac] (5:31.700) : 100% OK
Splitting [Pretty Maids - Future World [Japan 28-3P-811].flac] (266879977897:37) --> [split-track05.flac] (3:56.000) : 100% OK
Splitting [Pretty Maids - Future World [Japan 28-3P-811].flac] (266879977897:37) --> [split-track06.flac] (4:17.000) : 100% OK
Splitting [Pretty Maids - Future World [Japan 28-3P-811].flac] (266879977897:37) --> [split-track07.flac] (5:04.000) : 100% OK
Splitting [Pretty Maids - Future World [Japan 28-3P-811].flac] (266879977897:37) --> [split-track08.flac] (4:59.000) : 100% OK
Splitting [Pretty Maids - Future World [Japan 28-3P-811].flac] (266879977897:37) --> [split-track09.flac] (266879977859:37) :   0% ERROR
shnsplit: warning: error while transferring -4051895296 bytes of data
shnsplit: error: failed to split file

Думаю, проблема в том, что shnsplit неверно определяет продолжительность файла изначально. Вот это 266879977897:37 — что это? Флак не битый, такая хрень почти на всех альбомах (не могут они все битыми быть, учитывая, что с CD-качеством всё нормально).

Psych218 ★★★★★ ()
Ответ на: комментарий от post-factum

Но ведь по вашей ссылке снова тот же самый shnsplit. Большая часть скрипта всего лишь разбирается с тегами, а режется то так же (то есть, будет та же самая проблема). Для CD это работает, для более высокого качества — через раз. Причину я не пойму, потому не могу найти способа решить проблему.

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

Поясню. При этом все, кроме последнего, треки выходят нормальными, как по продолжительности, так и по качеству. То есть оно режет превосходно всё, кроме последнего трека. Последнего трека нет вообще, он отсутствует. Я так понимаю, shnsplit не может установить его продолжительность (все предыдущие треки кончаются в точке начала следующего, значит можно узнать общее время, а после последнего трека нет следующего). Отсюда вопрос: почему shnsplit может нормально узнать продолжительность flac 16/44.1, но не может узнать продолжительность flac 24/192, при том, что работать с этим форматом он в принципе может? Может ему надо как-то явно продолжительность указать?

Самое странное, что один альбом я смог порезать, и там такой проблемы не возникало (нули ко времени, конечно, добавить понадобилось).

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

Вот я вижу выше копипасту ошибки. А сколько в cue определено треков всего конкретно для этого случая?

post-factum ★★★★★ ()
Ответ на: комментарий от post-factum

А сколько в cue определено треков всего конкретно для этого случая?

Девать треков. Вот cue:

REM GENRE Hard Rock
REM DATE 1987
REM BAZAR_VINYLRIP
REM Epic/Sony Records, Japan
REM Produced By Eddie Kramer
REM 28-3P-811 
PERFORMER "Pretty Maids"
TITLE "Future World [Japan 28-3P-811]"
FILE "Pretty Maids - Future World [Japan 28-3P-811].flac" WAVE
  TRACK 01 AUDIO
    TITLE "Future World"
    PERFORMER "Pretty Maids"
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "We Came To Rock"
    PERFORMER "Pretty Maids"
    INDEX 01 05:27:00
  TRACK 03 AUDIO
    TITLE "Love Games"
    PERFORMER "Pretty Maids"
    INDEX 01 09:57:30
  TRACK 04 AUDIO
    TITLE "Yellow Rain"
    PERFORMER "Pretty Maids"
    INDEX 01 14:12:30
  TRACK 05 AUDIO
    TITLE "Loud'n'Proud"
    PERFORMER "Pretty Maids"
    INDEX 01 19:44:00
  TRACK 06 AUDIO
    TITLE "Rodeo"
    PERFORMER "Pretty Maids"
    INDEX 01 23:40:00
  TRACK 07 AUDIO
    TITLE "Needles In The Dark"
    PERFORMER "Pretty Maids"
    INDEX 01 27:57:00
 TRACK 08 AUDIO
    TITLE "Eye Of The Storm"
    PERFORMER "Pretty Maids"
    INDEX 01 33:01:00
 TRACK 09 AUDIO
    TITLE "Long Way To Go"
    PERFORMER "Pretty Maids"
    INDEX 01 38:00:00

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

Поэтому я и советую любую виндоутилиту. shntool - ужасная программа.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

я вообще советую виндовсмаксимальную

anonymous ()
Ответ на: комментарий от ZenitharChampion

Поэтому я и советую любую виндоутилиту. shntool - ужасная программа.

Зачем мне винда и её утилиты, если я могу сделать это в audacity нативном? Нет, если виндоутилиты умеют работать из консоли, тогда меня это, возможно устроит (хотя, хотелось бы разобраться таки, в чём проблема с shnsplit), но с гуем — спасибо не недо.

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

По вашей ссылке shnsplit. Он работает хорошо для CD. Но для более высокого качества он отказывается работать с куями (надо переделать формат времени), а самое главное, выдаёт ошибку на последнем треке.

Я с его помощи кучу ape+cue порезал высокого качества

unfo ★★★★★ ()
Ответ на: комментарий от post-factum

Говорят, перекодировать нужно.

Если честно, не понял, что и куда перекодировать нужно. Мне показалось, по ссылке другая ошибка. Перекодировать я попробовал из flac в wav, а потом уже резать, ровным счётом ничего не изменилось, точно такая же ошибка. Или имеется в виду что-то другое? Поясните, пожалуйста.

Psych218 ★★★★★ ()
Ответ на: комментарий от unfo

Я с его помощи кучу ape+cue порезал высокого качества

Какого имеенно высокого? 24/48 и 24/96 у меня тоже режутся прекрасно. Проблема именно с 24/192.

Psych218 ★★★★★ ()
Ответ на: комментарий от unfo

Именно вот этой строчкой

$ shntool split your_ape_file.ape -f cue_list_for_your_ape_file.cue -o flac -t "%n - %t"
unfo ★★★★★ ()
Ответ на: комментарий от unfo

Вот именно эта строчка и выдаёт вышеописаную ошибку, о чём и речь, собственно.

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

Не просто перекодировать, а ещё и передискретизировать. Вроде как именно в этом суть.

post-factum ★★★★★ ()
Ответ на: комментарий от unfo

Более того, такая строчка даже не будет работать, поскольку shntoot принимает тот формат записи времени, что принят в cue только для файлов CD-качества. Для всего, что выше, надо добавлять 0 в конце. Для 24/96 добавление нуля помогает. Для 24/192 в принципе тоже, но возникает вышеописанная ошибка.

Psych218 ★★★★★ ()
Ответ на: комментарий от post-factum

Не просто перекодировать, а ещё и передискретизировать. Вроде как именно в этом суть.

То есть, потерять качество? Офигенная рекомендация! Рекомандация поставить семёрочку и то адекватнее.

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

Добавить в cue:

TRACK 10 AUDIO

TITLE «Finita»

PERFORMER «Pretty Maids»

INDEX 01 ??:??:?? # время окончания предыдущего трека

anonymous ()
Ответ на: комментарий от anonymous

Анонимус читает мои мысли. Костыль, но сработало. Только что это сделал. Узнал с помощью soxi точную продолжительность флака, добавил «лишний» трек в конец, на нём (он 0.0 секунд по факту), конечно, выдало ошибку, но свои 9 треков я получил.

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

Куй там кривой. У shn* с хайрезом проблем, обычно, нет.

anonymous ()
Ответ на: комментарий от Psych218

То есть, потерять качество?

Лол. Просто лол.

anonymous ()

Про cuebreakpoints, cuetag, shnsplit рассказали, если еще более ленивый найди скриптик ape2mp3, он совсем простой.

aedeph_ ★★ ()
Ответ на: комментарий от anonymous

Куй там кривой. У shn* с хайрезом проблем, обычно, нет.

Куй прямой. Я его прилагал. Похоже, это баг в shnsplit, потому что если задать время окончания трека, то всё работает. Баг именно в том, что shnsplit неверно определяет продолжительность для 24/192 (видимо, это справедливо не для всех файлов, но для болшинства).

Psych218 ★★★★★ ()
Ответ на: комментарий от aedeph_

Про cuebreakpoints, cuetag, shnsplit рассказали, если еще более ленивый найди скриптик ape2mp3, он совсем простой.

Шутник, да?

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

Возможно, но сколько резал, не натыкался. Тем более, что 24/192 не имеют, ну просто, никакого смысла, особенно в доисторических винилах.

anonymous ()
Ответ на: комментарий от anonymous

Возможно, но сколько резал, не натыкался. Тем более, что 24/192 не имеют, ну просто, никакого смысла, особенно в доисторических винилах.

Спор о том, нужно ли столь высокое качество, или нет, я думаю, не уместен, у всех разная аппаратура, разные уши и т.д. Есть задача: порезать без перекодирования, вопрос, надо ли это — вторичный, главный вопрос, как это сделать.

Я нашёл способ (его и подсказывал анонимус) — подсунуть shnsplit продолжительность трека в качестве последнего breakpoint. Но баг тут на лицо, особенно учитывая, что проявляется это только на некоторых 24/192 (мне кажется, на тех, которые больше 2гб, но я не уверен, сложно выявить закономерность)

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218
shninfo Pretty\ Maids\ -\ Future\ World\ \[Japan\ 28-3P-811\].flac | grep Length
Length:                       266879977897:37

Вот конкретно в этом и есть проявление бага. Подобного порядка цифры выдаются почти для всех флаков 24/192.

Для сравнения флак 16/44.1 (CD):

% shninfo EMIT\ -\ Abortions.flac| grep Length
Length:                       63:15.48

Psych218 ★★★★★ ()

В Audacity мышкой выделяешь кусок и сохраняешь в нужном формате.

iZEN ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.