Аудиоформаты MP3 и FLAC: используем грамотно

В этом посте я хочу рассказать о том, как получать наилучшие результаты при сжатии музыкального материала в форматы FLAC и MP3. В эпоху массового распространения стриминговых аудио- и видеосервисов эта тема может показаться малоактуальной, однако, как показывает практика, это не так. Во-первых, не все хотят быть зависимыми от сторонних ресурсов, которые в любой момент могут повести себя как угодно — от введения разнообразных ограничений на доступ к контенту до полного его удаления. Во-вторых, в мире есть множество мест, где интернет работает медленно, печально и с перерывами на обед. В-третьих, качество звучания при онлайн-прослушивании обычно вполне приемлемо для большинства пользователей, но искушенных слухачей с хорошей аппаратурой оно может ввергнуть в тоску. Учитывая все вышесказанное, можно полагать, что тема самостоятельного сжатия аудиозаписей для их хранения и прослушивания оффлайн останется актуальной ещё достаточно долго.

Так как в статье будут рассматриваться консольные приложения Windows, то предполагается, что читатель знаком с основами работы в командной строке под этой операционной системой.

Базовые понятия

PCM (pulse code modulation), она же ИКМ (импульсно-кодовая модуляция) — способ представления аналогового сигнала в цифровом виде. Работает это так: на вход устройства под названием АЦП (аналого-цифровой преобразователь) подаются электрические колебания, представляющие из себя аналоговый звуковой сигнал. АЦП с определенной частотой замеряет уровень этого сигнала и передаёт полученные значения наружу, где они сохраняются. Таким образом формируется массив данных, представляющий из себя последовательность значений амплитуды исходного сигнала. Описанный процесс называется «оцифровка». Основной проблемой хранения PCM-данных в «голом» виде является довольно большой их объём, поэтому для более рационального использования места на носителе используются различные алгоритмы сжатия цифрового звука.

WAV — аудиоформат, стандартно использующийся для хранения несжатого PCM-аудио в Windows. Формат может содержать в себе и сжатые данные, но на практике подобное встречается крайне редко и, можно сказать, является моветоном. Проигрывание WAV-файлов требует минимум ресурсов системы, так как никакой дополнительной обработки информации для этого не требуется. Сохранение материала в этом формате почти всегда является промежуточным шагом при обработке звука в аудиоредакторах, CD-грабберах и другом подобном ПО. Битрейт несжатого WAV с параметрами 16 бит/44.1 кГц/стерео — 1411 кбит/с, размер файла пятиминутной записи в таком виде — около 52 МБ.

Кодер (или «энкодер» от английского «encoder») — программное обеспечение, предназначенное для преобразования WAV в какой-либо иной формат с целью уменьшения объёма хранимых данных.

Декодер — программное либо аппаратное обеспечение, служащее для воспроизведения сжатых в соответствующий формат файлов или преобразования их в неcжатый вид.

Lossy — общее название семейства аудиоформатов, в которых используется сжатие данных с потерями. Типичными представителями семейства являются MP3, AAC, WMA, Ogg Vorbis. Главная особенность lossy-форматов заключается в том, что при сжатии материала в любой из них значительная часть исходной звуковой информации теряется безвозвратно и не может быть восстановлена впоследствии никаким способом. За счёт этого достигается высокая степень компрессии, при этом на слух потери малозаметны или вообще незаметны, так как отбрасываются только некритичные для человеческого восприятия данные.

Lossless — общее название семейства аудиоформатов, в которых используется сжатие данных без потерь. Типичные представители семейства: FLAC, ALAC, APE (Monkey’s Audio), WavPack. В отличие от lossy-форматов, здесь никакая информация при сжатии не теряется, всё происходит примерно как в обычных архиваторах. Платой за полную сохранность данных является значительно меньшая по сравнению с lossy степень компрессии.

MP3 (MPEG-1 Layer 3) — исторически первый и самый распространённый формат сжатия с потерями. Несмотря на то, что в силу возраста MP3 на сегодняшний день не блещет эффективностью компрессии, его популярность остаётся весьма высокой по причине универсальности — проигрывать данный формат умеет любой утюг. При этом, если применяются адекватные кодер и декодер, качество звучания MP3 находится на очень достойном уровне. Сочетание этих двух факторов делает использование формата оправданным и сейчас. Коэффициент сжатия MP3 при сохранении высокого качества звучания — 6-9 раз. Средний битрейт такого MP3 с параметрами 16 бит/44.1 кГц/стерео — 150-240 кбит/с, размер файла пятиминутной записи в этом виде — 6-9 МБ.

FLAC (Free Lossless Audio Codec) — самый популярный на текущий момент формат сжатия аудио без потерь. Если для какого-либо ПО или оборудования заявлена поддержка lossless, почти наверняка данное ПО/оборудование умеет проигрывать FLAC. Формат является стандартом де-факто в среде любителей качественного звука. Коэффициент сжатия FLAC — 1.3-2.5 раза. Битрейт FLAC с параметрами 16 бит/44.1 кГц/стерео — 550-1100 кбит/с, размер файла пятиминутной записи в таком виде — 20-40 МБ.

Общие вопросы

Можно ли пережимать материал из lossless в lossy — например, из FLAC в MP3?

Можно и часто нужно. Например, если вы хотите слушать музыку в «походных» условиях с портативного устройства без аудиофильских замашек, а исходный материал у вас хранится в lossless-формате, то перед переносом на портатив имеет смысл сконвертировать нужные треки в lossy. Так вы уменьшите размер файлов и сможете сохранить на мобильном носителе значительно больше музыки. Деградации звука от такого преобразования вы, скорее всего, не почувствуете совсем.

 

Можно ли пережимать материал из lossy в lossless — например, из MP3 во FLAC?

Делать этого не следует ни в коем случае, так как качество звучания лучше не станет, а размер файлов вырастет в разы. Более того, такой псевдо-lossless, впоследствии попавший к другим людям, будет вводить их в заблуждение. Когда вы скачиваете lossless из сети, для определения и отбраковки подобных фейков используйте программу auCDtect.

 

Можно ли пережимать материал из lossy в lossy — например, MP3 с меньшим битрейтом в MP3 с бо́льшим битрейтом?

Если вы хотите получить от подобного пережатия улучшение качества, то нет, так делать не нужно — звучание не только не улучшится, а даже слегка ухудшится. Если вашей целью является уменьшение размера файла и качество звучания не очень критично, то пережатие из более высокого в более низкий битрейт вполне оправданно.

 

Какой из lossless-форматов лучше по качеству звучания — FLAC, APE, WavPack?

Как уже говорилось ранее, lossless-форматы сжимают данные без потерь. Это означает, что в плане качества звучания все они абсолютно идентичны. Выбирать lossless-формат для использования в каждом конкретном случае следует, ориентируясь исключительно на его совместимость с ПО/оборудованием и на ваши личные предпочтения.

 

Влияют ли выбор кодера и его настройки на качество звучания при сжатии материала в MP3?

Существенно влияют. Про то, какой кодер и с какими настройками обеспечивает оптимальный результат, я расскажу ниже.

 

Влияет ли декодер на качество звучания при прослушивании материала в MP3?

Может влиять. Например, некоторые старые декодеры заметно искажают звук при проигрывании MP3, что может создать ложное впечатление об ущербности этого формата как такового. Для проигрывания музыки на ПК следует пользоваться проверенными программами-плеерами, желательно последних версий. Я использую foobar2000, который всем и рекомендую — у него проблем с качеством воспроизведения как MP3, так и других поддерживаемых форматов нет.

 

Влияют ли настройки кодера на качество звучания при сжатии материала во FLAC? Какую степень сжатия лучше выбрать?

Настройки FLAC-кодера на качество звучания не влияют совсем. От них могут зависеть только размер получаемых файлов и время, затраченное на сжатие, да и то незначительно. Поэтому чаще всего я не заморачиваюсь и кодирую во FLAC с настройками по умолчанию, что советую делать и вам. В редких случаях, когда требуется получить файлы минимального размера и приходится экономить каждый байт, имеет смысл увеличить степень сжатия до максимального значения.

 

Влияет ли декодер на качество звучания при прослушивании материала во FLAC?

Не влияет. Исходные аудиоданные при воспроизведении восстанавливаются с точностью до бита.

Кодирование и декодирование MP3 при помощи LAME

Как уже говорилось выше, в случае с MP3 качество звучания итоговых файлов напрямую зависит от выбора кодера и его настроек при сжатии. На сегодняшний день наилучшие результаты для данного формата даёт кодер LAME. Оригинальный сайт проекта выглядит несколько запутанно, поэтому сразу дам ссылку на файлы. Из архива нам нужен файл lame.exe. Открываем командную строку.

Для получения краткой справки по использованию LAME наберите lame --help (информация будет выведена на экран) или lame --help > usage.txt (информация будет выведена в файл usage.txt). Для получения подробной справки замените --help на --longhelp.

Перейдём непосредственно к функционалу сжатия. Следует ли указывать битрейт и другие настройки компрессии по отдельности? Нет, это совершенно не обязательно, разработчики сделали бо́льшую часть работы за нас, максимально упростив использование кодера. В LAME заложен набор пресетов (предустановок), позволяющих пользователю получать отличный результат при минимуме технических знаний. Почти все пресеты используют режим VBR (Variable Bit Rate, переменный битрейт), что даёт оптимальное соотношение качества звучания и размера файла. Справка по пресетам вызывается командой lame --preset help. Рассмотрим наиболее актуальные из предустановок.

 

Пресет standard. Описание из встроенной справки:

Этот пресет должен быть «прозрачен» для большинства людей на большей части музыки, обладая достаточно высоким качеством.

Средний битрейт при использовании standard составляет 170-210 кбит/с, срез ВЧ начинается примерно с 18.7 кГц. Рекомендую использовать данный пресет как режим по умолчанию, он является наиболее сбалансированным по сочетанию характеристик.

Кодирование WAV в MP3 с данным пресетом:

lame --preset standard infile.wav outfile.mp3, где infile.wav — имя исходного WAV-файла, outfile.mp3 — имя получаемого MP3-файла (последнее можно не указывать).

 

Пресет extreme. Описание из встроенной справки:

Если вы обладаете крайне хорошим слухом и таким же оборудованием, этот пресет даст чуть более высокое качество, чем standard.

Средний битрейт при использовании extreme составляет 220-260 кбит/с, ВЧ-фильтр не задействуется. Рекомендую использовать данный пресет в тех случаях, когда требуется получить MP3 с очень высоким качеством звучания. При прослушивании музыки на среднестатистическом оборудовании этот пресет по сравнению со standard обычно не даёт ничего, кроме увеличения размера файла.

Кодирование WAV в MP3 с данным пресетом:

lame --preset extreme infile.wav outfile.mp3

 

Пресет insane. В отличие от предыдущих пресетов, использующих VBR, этот использует режим с постоянным битрейтом 320 кбит/с. Описание из встроенной справки:

Этот пресет будет перебором для большинства людей в большей части ситуаций, но, если вам необходимо получить наивысшее качество без оглядки на размер файла, то вперёд.

Использовать insane я не рекомендую в силу его практической бессмысленности. Если вас мучают приступы перфекционизма, используйте не MP3 с заоблачными настройками, а какой-нибудь из lossless-форматов. Например, FLAC.

 

Декодирование MP3 в WAV:

lame --decode infile.mp3 outfile.wav

Кодирование и декодирование FLAC

Рассмотрим сжатие файлов кодером FLAC, скачать который можно здесь. Для работы нам нужен файл flac.exe. Если запустить его без параметров, будет выдана краткая справка по использованию кодера. Для получения подробной справки наберите flac --help (информация будет выведена на экран) или flac --help > usage.txt (информация будет выведена в файл usage.txt).

 

Кодирование WAV во FLAC со степенью сжатия по умолчанию (5):

flac infile.wav

 

Кодирование WAV во FLAC с указанной степенью сжатия:

flac -n infile.wav, где n — число от 0 (минимальное сжатие) до 8 (максимальное сжатие).

 

Декодирование FLAC в WAV:

flac -d infile.flac

 

Чтобы убедиться в том, что FLAC сжимает данные действительно без потерь, можно использовать любое ПО, умеющее сравнивать файлы побитно — например, встроенную в Windows утилиту fc. Для эксперимента выбираем любой WAV-файл и делаем с ним следующие преобразования: original.wav (оригинальный файл) > compressed.flac (кодируем файл во FLAC) > decompressed.wav (декодируем FLAC обратно в WAV). Далее сравниваем original.wav и decompressed.wav при помощи fc в режиме двоичного сравнения:

fc /b original.wav decompressed.wav

По завершении проверки утилита выдаст сообщение «различия между файлами не найдены», что говорит об их полной идентичности. Это означает, что при конвертации во FLAC и обратно ни один бит не был потерян, что и требовалось доказать. Если проделать тот же опыт с MP3, то результат будет совсем иной, различий между файлами обнаружится огромное количество.

Автоматизация сжатия при помощи foobar2000

Работа через консоль — это, конечно, хорошо, но для регулярного применения процесс преобразования форматов хочется сделать более простым и удобным. Для решения данной задачи прекрасно подходит плеер foobar2000, о котором я уже упоминал выше. Этот проигрыватель имеет встроенный конвертер файлов, настройку которого мы и рассмотрим пошагово.

Для начала добавим в конвертер пресеты для LAME:

1) Открываем foobar, добавляем в его плейлист несколько файлов. Кликаем правой кнопкой мыши на любом треке из плейлиста, выбираем Convert > … В открывшемся окне Converter Setup в блоке Current Settings выбираем пункт Destination — здесь можно настроить, куда и как foobar будет сохранять созданные файлы. При необходимости корректируем эти параметры, затем жмём Back.

2) Нажимаем Output format > Add New, в появившемся окне заполняем поля как на скриншоте:

 

Добавление нового пресета для MP3 в конвертер foobar2000

 

В поле Encoder file следует указать полный путь к файлу lame.exe. После того, как всё заполнено, жмём OK, затем Back.

3) Вернувшись в окно Converter Setup, сохраняем созданный пресет кнопкой Save <<, название указываем LAME --preset standard.

Проходим пункты 2 и 3 заново, но на этот раз в параметрах и названии пресета меняем «standard» на «extreme». В результате в список Saved presets добавятся два пункта, запускающие LAME в режимах standard и extreme. Теперь можно перекодировать в MP3 любые файлы из плейлиста foobar, просто выделив их мышкой и выбрав в контекстном меню Convert > название нужного пресета:

Конвертация файлов в MP3 с использованием пресетов в foobar2000

 

Настроить FLAC ещё проще. В окне Converter Setup в блоке Current Settings выбираем Output format, далее в списке пресетов выбираем FLAC, жмём Back. Вернувшись в Converter Setup сохраняем новый пресет с именем FLAC:

 

Пресет для FLAC в настройках конвертера foobar2000

 

Всё, теперь сжатие во FLAC доступно через контекстное меню Convert так же, как и сжатие в MP3. Нюанс: при первом запуске процесса конвертации откроется окно, в котором надо будет указать, где находится файл flac.exe.

К слову. У пользователей часто возникает вопрос, как разбить на отдельные треки альбом, скачанный в виде одного большого FLAC-файла с дополнением в виде файла разметки Cue sheet. Настроив foobar, как описано выше, мы можем сделать это в несколько кликов: открываем файл с расширением .cue, выделяем появившиеся в плейлисте треки и преобразуем их в отдельные файлы через контекстное меню Convert > FLAC.

Заключение

Завершая данную статью, не могу обойти стороной один из самых популярных вопросов обывателей — что же лучше, FLAC или MP3? Спрашивающий обычно хочет получить простой, однозначный и справедливый для всех случаев ответ. Однако, такового нет и быть не может. Далее я изложу своё мнение по части того, когда и почему следует применять каждый из обсуждаемых форматов.

Что касается качества звучания, то опыт показывает, что при грамотном подходе к процессу сжатия MP3 разница между ним и lossless-форматами на слух исчезающе мала в подавляющем большинстве ситуаций. Надежно фиксировать отличия могут только хорошо тренированные люди при прослушивании подходящей музыки на высококлассном оборудовании. Да, существуют специально подобранные тестовые сэмплы, на которых артефакты lossy-сжатия отчётливо заметны каждому, но задайте себе вопрос — вы планируете слушать эти сэмплы или всё-таки обычную музыку? В общем, вывод очевиден — MP3 более чем подходит как формат хранения музыки для высококачественного воспроизведения. Но повторю ещё раз: данный тезис справедлив только в том случае, если аудиофайлы приготовлены правильно. К сожалению, сеть наводнена MP3-шками, звучание которых откровенно погано вовсе не из-за ущербности самого формата, а по причине использования старых или изначально убогих кодеров.

Чтобы составить собственное непредвзятое мнение по обсуждаемому вопросу, настоятельно рекомендую читателю лично потестировать разные форматы в слепых тестах. Это не только познавательное, но и достаточно увлекательное занятие.

Теперь рассмотрим преимущества, которые даёт использование FLAC или других lossless-форматов.

  1. В отличие от ситуации с MP3, где качество результата сильно зависит от квалификации кодирующего, испортить звучание сжатием во FLAC невозможно в принципе. Поэтому вопрос, чем и как кодировался материал теряет свою актуальность (за исключением ранее описанных клинических случаев изготовления FLAC из lossy, но это легко проверяется). При прослушивании музыки в lossless вы можете быть уверены, что огрехи в звучании, если таковые имеются — не результат приложения чьих-либо кривых рук на этапе сжатия, а свойство исходной фонограммы, с которым просто надо смириться.
  2. Сама уверенность в том, что запись хранится «как есть», без необратимых потерь в ней, некоторым людям доставляет психологический комфорт. В такой тонкой области, как аудио, данный фактор может быть весьма значимым.
  3. Материал в lossless идеально подходит для разнообразной обработки — его можно пережимать в любые другие форматы, редактировать, резать на сэмплы без боязни получить на выходе «мясо, вылепленное из консервов». Для тех, кто серьёзно работает со звуком, это немаловажно.

Всё перечисленное не про вас? Тогда заморачиваться с lossless вам нет никакого смысла, смело используйте MP3 либо другие lossy-форматы.

Лично я дома храню и слушаю музыку преимущественно во FLAC, собственноручно изготавливая из него MP3 при необходимости — например, для использования в портативных устройствах.

Метки:

1 комментарий

  • Спасибо, очень познавательная статья.

    [ответить]

Оставить комментарий пользователю Алексей Отменить ответ