среда, 11 июня 2008 г.

Linux. Сказ про образы Audio дисков

Оригинал.

Наткнулся в сундуке на audio сокровища. Решил наконец разгрести, а поскольку все оказалось не совсем просто, законспектировал.



Intro
Большинство Audio CD дисков, которые доступны в сети или киосках Союзпечати, делаются в виде большого WAV файла, который является копией всех треков и CUE файла, в котором описыается порядок композиций, их название и прочая информация. WAV сжимается каким-нибудь lossless кодеком, а потом все закручивается архиватором а один архив. В принципе удобно и разумно (хотя, как мне думается, потрековая разбивка была бы удобнее), но иногда нужно не просто прописать CD и сделать копию Audio CD, с которго все было сграблено, а, например пережать все потреково в MP3. Рассказ о том, как это сделать одним из наиболее простых способов.
Что будем юзать?
С распаковкой архива проблем нет, ZIP/RAR отлично распаковываются соответствующими прогами.
Дополнительно ставим:
  • cuetools, набор для работы с CUE/TOC файлами, берем тут
  • shntool, нарезалка треков, понимает помимо WAV, другие lossless форматы, забираем отсюда
Установка обычная (./configure; make && make install).
Теперь lossless кодеки.
Сейчас популярны три кодека, Monkey Audio (.APE файлы), FLAC (.FLAC файлы) и WavPack (.WV файлы).
Monkey Audio
Наиболее широко использующийся. Жмет на 5-7% лучше, чем FLAC, но и ресурсов жрет изрядно, распаковка/запаковка в 6-9 раз медленнее, чем у FLAC. Лицензия мутная, официально поддерживается только win32 платформа. Некий китайский программист сделал UNIX port и даже выложил на SourceForge, но скачать оттуда ничего не получается (будем надеяться что временно). Я откопал порт через FTP search и после доработки напильником собрал бинари:
Оба файла слинкованы статически для Linux/i386.
FLAC (Free Lossless Audio Codec)
Самый разумный, на мой взгляд. Кроссплатформенный, внятная лицензия, отличная скорость работы. В среднем размер WAV уменьшается вдвое. Качаем тут. Сборка обычная, за исключением того, что может быть ругань на ассемблер. Я не стал ставить новый asm, а просто запретил asm оптимизацию (./configure --disable-asm-optimizations).
WavPack
Еще один lossless кодек, зачем его использовать - не знаю. Жмет хуже, чем Monkey Audio, работает тоже неспешно, может хранить CUE внутри архива, гнездится тут. Сборка стандартная, на всякий случай бинари:
Ну вот, архив развернут, внутри находится .CUE файл и какой-то .APE (или .FLAC). При упаковке WavPack'ом внутри может быть только один файл вроде file-bla-bla.wv.iso.wv. Нужно вначале распаковать этот файл обратно в WAV. В случае WV нужно еще и вытащить CUE.
APE
$ mac file.ape file.wav -d
FLAC
$ flac -d file.flac
После распаковки в каталоге появится файл file.wav.
WavPack
$ wvunpack -cc Queen_1973_At_The_Beeb_eac_wv_iso_cue_log_covers_tags.wv.iso.wv

WVUNPACK  Hybrid Lossless Audio Decompressor  Linux Version 4.41.0
Copyright (c) 1998 - 2007 Conifer Software.  All Rights Reserved.

extracted cuesheet file Queen_1973_At_The_Beeb_eac_wv_iso_cue_log_covers_tags.wv.iso.cue
restored Queen_1973_At_The_Beeb_eac_wv_iso_cue_log_covers_tags.wv.iso.wav in 175.82 secs (lossless, 41.09%)
В этом примере после распаковки в каталоге появятся WAV и CUE файлы.
Далее WAV нужно нарезать на треки, мой пример:
$ cuebreakpoints Pink_Floyd_Animals.cue | shnsplit -o wav Pink_Floyd_Animals.wav

Splitting [Pink_Floyd_Animals.wav] (41:40.05) --> [split-track01.wav] (1:25.35) : 100% OK
Splitting [Pink_Floyd_Animals.wav] (41:40.05) --> [split-track02.wav] (17:04.10) : 100% OK
Splitting [Pink_Floyd_Animals.wav] (41:40.05) --> [split-track03.wav] (11:21.60) : 100% OK
Splitting [Pink_Floyd_Animals.wav] (41:40.05) --> [split-track04.wav] (10:23.68) : 100% OK
Splitting [Pink_Floyd_Animals.wav] (41:40.05) --> [split-track05.wav] (1:24.57) : 100% OK
Теперь хорошей идеей будет переименовать все эти split-track*.wav в соответствии с названиями треков в CUE. Ставим вот такой скрипт. Кроме собственно переименования он дополнительно перекодирует русские имена в латиницу.
Запускаем:
$ cue_rename.plx Pink_Floyd_Animals.cue

Found information for file 'Pink_Floyd_Animals.wav'
  Track 01 -> '01_Pigs_On_The_Wing__Part_One'
  Track 02 -> '02_Dogs'
  Track 03 -> '03_Pigs__Three_Different_Ones'
  Track 04 -> '04_Sheep'
  Track 05 -> '05_Pigs_On_The_Wing__Part_Two'

Renaming ...
  split-track01.wav --> 01_Pigs_On_The_Wing__Part_One.wav
  split-track02.wav --> 02_Dogs.wav
  split-track03.wav --> 03_Pigs__Three_Different_Ones.wav
  split-track04.wav --> 04_Sheep.wav
  split-track05.wav --> 05_Pigs_On_The_Wing__Part_Two.wav

*** Done! ***
В результате получаем набор WAV'ов с нормальными именами.
Перегонку в MP3/OGG оставляю в качестве домашнего задания.
Успехов!

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