WAV
CDripping в Linux (конвертируем Audio CD в MP3)
Среда, 30 июня 2010 г.Рубрика: *NIX_*BSD сиcтемы -> В помощь сисадмину
Метки: Audio CD | cdparanoia | cdrip | debian | Debian GNU Linux | lame | MP3 | mp3 | Ubuntu | WAV
Просмотров: 24012
Подписаться на комментарии по RSS
В ответ на задаваемый мне вопрос о кодирования музыки с треков CD-диска в сжатый формат (mp3, ogg, aac, wma) поделюсь своим решением и рассмотрим еще несколько альтернативных вариантов.
1 Вариант для любителей консоли
Для начала устанавливаем один из лучших свободных кодировщиков -lame:
$ apt-get install lame
на данный момент у меня установлена версия LAME 32bits version 3.98.2
Проверяем установлена ли утилита с забавным названием cdparanoia (как правило она идет по умолчанию), если ее нет ставим:
$ apt-get install cdparanoia
Данная утилита обеспечивает полностью цифровое снятие информации треков с диска, без потерь и без использования аудио.
$ cdparanoia -V
cdparanoia III release 10.2 (September 11, 2008).
Для пущей убедительность смотрим что будем грабить, полезно (но не обязательно):
$ cdparanoia -Q
выводиться таблица cd-треков диска, включая продолжительность треков и общее время воспроизведения.
Table of contents (audio tracks only):
track length begin copy pre ch
===========================================================
1. 14641 [03:15.16] 17213 [03:49.38] OK no 2
2. 15195 [03:22.45] 31854 [07:04.54] OK no 2
3. 19026 [04:13.51] 47049 [10:27.24] OK no 2
Далее без сжатия снимаем треки с диска, получая файлы формата wav, самый простейший вариант:
- снятие треков отдельными файлами со всего диска:
$ cdparanoia -B
рассмотрим не которые параметры:
$ cdparanoia -BZ -S 24 2-10 /home/ceval/Музыка/cdrip
- B - записи каждого трека отдельным файлом.
- Z - не восстанавливать поврежденные аудиотрэки (царапины на диске и т.п.) в целях увеличения скорости работы, можно не указывать.
- S - скорость чтения (в данном случае 24), опцию можно не указывать.
- 2-10 - номер треков с 2-го по 10-й, если ни указывать, то выполниться для всего диска.
- /home/ceval/Музыка/cdrip - путь куда кидаем, если отпустить, то копируется в домашний корень..
Замечания: лично у меня без указания номеров треков по указанному пути ни захотела запускаться, поэтому посмотрел инфу по диску (писал ранее) и указал кол-во треков с первого по последний (1-16).
$ cdparanoia -BZ -S 24 1-16 /home/ceval/Музыка/cdrip/
cdparanoia III release 10.2 (September 11, 2008)
Attempting to set speed to 24x...
Ripping from sector 17213 (track 2 [0:00.00])
to sector 157666 (track 10 [3:04.19])
outputting to /home/ceval/Музыка/cdrip/track01.cdda.wav
(== PROGRESS == [ | 031853 00 ] == :^D * ==)
.....
outputting to /home/ceval/Музыка/cdrip/track08.cdda.wav
(== PROGRESS == [ | 047048 00 ] == :^D * ==)
.....
Теперь создаем mp3-файлы из наших снятых файлов. Для этого используем установленный кодировщик lame.
Вид запуска lame:
$ lame [options]
самый простейший вариант процесса преобразования:
$ lame track01.cdda.wav 1.mp3
где
track01.cdda.wav - файл, полученный после работы утилиты cdparanoia,
1.mp3 - файл, который мы создаем.
По умолчанию кодер lame кодирует файлы звука с постоянным битрейтом 128 kbps и частотой дискретизации 44,1 кГц.
Дополнительными опциями можно менять данные параметры, например можно использовать другой постоянный битрейт (режим CBR):
$ lame --preset cbr 192 track01.cdda.wav 1.mp3
В данном случае мы получим файл 1.mp3 с постоянным битрейтом 192 kbps
битрейт можно указать любой из данного ряда значений 32 40 48 56 64 80 96 112 128 160 192 224 256 320
Можно использовать переменный битрейт, например так (режим VBR):
$ lame --preset standard track01.cdda.wav 1.mp3
в результате чего получим файл с переменным битрейтом 170...210 kbps.
По мнению экспертов для большинства случаев оптимально применение пресета --preset standard, однако если у вас хороший слух и аппаратура, возможно оправданным будет использование пресета --preset extreme. Если вы хотите получить максимальное низкое сжатие файлов и готовы отказаться от лишней экономии дискового пространства, то используйте пресет --preset insane для получения файлов с постоянным битрейтом 320 kbps. Эксперты однако склоняются к мнению, что применение данного режима не оправдано не только по причине неэкономичности расходования дискового пространства, но и из-за некоторых свойств звука, проявляющихся при прослушивании, поскольку специальные режимы standard и extreme подгонялись под наиболее оптимальное звучание, учитывающее психоакустическую модель системы человек-звук. В целом именно эти режимы (standard и extreme) рекомендованы для использования с утилитой lame. Однако конечно в первую очередь самому пользователю предоставлен выбор разных режимов и ключей для нахождения им индивидуально наиболее приемлемого варианта исходя из особенностей своего слуха, аппаратуры, восприятия музыки и т.п.
При выборе режима необходимо учитывать на какой аппаратуре вы собираетесь воспроизводить музыку, поскольку не каждая аппаратура способна воспроизводить mp3 файлы любого битрейта. К тому же, например, некоторые образцы воспроизводящей техники устаревших образцов возможно не смогут понять режим переменного битрейта.
Режим medium вы можете попробовать с целью экономии емкости накопителя, для воспрооизведения с носимых плееров, однако на мой взгляд в данном случае полезно произвести кодирование и в режиме extreme, записав файлы на другой диск, на случай их воспроизведения на аппаратуре высокого класса.
Вывод команд c standard и extreme:
$ lame --preset standard track02.cdda.wav 2.mp3
LAME 3.98.2 32bits (http://www.mp3dev.org/)
CPU features: MMX (ASM used), SSE (ASM used), SSE2
Using polyphase lowpass filter, transition band: 18671 Hz - 19205 Hz
Encoding track02.cdda.wav to 2.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III VBR(q=2) qval=3
Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
7475/7475 (100%)| 0:12/ 0:12| 0:12/ 0:12| 16.111x| 0:00
32 [ 98] %****
40 [ 0]
48 [ 0]
56 [ 3] %
64 [ 1] %
80 [ 2] %
96 [ 11] %
112 [ 39] %*
128 [ 176] %*******
160 [1525] %%%%********************************************
192 [3306] %%%%%%******************************************
224 [1796] %%%%%%%%%%%%%***********************************
256 [ 443] %%%%%%***********
320 [ 75] %%**
------------------------------------------------------------
kbps LR MS % long switch short %
194.0 24.8 75.2 91.9 4.9 3.2
Writing LAME Tag...done
ReplayGain: -6.9dB
и
$ lame --preset extreme track04.cdda.wav 4.mp3
LAME 3.98.2 32bits (http://www.mp3dev.org/)
CPU features: MMX (ASM used), SSE (ASM used), SSE2
Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz
Encoding track04.cdda.wav to 4.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III VBR(q=0) qval=3
Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
9713/9713 (100%)| 0:14/ 0:14| 0:15/ 0:15| 17.296x| 0:00
32 [ 78] *****
40 [ 0]
48 [ 0]
56 [ 4] %
64 [ 9] %
80 [ 22] %%
96 [ 7] %
112 [ 7] %
128 [ 14] %
160 [ 229] %%%**********
192 [1391] %%%%%*************************************
224 [2626] %%%%%%%%%%********************************
256 [2635] %%%%%%%%%%%%%%%%%%%%%*********************
320 [2691] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%******
------------------------------------------------------
kbps LR MS % long switch short %
250.8 40.2 59.8 94.1 3.6 2.4
Writing LAME Tag...done
ReplayGain: -6.2dB
Что бы ни запускать по отдельности каждый трэк, использую, но запускать из папки где лежат файлы, кодируеться все wav-файлы в mp3 в данном каталоге:
$ find . -iname "*.wav" -exec lame --preset extreme '-q 0' '{}' ';'
так же можно использовать с указанием бит рейда:
$ find . -iname "*.wav" -exec lame '-b 320 -q 0' '{}' ';'
Конечно это все хорошо и познавательно, но можно автоматизировать весь процесс кодирования.
Для этого предлагаю следующий скрипт, создаем обыкновенный текстовый файл и помещаем в него следующие:
#!/bin/bash
cdparanoia -Q
echo "Введите номер с какого и по какой трек ?"
read Ft Lt
#Ft - First Track; Lt - Last Track
echo "Введите куда складировать mp3 ?"
read Dir
for i in `seq $Ft $Lt`
do
cdparanoia $i - | lame --preset extreme - $Dir$i.mp3
done
Пояснения по скрипту:
- сначало выводиться содержание CD-диска на экран
- вводим данные для переменной i для количества треков диска
- организуем цикл, выполняемый i количество раз, соответственно по одному разу для каждого трека.
- для того, что бы избавиться от записи промежуточных wav файлов примением следующие выражения:
cdparanoia $i - | lame --preset extreme - $Dir$i.mp3
Символы тире перед метасимволом | и после команды lame (указанный после пресета) указывают на то, что вывод работы утилиты cdparanoia должен осуществляться не в файл, как рассматривалось в предыдущих примерах, а в канал вывода stdout, а входными данными для утилиты lame должен быть канал ввода stdin. Кодирования получаемых файлов будет обработано с переменным битрейтом в границах 220-260 kbps, по надобности можно использовать
# --preset medium (режим VBR, 145...185 kbps)
# --preset standard (режим VBR, 170...210 kbps)
- вводим путь куда будем грабить, если путь будет постоянный можно указать явно
( .... | lame --preset extreme - /home/user/Музыка/i.mp3) и заремлить
# echo "Введите куда складировать mp3 ?"
# read Dir
Например наш созданный файл имеет имя cdrip_mp3.Расположение файла важно с точки зрения удобства работы. Если папка, в которой вы расположите скрипт, не попадет в описание переменной окружения $PATH, и при этом ваша консоль будет открыта в другом каталоге то при попытке запуска консоль даст сообщение о том, что сценарий не найден. Кроме того расположение файла в другом каталоге может быть связано с требуемым изменением прав на редактирование файла и папки, в которой он размещен. Учитывая, что при запуске консоли последняя как правило открывается с адресом домашнего каталога, удобно расположить файл именно в нем, т.е. в домашнем каталоге.
Для запуска скрипта необходимо открыть консоль (по умолчанию она открывается с адресом домашней папки) и выполнить команду:
$ bash cdrip_mp3
Если кодирование треков CD дисков в формат mp3 придется делать более-менее часто, то можно выполнить еще пару операций, которые упростят работу. Во первых, на рабочий стол можно вывести символическую ссылку (говоря языком windows это ярлык) на файл сценария. Во вторых, команде запуска сценария можно присвоить короткий и понятный псевдоним.
Для создания символической ссылки выполним команду:
$ ln -s /home/user/cdrip_mp3 /home/user/"Рабочий стол"/"Делаем mp3"
Так же можно сделать алиас(псевдоним команды) для быстрого запуска из консоли, в файл .bashrc и вписать следующую строку:
$ nano .bashrc
alias mp3='bash cdrip_mp3'
Сохраняем файл. Изменения должны вступить в силу при запуске командной оболочки bash.
Команда alias создает псевдоним команде bash cdrip_mp3 с именем mp3. В данном случае система запомнит, что вводу команды mp3 фактически будет соответствовать команда bash skript_mp3.Теперь для запуска сценария в консоли нужно будет ввести лишь имя псевдонима mp3 и нажать Enter.
При написании использовались материалы http://www.izcity.com/data/soft/article1855.htm