Неоднократно от разных аудиофилов с хорошей аудиоаппаратурой слышал, что mp3 сжатие сильно ухудшает качество звука.
Однажды я решил попробовать скачать музыку в современном свободном формате со сжатием без потерь, чтобы попробовать оценить разницу между mp3 и flac на моей аппаратуре и моим слухом.
Накачал для примера несколько компакт-дисков, сжатых в этом формате. На слух разницы не услышал. Скачал ещё один компакт-диск, чтобы сравнить с альбомом в формате mp3 с битрейтом 192 килобита, который у меня уже был. Можно было поступить проще - просто пересжать один из компакт-дисков в mp3 и сравнить.
В итоге я опять не услышал никакой разницы. В мою голову закрались смутные сомнения:
Так или иначе, но если я не заметил разницы, смысла в хранении альбомов размером с пол-гигабайта я не увидел, а потому решил пересжать flac в mp3.
Из подручных средств под виндой у меня не оказалось перекодировщика, который бы умел декодировать flac (проигрыватель foobar2000 не в счёт). Кроме того, на домашнем компьютере почти не было места для пересжатия, потому я решил пересжать треки прямо на домашнем сервачке под Debian.
Для этого я использовал пакеты flac, lame и немножко shell-скриптинга.
Для начала установим пакет flac:
# aptitude install flac
Теперь нужно установить пакет lame. Этот пакет не включен в основную поставку Debian по лицензионным соображениям, поэтому воспользуемся сторонним сервером.
Для начала добавим новые источники в файл /etc/apt/sources.list:
# deb http://ftp.debian-unofficial.org/debian etch main contrib non-free restricted # deb-src http://ftp.debian-unofficial.org/debian etch main contrib non-free restricted
Теперь добавим GPG-ключи:
# wget http://ftp-master.debian-unofficial.org/other/openpgp/archive-key-2006.asc -O - | apt-key add - wget http://ftp-master.debian-unofficial.org/other/openpgp/archive-key-2007.asc -O - | apt-key add -
Теперь обновим список пакетов:
# aptitude update
И установим пакет lame:
# aptitude install lame
Для потоковой обработки всех файлов с расширением .flac в текущем каталоге я наваял следующий shell-скрипт mlame.sh:
#!/bin/sh for flac in *.flac; do mpeg=`echo $flac | cut -f1 -d.`.mp3 flac -d -c "$flac" | lame --cbr -b 192 - "$mpeg" done
Этот скрипт находит в текущем каталоге файлы с расширением flac. В цикле для каждого такого файла создаёт имя целевого файла mp3, затем настраивает команды flac и lame для совместной работы в конвейере.
Сжатие осуществляется в mp3-файл с постоянным битрейтом 192 килобита.
Если есть предложения по оптимизации скрипта, буду рад выслушать. К сожалению мне не удалось обойтись без cat, поскольку в именах файлов были пробелы, поэтому скрипты воспринимали имя файла как несколько не связанных между собой аргументов.
Ссылки по теме: