LINUX.ORG.RU

flac + cue + shnsplit = error


0

1

Пытаюсь разбить flac при помощи cue файла, но получаю следующую ошибку:

shnsplit: error: m:ss.ff format can only be used with CD-quality files

Гугл выдает всего три страницы, причем на выбор либо дикие костыли, либо «запусти xxx под вайном».

Проблема специфическая, разбиваю не первый раз, но раньше такого не было. Cue на pastebin.com, на всякий случай.

Кто-нибудь с этим сталкивался? Что можно сделать?

★★★★★

Сначала надо flac деконвертировать. Т.е. :

flac -d file.flac

А вот уже из получившегося file.wav нарезать треки и кодировать в нужный формат.

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

Сначала надо flac деконвертировать. Т.е. :

Обычно shntools собраны с поддержкой flac и это не требуется...

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

А сам flac откуда взят? Какого-нибудь лога кодирования в комплекте не было?
Даже не знаю, как получить о нём исчерпывающую информацию, не получая файла целиком.
Может быть, ffprobe -show_format file.flac?

Похоже, проблема в том, что FLAC является 24-битным, для которого не выполняется правило 75 «кадров» в секунду. Или что-то вроде этого.

Попробуйте так:
sed -rn '/INDEX/{s/.* ([0-9]+):([0-9]+):([0-9]+).*/\1:\2/;p}' file.cue | shnsplit -o flac filename.flac
Смещения будут выставлены неточно (плюс-минус 1 секунда), но файл разобьётся. Для повышения точности нужно узнать частоту «кадров» в этом файле.

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

> Обычно shntools собраны с поддержкой flac и это не требуется...

Действительно сделал shntool -f — флак поддерживается.

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

Обычно shntools собраны с поддержкой flac и это не требуется...

Но я попробовал, не сработало.

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

ffprobe -show_format: http://pastebin.com/wubfFScN

Лога, к сожалению нету, оцифровку делал не я, но здесь может быть есть нужная информация. Я совсем не разбираюсь в этом.

Попробовал сделать как предложили вы, результат уже другой (запустил с флагом D - может быть debug информация будет полезной): http://pastebin.com/XPM2ebrF

shnsplit: error: split point 0 is not greater than previous split point 1845504000

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

А, ну конечно. В cue-файле описано 2 flac-файла. Разделите CUE на 2 файла, описывающих каждый по одному, чтобы скрипт мог правильно работать (можете не заморачиваться с правильностью, главное - строки с «INDEX 01 ...»).

А если верить описанию раздачи, «кадров» в секунду там 192:
724032000/(51+02*60+1*60*60)
192000.00000000000000000000

Таким образом,
1) Делим CUE пополам
2) Для каждого из файлов:
awk '/INDEX/{split($3,t,":"); printf t[1]":«t[2]»:%03d\n",t[3]*1000/192;}' file.cue | shnsplit -o flac file.flac

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

Мне кажется, что shntools конвертируют с промежуточным WAV всё равно. Потому что время разбивки большого flac на маленькие больше, чем кодирование маленьких flac в маленькие OGG.

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

Мне кажется, что shntools конвертируют с промежуточным WAV всё равно.

Естественно! Без декодирования в память (по сути - в PCM WAV без заголовков) нарезать FLAC проблематично =).

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

Виндоутилиты справляются. oggenc тоже справляется.

Справляются с нарезкой FLAC без декодирования?

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

oggenc тоже декодирует на лету.

[17:13:34][aitap@flyingteapot ~]> ldd $(which oggenc) | grep -i flac
libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0xb760f000)
[17:13:44][aitap@flyingteapot ~]>

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

Я сужу по времени нарезки. У shntools оно огромное. В описании программы сказано, что это конвертатор из FLAC в WAV и наоборот. Значит -o flac - это просто костыль.

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

Я сужу по времени нарезки. У shntools оно огромное.

С чем сравниваешь и где конкретные цифры?

В описании программы сказано, что это конвертатор из FLAC в WAV и наоборот.

В описании какой программы?

Значит -o flac - это просто костыль.

Ещё раз повторяю: ты без декодирования FLAC не нарежешь. Как и почти любой другой формат.

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

В описании программы в portage. Нарежу, ещё как. Одно дело - декодировать участок файла на лету в памяти, и сразу же его закодировать. Другое - декодировать весь файл в WAV, потерять тэги, и затем заново декодировать в FLAC. Тупость. Зачем при нарезке из большого FLAC маленьких вообще конвертировать?!

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

> А если верить описанию раздачи, «кадров» в секунду там 192
Вот насчёт этого я мог вполне наврать. Думаю, точнее будет делать вот так:
awk '/INDEX/{split($3,t,":"); printf t[1]":«t[2]»:%03d\n",t[3]*1000/75;}' file.cue | shnsplit -o flac file.flac

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

>> Одно дело - декодировать участок файла на лету в памяти, и сразу же его закодировать

Как oggenc.

Разве shnsplit так не поступает?
Во время процесса нарезания не заметно никакой задержки между подачей команды и началом записи файлов, то есть полного декодирования файла перед нарезанием не происходит.

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

А, ну конечно. В cue-файле описано 2 flac-файла.

Ведь в первом же посте скинул ссылку на cue файл :) Сам, конечно, дурак, мог бы догадаться.

Удачно разбил при помощи указанной вами ниже команды. Большущие спасибо за помощь! Я у вас в долгу :)

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

Всегда пожалуйста!
Не забудьте «отметить тему как решённую» (вверху страницы сразу под сообщением темы).

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