MP3

Преамбула

Появившись ещё в середине 1990-х, формат MP3 быстро занял лидирующие позиции и, похоже, до сих пор не собирается их сдавать. Мало кто из пользователей компьютеров и разнообразных устройств для воспроизведения звука хорошо представляет себе, что такое MP3 "изнутри". Попробуем разобраться.

Что такое MP3?

MP3 - формат сжатия звука с потерями. Разработан в Германии институтом Фраунгофера в 1994-м году. Если быть точнее - в 1994-м появился первый кодировщик L3Enc. Самый популярный формат сжатия звука на момент написания статьи (обновление: и семью годами позже, в 2017-м :).

Из чего состоит MP3?

Технически MP3 называется MPEG-1 Audio Layer 3 и состоит из нескольких подформатов. Каждый подформат рассчитан на свою частоту дискретизации и битрейт. Ранее было принято считать, что MP3, закодированный на битрейте 128кбит, практически неотличим от AudioCD (это, безусловно, не так). Сегодня таковым "порогом" считается 192кбит (речь идёт о среднестатистическом слушателе). Если "подняться" до 256кбит, слепые тесты уже проваливают профессиональные эксперты, несмотря на то, что опыты проводятся на качественном оборудовании и в соответствующих помещениях. 320кбит считается полностью неотличимым от оригинала на слух (напомню, речь идёт о формате AudioCD - т.е., 16бит 44.1кГц). Как человек, долго работающий с музыкой, я эту информацию могу лишь дополнительно подтвердить собственным (более чем двадцатилетним) опытом работы с MP3.

Принципы кодирования MP3

Довольно сложно объяснить все принципы кодирования формата, я попытаюсь сделать это "на пальцах". Кодек берёт звуковой материал и, основываясь на выходных данных (в основном, на битрейте) начинает его сжимать. Сначала производится фильтрация высоких частот (для 128кбит это может быть диапазон, начиная от 14-15кГц, для 256кбит - 19-20кГц и т.д.). После того, как часть по факту неслышимой информации убрана из файла, кодек строит т.н. "психоакустическую модель", на основании которой убирает из звука неслышимые составляющие. Затем информация "ужимается" в нужный битрейт. Понятное дело, чем ниже битрейт - тем более слышимы "неслышимые" составляющие, как бы абсурдно это ни звучало.

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

С проигрывателем всё проще - надо лишь развернуть готовый поток согласно информации, закодированной в нём. Тем не менее, при декодировании тоже могут возникать неприятные нюансы. К примеру, некогда популярнейший проигрыватель Winamp в большинстве своих начальных версий имел очень низкое качество звука - видимо, из-за чрезмерно усердной "оптимизации" кода под не слишком резвые компьютеры эпохи конца 1990-х.

MP3 с битрейтом 128кбит, как правило, без проблем отличим от оригинала на хорошей аппаратуре. Будет слышно и урезание высоких частот, и некоторые "булькающие" призвуки на ВЧ при насыщенном звуке. С повышением битрейта, качество кодирования растёт катастрофически: уже к 160кбит результат на слух более чем удовлетворяющий, не говоря уж о 192кбит. Естественно, при хорошем кодеке и правильно настроенных параметрах кодирования.

Есть, конечно, и другие способы применения MP3 - например, кодирование для передачи в реальном времени через интернет. Здесь качество не играет особенной роли - важен размер получаемого файла.

Режимы кодирования

У MP3 на данный момент три режима кодирования, отличающиеся качеством материала на выходе.

CBR (constant bitrate, постоянный битрейт)

Изначально использующийся режим, постоянный битрейт на всём протяжении файла. Из достоинств имеет разве что точно прогнозируемый объём выходного файла.

VBR (variable bitrate, переменный битрейт)

Появившийся позднее и с успехом развившийся режим. Суть состоит в том, что звуковой материал изначально имеет разную насыщенность на разных участках времени. Исходя из этого, можно варьировать битрейт, сохраняя при этом одинаковое качество. Например, зачем кодировать тишину на битрейте 128кбит, если для этого можно использовать минимальные 32кбита (для 44.1кГц)? Недостатком такого режима является невозможность прогнозирования объёма выходного файла. Впрочем, вряд ли можно назвать это существенным недостатком на фоне очевидных достоинств.

ABR (average bitrate, средний битрейт)

ABR является "соединением" CBR и VBR. Имеется возможность задать некий "средний" битрейт, а кодек будет использовать переменный битрейт, чтобы "вписаться" в заданные рамки. Результат кодирования в режиме ABR будет несколько лучше, чем у CBR, однако музыкальный материал будет закодирован с разным качеством на разных участках. Тем не менее, как и в случае с CBR, будет легко прогнозировать объём файла.

Режимы управления кодированием

Stereo (стерео)

Двухканальное кодирование. Каналы стереосигнала кодируются независимо друг от друга, но распределение бит под результат может варьироваться в зависимости от насыщенности в каждом канале. Режим используется в основном на битрейтах от 256кбит.

Dual channel (двухканальный)

Кодирование каналов независимо друг от друга, с выделением постоянного битрейта под каждый канал. Например, если выбран битрейт 256кбит, то под каждый канал определяется строго 128кбит. Режим практически не используется, а в популярном кодеке LAME даже и не поддерживается.

Joint stereo (объединённое стерео)

Часто используемый режим для кодирования на средних и низких битрейтах (меньше 256кбит). Состоит из нескольких подрежимов. В основном базируется на том, что на обоих каналах очень много одинаковой информации (то есть, каналы типичного музыкального файла отличаются друг от друга не на 100%). При этом, одинаковую информацию можно закодировать с битрейтом повыше, а разность между каналами, которая обычно невелика, ужать получше. Из сказанного вытекает очевидный недостаток режима: если каналы всё же полностью отличаются друг от друга, никакого выигрыша в качестве по сравнению с тем же стереорежимом не получится. Однако, в большинстве случаев joint stereo позволяет получить лучшее звучание на низких битрейтах.

Mono (моно)

Используется для кодирования моносигналов.

Заключение

Пожалуй, единственным серьёзным недостатком MP3 является то, что технически стандарт ограничен двумя каналами. Для меня это, впрочем, не является недостатком, поскольку я не работаю более чем с двумя каналами одновременно. В 2010-м году исчез и второй крупный недостаток: патент.

У MP3 немного реальных конкурентов, наиболее заметные из них - AAC и Ogg Vorbis. AAC защищён патентом, в то время как Ogg Vorbis - свободно реализуемый проект. По сути, из преимуществ у этих кодеков - разве что возможность сохранять более двух каналов в потоке и улучшенное качество звука на низких битрейтах (на высоких различия стираются). По популярности этим кодекам далеко до MP3, да и меломаны всё чаще смотрят в сторону форматов сжатия без потерь (навроде FLAC), поскольку устройства хранения данных эволюционируют гигантскими темпами и уже можно позволить себе хранить аудио в сжатом без потерь варианте. MP3 же остаётся "проверенной рабочей лошадкой" для бытового применения и обеспечивает отличное качество звучания, если использовать нормальный кодек с правильными настройками сжатия.

по теме: MP3 vs CD, или "не зная броду - не суйся в воду"

Оригинал статьи на saanvi.ru