div.main {margin-left: 20pt; margin-right: 20pt} Тестируем бесплатные
MP3-энкодеры Дмитрий Шипилов
Все мы любим MP3-файлы - цифровая музыка основательно и надолго
вошла в мир любого пользователя персонального компьютера. Как ее слушать -
вопрос, ответ на который дают десятки бесплатных и несколько коммерческих
программ, доступных на просторах Паутины и способных проигрывать
музыкальные файлы самых различных форматов. Перед создателем же MP3-файлов
стоит более серьезный вопрос: где найти бесплатный кодировщик, результат
работы которого не бросал бы в дрожь, щадящий барабанные перепонки и
экономящий ваше драгоценное время. Как ни странно, но есть абсолютно
бесплатные разработки, по своему качеству и возможностям не намного
отстающие от аналогичных, коммерческих кодировщиков. Тестирование двух
подобных программ мы и проведем на этот раз.
В то время, как коммерческие кодеры в основном ориентированы на
пользователя Windows или редко MacOS, большинство бесплатных компрессоров
не привязаны к операционной системе, поскольку распространяются в исходных
кодах, и их выполняемые версии можно найти для любой ОС, будь то Windows,
OS/2, Linux или Mac. Подобная переносимость между системами накладывает
некоторый, вполне очевидный отпечаток на интерфейс программ - оригинальные
версии подобных компрессоров работают в консольном текстовом режиме (т. к.
консольный режим - это единственная возможность объединить интерфейсы
практически всех операционных систем, за исключением, пожалуй, только
MacOS). Сразу скажем, что для применения таких кодировщиков вам придется
поработать с клавиатурой. Те же, кто предпочитает создавать MP3 только при
помощи мышки, смогут воспользоваться не менее бесплатными "графическими
оболочками", работающими на "движках" этих кодировщиков. Тем не менее есть
несколько доводов за оригинальные, текстовые версии подобных программ для
создания MP3. Во-первых, программы сторонних разработчиков могут не
предусмотреть некоторые возможности изначального компрессора, посчитав их
необязательными или вовсе ненужными. Во-вторых, как правило, новые версии
этих программ выходят довольно часто (иногда даже раз в день) - разработка
и оптимизация программы ведется постоянно. Другие разработчики могут
просто не предоставить новой версии своей программы с обновленным
компрессором или даже закрыть проект. Не стоит забывать и об ошибках
разработчиков. Возможным следствием перехода к оконному интерфейсу может
стать снижение производительности "движка". Поэтому следует подумать над
возвращением к столь непривычной для современного пользователя командной
строке в консольном режиме.
В последнее время в области бесплатных MP3-кодировщиков наиболее четко
выделяются две разработки - Blade Encoder и Lame. На них мы и остановим
ваше внимание в данной статье.
Blade Encoder
Blade Encoder является одним из наиболее широко известных бесплатных
MP3-кодировщиков. В качестве исходного звука Blade может воспринимать файл
в звуковом формате WAV, AIFF или незакодированные звуковые данные RAW. В
оригинале эта программа является консольной, но все же минимум удобств для
оконного интерфейса она предоставляет. Для начала кодировки вам будет
необходимо мышкой перетащить незакодированный WAV-файл на пиктограмму
программы Blade Encoder, и кодировщик начнет свою работу с параметрами,
заданными "по умолчанию" (обычно это кодировка с битрейтом 128
Кбит/с).
Битрейт |
Битрейт (bitrate) — слово, пришедшее в
систему кодирования звука из терминов передачи данных. Битрейт
измеряется в килобитах в секунду (Кбит/с) и показывает объем
сжатия исходного звука. К примеру, если кодирование происходит
с битрейтом 128 Кбит/с, то это означает, что 1 с звука будет
занимать 128 Кбит или 16 Кбайт. Если закодировать звук с
битрейтом 32 Кбит/с, а скорость связи и передачи данных будет
33,6 — то звук может прослушиваться по мере его передачи по
сети. Чем выше битрейт, тем выше результирующее качество
сжатого звука и, соответственно, больше размер сжатого звука.
Стандарт MP3 позволяет осуществлять кодирование звука с
битрейтом от 8 до 320 Кбит/с. Для получения сжатого звука,
сравнимого и порой неотличимого от CD-качества, необходимо
использовать битрейты от 112 Кбит/с. Стандартом де-факто стал
битрейт 128 Кбит/с, на котором достигается оптимальное
соотношение качество/размер результирующего
MP3-файла. | |
Список возможностей Blade Encoder сравнительно невелик - поддержка
битрейта до 320 Кбит/с, создание монофайла из одного канала стереозвука,
поддержка незакодированных звуковых данных в качестве источника и работа
со стандартным вводом и выводом, а также использование конфигурационного
файла.
Если вы просто запустите Blade Encoder, то получите краткую справку по
данному кодировщику и список ключей. Чтобы повлиять на результат работы
программы, вам придется обратиться к командной строке. В качестве
параметров программы надо указать исходный файл, имя результирующего
MP3-файла и ключи-параметры кодирования. Blade Encoder способен
воспринимать несколько исходных звуковых файлов или даже маску файлов (т.
е. применение символов "*" или "?"), при этом можно указать свои параметры
сжатия для каждого звукового файла. Такая возможность позволяет запускать
программу в автоматическом режиме или работать в фоновом режиме.
При кодировании нескольких исходных файлов следует знать несколько
правил их записи в командной строке Blade Encoder. Сначала задается имя
исходного файла, а затем, по желанию, имя производимого MP3-файла. Если
имя последнего отсутствует, то результирующий файл получит то же имя, что
и исходный, но с расширением ".mp3". Следующая строка закодирует
последовательно два WAV-файла и создаст файлы track1.mp3 и
mymusic.mp3:
bladeenc track1.wav track2.wav
mymusic.mp3
| |
Параметры кодирования, которые были написаны сразу после имени
программы, считаются "глобальными" и будут применяться для всех
перечисленных файлов. После имени файла можно указать "локальные" ключи,
которые будут влиять только на данный файл. Например, следующая команда
создаст три MP3-файла. Первый и третий будут закодированы с битрейтом 160
Кбит/с и получат имена track1.mp3 и output.mp3, а второй, с именем
track2.mp3, будет закодирован с битрейтом 256 Кбит/с:
bladeenc -160 track1.wav track2.wav
-256 track3.wav output.mp3
| |
Как видите, все довольно просто.
Помимо этого Blade Encoder может использовать в качестве исходного
звукового файла или результирующего закодированного файла стандартный
входной и выходной потоки. Для Windows-систем подобная возможность особого
применения, скорее всего, не найдет, но вот в других системах
(Unix-подобных) это довольно часто применяется. Таким образом вы можете
осуществлять кодировку "на лету". Например, с помощью одной программы
считывать звук с компакт-диска (которая должна будет выдавать свой
результат на стандартный входной поток), а Blade Encoder будет кодировать
эти данные. Или результат кодирования будет подаваться на стандартный
выходной поток, а он, в свою очередь, будет передаваться по сети. Для
использования входного или выходного потока в качестве имени файла
потребуется ключевое слово stdin или stdout.
Программа Blade Encoder также поддерживает работу с конфигурационным
файлом. Все, что в нем записано, будет добавлено в командную строку при
каждом вызове кодировщика. В файле можно использовать комментарии, которые
должны начинаться с символа решетки "#". Например, если ваш
конфигурационный файл выглядит следующим образом:
# конфигурация Blade Encoder -256 -quit
-outdir=c:Mpegs | |
то вызов команды
закодирует звук в файл c:Mpegstrack1.mp3 с битрейтом 256 (а не 128,
как стоит по умолчанию).
В Windows и BeOS конфигурационный файл должен называться bladeenc.cfg и
размещаться в том же каталоге, что и сама программа. В Unix-подобных
системах данный файл должен иметь имя .bladeencrc и размещаться в домашнем
каталоге пользователя.
Процесс кодировки можно прервать, нажав комбинацию клавиш Ctrl+С (в
системах Windows и BeOS) или Esc (в UNIX). Если вам необходимо освободить
ресурсы процессора и приостановить кодирование, то необходимо нажать Esc
(в Windows и BeOS) или Ctrl+Z (в UNIX).
В итоге можно сказать, что Blade Encoder предоставляет несколько
ограниченный набор возможностей (например, не реализован алгоритм
использования переменного битрейта, VBR) по кодированию MP3, но для
простых и несложных работ он подходит наилучшим образом.
Командная строка Blade
Encoder |
В общем виде командная строка для Blade
Encoder будет выглядеть следующим образом: bladeenc
[параметры] имя_wave [имя_mp3 [параметры]] … Список ключей
перечислен ниже.
-[битрейт] или -br [битрейт]
Определяет битрейт для MP3. Если он отсутствует, то по
умолчанию принимается битрейт 128 Кбит/с для входных
стереофайлов и 64 Кбит/с для моно. Blade Encoder
поддерживает следующие значения битрейта: 32, 40, 48, 56,
64, 80, 96, 112, 128, 160, 192, 224, 256 и 320.
-crc
Добавляет контрольную сумму в каждый кадр
закодированного MP3-звука. Подобная возможность формата
используется для контроля над ошибками при передаче
MP3-файлов в реальном времени (например, в
Internet-радио). Применение этого ключа несколько снижает
качество MP3, т. к. эти данные контрольной суммы должны
быть размещены в каждом кадре, размер которого
определяется битрейтом. Обычно эта опция не
требуется.
-delete или -del
Удалить исходный файл после окончания кодирования.
Помните, что файл будет удален даже при неудачном
результате кодирования (например, если не хватит места для
записи MP3-файла).
-mono или -dm
Преобразует входной файл в монозвук перед
кодированием. Никак не влияет, если входной файл уже
моно.
-leftmono или -lm
Использует только левый канал исходного файла и
кодирует результат в моно MP3.
-rightmono или -rm
Использует только правый канал исходного файла и
кодирует результат в моно MP3.
-swap
Меняет местами левый и правый каналы исходного файла
перед компрессией.
-quit или -q
По завершению кодирования осуществляет автоматический
выход из программы. Без этого ключа Blade Encoder просит
нажать клавишу "Ввод".
-outdir=[путь]
Устанавливает каталог, в который будут записаны
результирующие MP3-файлы.
-rawbits=[число_бит]
-rawfreq=[частота]
-rawmono
-rawstereo
-rawsigned
-rawunsigned
-rawbyteorder=[BIG/LITTLE]
-rawchanells=[1/2]
Эти ключи требуются, если в качестве входного файла
используются незакодированные, "чистые" звуковые данные
(так называемый RAW-формат). Они задают параметры этих
звуковых данных, например, моно- или стереозвук.
-private или -p
-copyright или -c
-copy
Следующие ключи задают некоторую информацию о
закодированной композиции. Практически никакая программа
пока не использует эти данные, и они не влияют ни на
размер, ни на скорость кодирования. Ключ private означает
частный характер исходной записи. Ключ copyright сообщает
о композиции, защищенной авторским правом. Ключ copy
информирует о том, что данный файл является копией
музыкальной композиции.
-quiet
С этим ключом Blade Encoder не будет выводить
информацию о процессе кодирования на экран.
-nocfg
Игнорировать данные конфигурационного файла.
-refresh=[число]
Устанавливает частоту обновления информации о
состоянии процесса кодирования. Чем больше это число, тем
реже Blade Encoder будет выводить информацию, что заставит
кодировщик работать чуть быстрее.
-progress=[вид]
Задает вид индикатора, который будет сообщать о
процессе
кодирования. | |
Lame
Сравнивать возможности Lame и Blade Encoder - все равно что
сопоставлять слабенький компьютер образца середины 90-х гг. и новейший
суперкомпьютер. "Каковы же особенности и возможности Lame? - спросите вы.-
Что позволяет мне утверждать подобное?"
Основой кодировщика является его психоакустическая модель, которая
определяет процесс и метод кодирования. В Lame используется собственная
наработка под названием GPSYCHO, а в остальных бесплатных кодировщиках -
разработки ISO, которые были реализованы только в качестве
демонстрационной версии. В коммерческих программах применяются, в
основном, собственные методики, лучшей из которых принято считать модель,
созданную Fraunhofer IIS в программе MP3 Producer. В GPSYCHO реализован и
переменный битрейт (VBR, variable bitrate), и технология mid/side stereo,
дающая иногда лучшие результаты, нежели технология объединенного стерео
(joint stereo) и другие разработки, такие, как ABR (average bitrate),
улучшенная квантизация и т. п.
Сущность технологии переменного битрейта (или VBR) заключается в
увеличении битрейта в тех местах, где требуется более точная передача
звука, и соответственно в его уменьшении, когда человеческое ухо менее
чувствительно к потерям сжатия. При работе VBR указывается наименьший и
наибольший битрейт, в рамках которых он будет изменяться при компрессии
звука. Битрейт для какого-то определенного участка звука выбирается,
естественно, самой программой автоматически. MP3-файл, закодированный с
переменным битрейтом, занимает, как правило, меньше места и обладает
лучшим качеством, в сравнении с той же композицией, сжатой с постоянным
битрейтом.
Технология mid/side stereo дополняет систему объединенного стерео
(joint stereo). Без их применения MP3-компрессор использует классическую
схему стереосжатия, когда левый и правый канал звука сжимаются раздельно.
При joint stereo кодируется общий поток звука для обоих каналов, а затем
отдельно записываются различия в звучании правых и левых каналов. Обычно
эти отличия минимальны, что позволяет достигать меньшего размера
результирующего сжатого файла при сохранении высокого качества. Модель
GPSYCHO добавляет технологию mid/side stereo, при которой анализируются не
левый и правый канал, а средний и боковой. Для среднего канала отводится
больше места, чем для бокового. Если звук имеет небольшие стереовариации,
то в боковом канале будет появляться незначительное количество информации
и использование mid/side stereo приводит к серьезным выигрышам в объеме
сжатия. В противном случае, когда правый и левый канал сильно различаются,
в боковом канале аудиопотока будет содержаться большое количество данных,
и результат применения mid/side stereo проявится в виде шумов как в левом,
так и в правом канале.
Кодировщик Lame в
действии.
Что наиболее приятно в Lame, так это обилие настроек. Нечасто подобные
программы предоставляют возможности по изменению параметров кодирования,
как правило, разрешается устанавливать лишь битрейт и частоту
дискретизации. В этом отношении Lame дает сто очков вперед практически
любому MP3-кодировщику: разнообразные настройки и установки, применение
фильтров верхних и нижних частот, изменение частоты дискретизации входного
файла и многое другое. Lame может служить и декодером MP3-файла,
преобразовывая его в стандартный звуковой файл WAV PCM. Источником звука
для компрессора может служить как несжатая аудиозапись, так и уже готовый
MP3. Результат применения психоакустической модели можно проигнорировать и
использовать стандартный алгоритм абсолютного порога слышимости, ATH
(absolute threshold of hearing), который будет осуществлять сжатие на
основе нечувствительных для человеческого уха звуках. Этот алгоритм
обоснован только при высоких битрейтах или для проверки ATH.
Чтобы облегчить нам жизнь, разработчики Lame определили заготовленные
параметры сжатия. Вам достаточно лишь выбрать качество - phone, voice, fm,
tape, hifi, cd или studio, и результат компрессии будет сопоставим с
указанным вариантом. Еще одним упрощением является установка желаемого
коэффициента сжатия аудиозаписи вместо самостоятельного подбора битрейта.
Кодировщик предоставляет специальную возможность работы с записанным
голосом. Применение специальной опции голосового сжатия заставит
кодировщик особым образом обрабатывать входной файл, результатом чего
могут стать весьма позитивные показатели сжатия записанного голоса. Ну и,
наконец, есть варианты high quality и fast сжатия, которые ориентированы
на высококачественное, но медленное и, наоборот, низкокачественное, но
быстрое кодирование аудиопотока.
Я думаю, несложно было заметить, что данный кодер по всем статьям
превосходит своего "оппонента". Впрочем, окончательные выводы мы будем
делать после проверки программ в работе.
Командная строка Lame |
Формат командной строки Lame выглядит
следующим образом: lame параметры входной_файл
выходной_файл Описание ключей (параметров):
-a
Преобразует исходный звуковой файл в моно.
-athonly
Игнорировать результат применения психоакустической
модели и осуществлять сжатие на основе абсолютного порога
слышимости (ATH).
-b битрейт
Кодировать с указанным битрейтом. Если применяется
технология VBR, то данное значение - минимальный
битрейт.
-B битрейт
Устанавливает максимальный битрейт при использовании
технологии VBR.
-decode
Функционирование Lame в качестве декодера MP3. В этом
режиме Lame на входе получает MP3-файл и он преобразует
его в несжатый WAV-файл.
-f
Работа в "быстром режиме". Качество хуже, но зато
получаем выигрыш в скорости кодирования.
-h
Работа в режиме "высокого качества". При этом
используется более сложная формула анализа звуковой волны.
Результат будет более качественный, но скорость снизится
примерно на 20% в сравнении с обычным режимом
кодирования.
-highpass уровень
-highpass-width ширина
Устанавливает положение и ширину высокочастотного
фильтра.
-lowpass уровень
-lowpass-width ширина
Устанавливает положение и ширину низкочастотного
фильтра.
-m s/j/f/m
Выбор стереорежима: "s" - обыкновенное стерео, "j" -
объединенное стерео на избираемых кодировщиком кадрах MP3,
"f" - объединенное стерео на всех кадрах MP3 (быстрее, чем
простое joint stereo), "m" - моно.
-mp3input
Входной файл является MP3-файлом. Эта опция
понадобится для преобразования уже готовых
MP3-файлов.
-preset phone/voice/fm/tape/hifi/cd/studio
Использовать заранее заданные параметры кодирования.
Качество определяется на основании выбранного режима - CD,
кассета, радио и т. п.
-resample частота
Производит преобразование входного звука на другую
частоту дискретизации.
-V 0..9
Указывает качество использования VBR. "0" - наилучшее
качество. По умолчанию - "4".
-voice
Применение специального режима сжатия записи голоса,
который даст преимущество при сжатии файлов с низким
битрейтом. | |
Тестирование
Для начала сравним работу бесплатных кодировщиков с их коммерческим
аналогом и исходным звуковым файлом. Тестирование специально проводилось
на маломощной машине (Pentium-100), чтобы сразу проверить и такую
ситуацию. Понятно, что на более современном компьютере операция
кодирования будет происходить быстрее. В качестве оригинала был взят
52-секундный звуковой файл, а кодировался он с качеством 128 кбит/с, 44
кГц. Результаты кодирования приведены в соответствующей таблице.
|
|
Спектральная характеристика исходного
звукового файла. |
Спектральная характеристика после применения
Lame. |
|
|
Спектральная характеристика после применения
Fraunhofer ISS. |
Спектральная характеристика после применения Blade
Encoder. |
|
|
Графическое представление амплитуды
исходного звукового файла. |
Графическое представление амплитуды в
результате применения Lame. |
|
|
Графическое представление амплитуды в
результате применения Fraunhofer ISS. |
Графическое представление амплитуды в
результате применения Blade
Encoder. |
Кодировщик |
Время сжатия |
Размер файла, байт |
Незакодированный файл |
00:52 |
8 494 492 |
Blade Encoder |
03:49 |
770 717 |
Lame |
02:00 |
771 006 |
Fraunhofer mp3 producer |
04:42 |
769
436 | |
Таким образом, самым "скоростным" оказался кодировщик Lame, но и его же
результирующий размер файла является самым большим. О "монстре" Fraunhofer
mp3 producer можно сказать словами пословицы "тише едешь - дальше будешь":
хоть он и показал самые высокое время, но размер результирующего
закодированного файла самый небольшой. С другой стороны, разница в 1
Кбайт, наверное, не так уж и существенна, правда?
Теперь рассмотрим на приведенных картинках качество кодирования.
Как видно, у всех кодировщиков начинаются провалы на высоких частотах
от 13 кГц. Результат работы Blade Encoder имеет наиболее глубокие провалы
в высоких частотах по сравнению с результатами других кодировщиков.
Наиболее близким к оригиналу является, как и следовало ожидать, вариант
кодировщика Fraunhofer. И совсем чуть-чуть от него отстает Lame.
Выводы
Lame достаточно быстр, результат кодирования по размеру у него хоть и
самый большой, но по качеству достаточно близок к эталонному кодировщику
от Fraunhofer. Blade Encoder представляет собой нечто среднее и
"любительское", если вам необходимо просто и со средним качеством
закодировать файл - данный кодировщик подходит для этого больше всего. Как
утверждает сам разработчик Blade Encoder: "Используйте кодировщик
Fraunhofer для файлов с низким битрейтом, а Blade - с высоким". Lame
помимо хорошего качества и скорости предоставляет обширные возможности по
настройке и использованию новых технологий в кодировании, таких, как VBR
или joint stereo. При этом он бесплатен, а его разработка и
усовершенствование ведется постоянно. Так что победитель, я полагаю,
очевиден. Если у вас еще нет этого кодера, обязательно скачайте его. Как
нам кажется, Lame способен заменить даже весьма дорогие коммерческие
программы, так что не мешкайте. Кто знает, вдруг разработчики передумают и
решат сделать его платным?!
|