Что такое MP3 ?
MP3 -- сокращение от MPEG Layer3. Это один из потоковых форматов хранения и передачи аудиосигнала в цифровой форме, разработанный Fraunhofer IIS и THOMSON, позднее утвержденный как часть стандартов сжатого видео и аудио MPEG1 и MPEG2. Данная схема является наиболее сложной схемой семейства MPEG Layer 1/2/3. Она требует наибольших затрат машинного времени для кодирования по сравнению с двумя другими и обеспечивает более высокое качество кодирования. Используется главным образом для передачи аудио в реальном времени по сетевым каналам и для кодирования CD Audio. Полные спецификации формата доступны на сайте http://www.mp3tech.org/.
Детали
MP3 -- потоковый формат. Это означает, что передача данных происходит потоком независимых отдельных блоков данных -- фреймов. Для этого исходный сигнал при кодировании разбивается на равные по продолжительности участки, именуемые фреймами и кодируемые отдельно. При декодировании сигнал формируется из последовательности декодированных фреймов.
Высокая степень компактности MP3 по сравнению с PCM 16Bit Stereo 44.1kHz (CD Audio) и ему подобными форматами при сохранении аналогичного качества звучания достигается с помощью дополнительного квантования по установленной схеме, позволяющей минимизировать потери качества.
Последнее, в свою очередь, достигается учетом особенностей человеческого слуха, в том числе эффекта маскирования слабого сигнала одного диапазона частот более мощным сигналом соседнего диапазона, когда он имеет место, или мощным сигналом предыдущего фрейма, вызывающего временное понижение чувствительности уха к сигналу текущего фрейма. Также учитывается неспособность большинства людей различать сигналы, по мощности лежащие ниже определенного уровня, разного для разных частотных диапазонов.
Подобные техники называются адаптивным кодированием и позволяют экономить на наименее значимых с точки зрения восприятия человеком деталях звучания. Степень сжатия, и, соответственно, объем дополнительного квантования, определяются не форматом, а самим пользователем в момент задания параметров кодирования. Ширина потока (bitrate) про кодировании сигнала, аналогичного CD Audio (44.1kHz 16Bit Stereo) варьируется от наибольшего, 320kbs (320 килобит в секунду, также пишут kbs, kbps или kb/s), до 96kbs и ниже.
Термин битрейт в общем случае обозначает общую величину потока, количество передаваемой за единицу времени информации, и поэтому не связан с внутренними тонкостями строения потока, его смысл не зависит от того, содержит ли поток моно или стерео, или пятиканальное аудио с текстом на разных языках, или что-либо еще.
Кстати, несмотря на то, что в формате MP3 действительно при определенных условиях может кодироваться и пятиканальное аудио, рассмотрение всех случаев, кроме стерео, по понятным причинам не включено в данный обзор. Весь обзор построен вокруг и около процесса кодирования CD Audio.
Продолжаем про битрейты. На проведенных тестах специально приглашенные опытные эксперты, специализирующиеся на субъективной оценке качественности звучания, не смогли различить звучание оригинального трека на CD и закодированного в MP3 с коэффициентом сжатия 6:1, то есть с битрейтом в 256kbs. Правда, тесты были проведены на небольшом количестве материала, и на самом деле не все столь хорошо, нередко бывает действительно нужно пользоваться 320kbs. Для себя я счел это достаточным основанием для полного перехода на кодирование с битрейтом 320kbs.
Более низкие битрейты, несмотря на их популярность, не дают возможности обеспечить надлежащее качество кодирования, что незаслуженно обеспечило MP3 дурную славу любительского формата. На самом деле, хотя и 256kbs, и даже 320kbs тоже не дают возможности осуществить полностью прозрачное кодирование, но отличия от CD Audio, по которому кодируется тестовый MP3, сравнимы с отличиями самого CD Audio от исходного аналогового сигнала, из которого он был получен путем оцифровки. То есть потери, конечно, есть, но несущественны с точки зрения того, кому качество CD Audio представляется достаточным. Фактически, их обнаружение обычно является задачей нетривиальной на аппаратуре класса Hi-Fi.
Настоящее и будущее MP3
MP3 на сегодня имеет два огромных преимущества перед другими доступными форматами его рода. Одно из них состоит в том, что ни про один из существующих подобных форматов нельзя пока сказать, что он полностью гарантирует устойчивое сохранение качества звучания на достаточно высоких битрейтах, кроме MP3, который достойно выдержал проверку временем. Пожалуй, единственный известные мне конкурент в этом плане -- последние варианты формата ATRAC, используемый в минидисках.
Для MP3 также написано множество удобного программного обеспечения. Этот факт отражает второе, не менее важное преимущество -- на ближайшие годы, а возможно, и на все десятилетие, MP3 стал стандартом де факто, настолько много сделано в него вложений пользующимися им сторонами, в том числе и цифровыми радиостанциями.
MP3 довольно долго оставался неизвестным, но несколько лет назад начался взрывной рост его популярности, столь же быстро начали появляться залежи нелегальных MP3 файлов. Сейчас налажено производство аппаратных MP3 поееров, а карманных, и для автомобилей. Таким образом, MP3 стал первым массово признанным форматом хранения аудио после CD-Audio.
Несмотря на то, что MP3 появился достаточно давно, более новые форматы, претендующие на его место, появившиеся к настоящему моменту, все на поверку оказались любительскими. Они могут быть или не быть хороши по сравнению с MP3 на низких битрейтах, это зависит от трека и особенностей слуха конкретного человека, но на место MP3 256kbs... 320kbs претендовать не способны.
Возможно, 'монополия' MP3 в сфере компьютеров на низких битрейтах все же будет отчасти сломлена новым форматом от Microsoft -- WMA. Но пока рано говорить об этом. С другой стороны, появление Microsoft на данном рынке со столь сильной разработкой означает быстрое отсеивание оказавшимися неудачными ветвей AAC и VQF. Впрочем, остается надежда, что AAC еще будет доработан.
В завершение упомяну один адрес, по которому расположился проект по созданию свободного от патентных ограничений кодера -- http://www.sulaco.org/mp3/free.html. Правда, патентов вокруг MP3 накопилось столько, что, думаю, проект этот завершен не будет.
(Впрочем, если говорить о свободных от патентах аудиокодерах вообще, то существует и более реальный проект, не являющийся проектом MP3 кодера. Он расположен по адресу http://www.xiph.org/.)
Описание процесса кодирования
Подготовка к кодированию. Фреймовая структура
Перед кодированием исходный сигнал разбивается на участки, называемые фреймами, каждый из которых кодируется отдельно и помещается к конечном файле независимо от других. Последовательность воспроизведения определяется порядком расположения фреймов. Каждый фрейм может кодироваться с разными параметрами. Информация о них содержится в заголовке фрейма.
Начало кодирования
Кодирование начинается с того, что исходный сигнал с помощью фильтров разделяется на несколько, представляющих отдельные частотные диапазоны, сумма которых эквивалентна исходному сигналу.
Работа психоакустической модели.
Для каждого диапазона определяется величина маскирующего эффекта, создаваемого сигналом соседних диапазонов и сигналом предыдущего фрейма. Если она превышает мощность сигнала интересующего диапазона или мощность сигнала в нем оказывается ниже определенного опытным путем порога слышимости, то для данного фрейма данный диапазон сигнала не кодируется.
Для оставшихся данных для каждого диапазона определяется, сколькими битами на сэмпл мы можем пожертвовать, чтобы потери от дополнительного квантования были ниже величины маскирующего эффекта. При этом учитывается, что потеря одного бита ведет к внесению шума квантования величиной порядка 6 dB.
Завершение кодирования
После завершения работы психоакустической модели формируется итоговый поток, который дополнительно кодируется по Хаффману, на этом кодирование завершается.
Замечание
На практике схема несколько сложнее. Например, необходимо согласовываться с требованиями битрейта. В зависимости от кодера это приводит при повышении битрейта к разного рода релаксациям при отборе сохраняемой части исходного сигнала, а при понижении -- наоборот, к ужесточению критериев.
Способы кодирования стерео сигнала
В рамках MP3 кодирование стереосигнала допустимо четырьмя различными методами:
Dual Channel -- Каждый канал получает ровно половину потока и кодируется отдельно как моно сигнал. Рекомендуется главным образом в случаях, когда разные каналы содержат принципиально разный сигнал -- скажем, текст на разных языках.
Выставляется в некоторых кодерах по требованию.
Stereo -- Каждый канал кодируется отдельно, но кодер может принять решение отдать одному каналу больше места, чем другому. Это может быть полезно в том случае, когда после отброса части сигнала, лежащей ниже порога слышимости или полностью маскируемой, оказалось, что код не полностью заполняет выделенный для данного канала объем, и кодер имеет возможность использовать это место для кодирования другого канала. В документации к mp3enc замечено, что этим, например, избегается кодирование "тишины" в одном канале, когда в другом есть сигнал.
Данный режим выставлен по умолчанию в большинстве ISO-based кодеров, а также используется продукцией FhG IIS на битрейтах выше 192kbs. Применим и на более низких битрейтах порядка 128kbs... 160kbs.
Joint Stereo (MS Stereo) -- Стереосигнал раскладывается на средний между каналами и разностный. При этом второй кодируется с меньшим битрейтом. Это позволяет несколько увеличить качество кодирования в обычной ситуации, когда каналы по фазе совпадают. Но приводит и к резкому его ухудшению, если кодируются сигналы, по фазе не совпадающие. В частности, фазовый сдвиг практически всегда присутствует в записях, оцифрованных с аудиокассет, но встречается и на CD, особенно если CD сам был записан в свое время с аудиоленты. С другой стороны, уже совершена (первая ?) попытка написать программу для автоматической коррекции фазового сдвига, адрес страницы автора -- http://www.chat.ru/~lrsp. Возможно, она немного поможет любителям кодировать оцифровки с аудиокассет с битрейтом порядка 128kbs.
Режим выставлен по умолчанию продукцией FhG IIS, а также кодером Lame, для битрейтов от 112kbs до 192kbs.
Joint Stereo (MS/IS Stereo) -- Вводит еще один метод упрощения стереосигнала, повышающий качество кодирования на особо низких битрейтах. Состоит в том, что для некоторых частотных диапазонов оставляется уже даже не разностный сигнал, а только отношение мощностей сигнала в разных каналах. Понятно, для кодирования этой информации употребляется еще меньший битрейт.
В отличие от всех предыдущих, этот метод приводит к потере фазовой информации, но выгоды от экономии места в пользу среднего сигнала оказываются выше, если речь идет о очень низких битрейтах.
Этот режим по умолчанию используется продукцией FhG IIS для высоких частот на битрейтах от 96kbs и ниже (другими качественными кодерами этот режим практически не используется).
Но, как уже говорилось, при применении данного режима происходит потеря фазовой информации, также теряется любой противофазный сигнал.
Простые заблуждения и ошибки, делаемые пользователями MP3
Вокруг MP3 набралось столько заблуждений, что создается впечатление, что так все и было задумано, что это чей-то заговор. :) Но -- по порядку.
Одно из самых больших заблуждений, связанных с MP3, постоянно проявляется в споре "128kbs vs 256kbs -- с каким битрейтом кодировать". Аргументы сторонников первого варианта исчерпываются напоминанием, что такие MP3 вдвое меньше. Утверждение, что уж лучше держать CD Audio вместо MP3 256kbs, несостоятельно -- качество MP3 256kbs... 320kbs практически сответствует оригиналу, а занимаемый объем в 4.5--6 раз меньше. Заблуждение же состоит в том, что и 128kbs дает достаточно высокое качество. На самом же деле для людей, сознательно выбирающих 128kbs, сохранение близкого к исходному качества просто не является слишком важным, так как их аппаратура обычно не лучше плееров -- "мыльниц;". В то же время многие владельцы CD кодируют их в MP3 даже просто потому, что гораздо реже нужно CD менять - на моем 8Gb винчестере поместится более пятидесяти часов музыки в MP3 битрейта 320kbs. Как говорится, в этом случае мотивы пользователей 128kbs нам непонятны.
Чтобы не суметь отличить MP3 128kbs от оригинала, нужно либо не иметь слуха, либо взять аппаратуру похуже. И то, что на большинстве компьютерных систем с момента покупки стоит ужасно шумная звуковая плата от ESS, известно всем хорошо. Только мне с некоторых пор кажется, что дело еще и в постоянном отравлении некачественным звуком, и, как следствие, временной (но постоянно возобновляемой) потере чувствительности. Мы слишком часто слушаем то, что слушать не стоило бы, и дело не только характеристиками компьютерной техники -- MP3 128kbs при нормальном слухе не понравится и на ESS. Конечно, по сравнению с дребезгом колонок уличного киоска под аккомпанемент трамвая звучание MP3 128kbs может казаться весьма неплохим, но это не нормально.
Что со всем этим делать ? Да просто берегите уши от лишних истязаний, оно полезно. А что до карты -- простая малошумная карта и относительно приличные наушники стоят не так уж много. Поэтому в обзоре не учитываются шумы компьютера и карты -- эти трудности вполне преодолимы.
Другое небольшое заблуждение состоит в том, что уровень шумов декодированного сигнала сильно связан с уровнем качества MP3. Но это заблуждение развевается очень быстро -- заметить, что качество MP3 зависит от других причин, легче легкого. Как правило, уровень шумов очень низок на любых битрейтах, это скорее характеристика плеера.
Кроме того, в большинстве учебников прямо говорится о неспособности человека слышать частоты выше 16kHz. Но во-первых, это просто неверно, многое зависит от мощности сигнала и от возраста слушателя. Во-вторых, человек -- существо, не лишенное оригинальности. Даже когда он не слышит такие звуки с помощью уха осознанно, он все же ощущает их. И это влияет на восприятие. Поэтому обрезание частот выше 16kHz можно считать обоснованным на низких битрейтах, когда оно позволяет намного лучше закодировать более низкие диапазоны, но нельзя не брать в расчет, когда речь заходит о высоких битрейтах, приближающих качество сигнала к уровню CD Audio. Да, кстати, у детей частотный порог слышимости куда выше 16kHz.
Немного о программах
Новых пользователей в заблуждение вводит повсеместная реклама очень продаваемых, но в то же время очень по сравнению с другими посредственных кодеров от XingTech. По поводу их недостатков я еще пройдусь ниже.
На втором месте по объему рекламы мы видим кодеры от самого уважаемого производителя, FhG IIS, но они тоже обладают определенными недостатками, к тому же дороги, поэтому дешевые и быстрые кодеры от XingTech сегодня на вершине популярности.
Но недостатки кодеров от FhG IIS в основном связаны со слабыми возможностями настройки и концентрацией усилий разработчиков на низких битрейтах. Если FhG IIS будет с того коммерческая выгода, то специалисты быстро все поправят.
О третьей группе кодеров, основанных на свободно доступном исходном коде написанного в иллюстративных целях кодера от ISO, также будет сказано ниже.
Из плееров же, как не составляет труда заметить, наиболее популярен и раскручен плеер Winamp. Еще недавно он не блистал высоким качеством звука, да и сейчас снова не блещет, но недавно на протяжении нескольких версий в нем использовался декодер от FhG IIS, и при условии его установки ( например, их версии 2.22 ) вопрос с выбором плеера практически отпадает.
Кроме того, есть и другие хорошие плееры, могущие поспорить в Winamp, некоторые из них упомянуты во второй части обзора.
Кроме плееров и кодеров, к программам, связанным с MP3, относят и грабберы -- копировщики треков с CD в WAV-файлы. Связанные с ними вопросы вкратце освещены мной в отдельном обзоре, но без больших подробностей.
Немного о некоторых битрейтах
Чем выше битрейт, тем выше оказывается качество закодированного сигнала. Но каждый битрейт имеет свою сферу применения.
Профессионалы, аудиофилы, а также все, кто заботится о создании качественной копии, вполне соответствующей про качеству оригиналу, применяют только высокие битрейты. С другой стороны, наиболее многочисленная часть любителей MP3 применяет его для кодирования "популярной" музыки, главное отличительное свойство которой -- недолговечность, способность быстро устаревать и становиться неинтересной, поэтому такие MP3 и хранятся недолго, и требования к их качеству гораздо более низкие, что приводит к использованию низких битрейтов.
В Интернет, как правило, можно найти только MP3, закодированные с битрейтом 128kbs (и/или кодерами от XingTech, о которых ниже). Этот битрейт, являясь "любимым" битрейтом FhG IIS, был признан также оптимальным для использования в Интернет. В принципе, на эту роль больше подошел бы битрейт 112kbs по разным соображениям, но он оказался маловат для достаточно качественного кодирования, и дополнительно закрепился битрейт 128kbs, несколько превышающий по качеству 112kbs, и который позже стал основным в Интернет.
Если отвлечься ненадолго от кодирования собственно CD Audio, то можно заметить, что поток величиной порядка 112kbs довольно удобен, например, для прямых трансляций на большие расстояния. В этом случае MP3 хорошо окупается, по сравнению с передачей того же сигнала другими способами. На странице FhG IIS можно почитать более подробно об этом. Также MP3 используется на цифровых радиостанциях, но там требования к качеству на полпорядка выше.
Вернемся к кодированию CD Audio.
Выбирать основной для себя битрейт вам самим, в зависимости от потребностей. Я сам, когда начинал разбираться с MP3, изначально искал именно и только полноценную замену CD Audio, с меньшим объемом, но с как минимум не меньшим качеством, и такую возможность MP3 в общем-то дает.
Любые существенные потери качества и нервов, пусть и с утешительным призом в виде дальнейшего уменьшения объема, меня всегда интересовали со знаком минус, и я пользуюсь и собираюсь продолжать пользоваться исключительно 320kbs MP3.
Дело в том, что в уже упоминавшихся тестах с участием профессиональных прослушивателей, в которых для всех использованных тестовых композиций не было найдено различий в звучании MP3 256kbs и оригинала, было на самом деле использовано весьма ограниченное число композиций. На практике же существует довольно много композиций, где приходится переходить на 320kbs, и в то же время я не слышал ни об одной, где результат кодирования на 320kbs оказался бы недостаточно хорош. Отличия, конечно, все же остаются обнаружимы при использовании исключительной аппаратуры, но в целом качество практически то же.
К сожалению, я сейчас не помню адреса, по которому расположены результаты выше упомянутых тестов. Но разными любителями проводились и свои тесты, результаты нескольких из них можно найти на одном из лучших известных мне сайтов по MP3, MP3Tech.
В общем же из результатов всех известных мне тестов можно сделать следующие выводы. Во-первых, битрейт 256kbs для абсолютного большинства пользователей совершенно достаточен. Но для уверенности в качестве все же необходимо использовать 320kbs, что я сам и делаю. При этом получаем в четыре с половиной раза меньший файл, что приятно. Во-вторых, MP3 160kbs... 192kbs в большинстве случаев вполне достаточны для хранения вспомогательного аудио на компьютере, например, для использования в компьютерных играх. Иначе говоря, для случаев, когда внимание отвлечено. Хотя производители игр, настроенные радикально, предпочитают 128kbs.
И, наконец, немного о собственно MP3 128kbs, пользующемся такой популярностью. В свое время он был широко разрекламирован FhG IIS, но при его использовании мы имеем скорее качество аудиокассеты, записанной на подозрительного происхождения магнитофоне, хотя и с очень низким уровнем шумов. Романтически настроенные разработчики даже почти официально назвали это 'CD-качеством', что очень далеко от истины. Впрочем, это давняя традиция -- ADPCM тоже в свое время называли форматом, дающим только неслышимые искажения.
На самом деле различие между качеством звука на битрейтах 128kbs и 256kbs... 320kbs принципиально, так как первый к качеству уровня CD, собственно, никакого отношения не имеет, в отличие от двух последних. Разумеется, для тех, кому качество средней аудиокассеты кажется великолепным, данная оценка неверна, также она не столь категорична для случаев, когда внимание сильно отвлечено. Но в целом, думаю, все ясно.
VBR & XingTech
XingTech -- фирма, производящая наиболее скоростные MP3 кодеры. К сожалению, ее кодеры всегда славились и продолжают славиться невысоким качеством.
В районе конца 98 -- начала 99 года XingTech первая использовала технологию переменного битрейта, VBR. Если в случае постоянного битрейта кодер выбирает наиболее значащие частотные составляющие фрейма, убирающиеся в выделенный битрейт, то в случае VBR задается максимальный допустимый уровень потерь, а кодер выбирает еще и минимальный битрейт, достаточный для выполнения поставленной задачи. Стоящие рядом в конечном потоке фреймы могут оказаться в итоге закодированы с совершенно разными параметрами.
Но для кодеров XingTech качество так и не поднялось на уровень FhG IIS/ISO-based кодеров. Оно безусловно повысилось, но для серьезного кодирования музыки эти кодеры остаются непригодны, да и не для этого они создавались -- в частности, в данных кодерах практикуется искажение сигнала, дающее эффект "лучшей слышимости высоких", что действительно часто может оказаться приятно, но высококачественное кодирование по определению подразумевает отсутствие подобных искажений. И не зря.
Определенный оптимизм вызывает другая реализация VBR, уже на основе исходного кода ISO ( на самом деле от кода ISO он ушел уже очень далеко ). Речь идет о кодере Lame. Несмотря на свое довольно своеобразное название, данный кодер на данный момент является самым многообещающим кодером для высоких и средних битрейтов, при этом он и на низких битрейтах превосходит большинство других кодеров, в том числе все ISO based. Подробнее о Lame -- ниже.
Способы хранения MP3
Стандарт MP3 не определяет никакого точного стандартного математического алгоритма кодирования, его разработка целиком и полностью остается на совести разработчиков кодеров. Вместо этого он определяет общую схему процесса кодирования, а также формат закодированного фрейма. Сами последовательности фреймов могут передаваться потоком (процесс передачи такого потока называется streaming) или храниться в файлах.
MP3 файл, как и поток, состоит из последовательно расположеных фреймов, между которыми может содержаться произвольная информация. Основное требование состоит в том, что не должно быть совпадений с сигнатурой начала фрейма.
Часто к последовательности фреймов добавляют стандартный заголовок мета-аудиоформата WAV, и получается то, что называют WAV-MP3. (Немного подробнее о последнем будет сказано ниже, когда будет описываться ACM pro codec.) Еще чаще к MP3-файлу добавляется информационный блок ID3v2, содержащий информацию об исполнителе, жанре, названии композиции, и другую подобную информацию о треке. Он добавляется в конец файла. В середину пока никто ничего ставить не придумал. Хотя, вообще говоря, может представлять некоторый интерес вставка спецтэга для VBR с информацией о том, в какой части трека мы, собственно, находимся.
Характер потерь при кодировании
На низких битрейтах всегда срезаются мелкие, сравнительно тихие детали, наличие или отсутствие которых нередко серьезно меняет эмоциональную окраску композиции, придает или лишает ее таких эффектов, как ощущение 'кристальной' чистоты звука (в той мере, в которой она присутствует в CD Audio). Кроме того, в соответствии с психоакустической моделью, высшие (выше 16 кГц) частоты на низких битрейтах кодируются с очень низким приоритетом.
Далее, имеют место разные особенности кодеров. Так, у кодеров от FhG IIS на 128 kbs оказываются 'смазаны' верхние частоты, наблюдается эффект 'шепелявости', в то время как у ISO-based вместо этого -- 'звон'. Скорее всего, это связано с разным отношением к частотам выше 16kHz у данных кодеров. В кодере Lame, кстати, они по умолчанию срезаются, что увеличивает качество кодирования на 128kbs.
На высших битрейтах при последовательном следовании психоакустической модели, разработанной FhG IIS, проблемы могут доставлять только ошибки, внесенные при написании кодера. Впрочем, из-за не слишком большой озабоченности FhG IIS качеством его кодеров на высоких битрейтах уже не раз оказывалось, что новая версия звучит иногда даже несколько хуже старой. Полагаю, причина кроется в недостаточном или неправильном ослаблении ограничений психоакустической модели при повышении битрейта. Опять же, первый серьезный заказчик, и проблема исчезнет.
Тестирование качественности кодеров
Обычно тестирование кодеров проводится по степени сохранения формы АЧХ оригинального сигнала. При этом очевидно, что при битрейтах 256kbs... 320kbs АЧХ исходного файла и файла, полученного после декодирования, должны быть идентичными как на синтетических тестах (сгенерированный белый шум), так и на реальных треках, так как при значительных отличиях они окажутся слышны независимо от того, что говорит психоакустическая модель про каждый конкретный фрейм, если только все эти фреймы не похожи друг на друга. На более низких битрейтах следует в первую очередь следить за сохранением формы АЧХ в области низких и средних частот.
Сами тесты по сохранению формы АЧХ следует проводить не только на белом шуме, как это делается обычно, но и на достаточно сложных композициях, в комплексе это позволяет получить значительно более достоверные результаты.
Кроме того, само сравнение должно производиться не 'не глаз'. Мне, например, пришло как-то письмо, где подробно описывалось, какие частоты и насколько поднимает BladeEnc на низких битрейтах в тесте на кодирование белого шума. (BladeEnc действительно не идеален на средних и низких битрейтах, на них сказываются недостатки модели ISO.) Такие мелочи говорят о наличии ошибок в алгоритме.
Тесты АЧХ не универсальны. В силу особенностей MP3 они дают достаточно адекватную оценку его качества, и то не полностью, но к другим форматам они и вовсе не обязаны быть применимыми -- в частности, они непригодны для оценки качественности кодирования в формате VQF.
Относительно точную раскладку качества сигнала по материалам специально проведенного прослушивания можно найти на сайте MP3Tech, а немного вольный ее перевод на русский язык -- у меня на Mikhail's MP3 Page. Но все же рекомендую посетить и сам сайт MP3 Tech, к тому же в данный момент там лежат более новые и подробные результаты других тестов.
Психоакустическая модель и разные битрейты
Самым важной характеристикой кодера, от которой зависит качество кодирования, является психоакустическая модель, использованная в нем. Но следует заметить, что модель должна варьироваться для разных категорий битрейтов. Аналогично тому, как использование MS/IS стерео приводит к повышению качества на низких битрейтах, но на средних и высоких только понижает его, также и разные составляющие модели могут иметь максимальный битрейт, до которого они полезны, но от использования которых на больших битрейтах следует отказаться.
Кодеры, основанные на исходном коде ISO, чаще всего продолжают использовать довольно слабый вариант психоакустической модели, использованный в нем. Но на высоких битрейтах мы все же получаем очень хороший результат, причем многим он нравится больше, чем результат кодирования кодерами FhG IIS. Видимо, причина кроется как раз в том, что психоакустическая модель в кодерах от FhG IIS неизменна для всех битрейтов и более подходит для битрейтов средних и низких, в то время как на высоких избыточна и нуждается в ослаблении, в то время как модель ISO оказалась неплохо, хотя и не идеально, приспособлена к высоким битрейтам. Но тема противостояния кодеров FhG кодерам ISO-based остается откытой.
В самом развитом из ISO-based кодеров, Lame, модель была значительно улучшена, причем настолько, что кодер и на низких битрейтах незначительно уступает аналогам от FhG IIS. Можно сказать, что в Lame осталась уже относительно небольшая часть исходной модели ISO.
Но на битрейтах 256kbs и 320kbs предыдущий лидер высокобитрейтных кодеров, mpegEnc, все еще спорит с Lame. Но, как оказалось, в mpegEnc модель мало отличается от исходной слабой модели ISO, просто в нем отключены некоторые ее части, что в итоге, как ни странно, привело к значительному повышению качества кодирования... только на высоких битрейтах. Возможно, более подробный анализ исходников покажет и другие изменения, но поверхностный анализ уже показал, что все главные недостатки исходной модели ISO присутствуют. Видимо, их сглаживает высокий битрейт, или жеони действительно несущественны на 256kbs... 320kbs.
Текущий руководитель разработкой Lame Lame, Марк Тейлор, не против поработать над кодированием высоких битрейтов в нем, нужно только будет провести определенные тесты. Что до кодеров от FhG IIS -- проблема исчезнет, как только найдется заинтересованная сторона, готовая это оплатить.
Какие, собственно, кодеры у нас в распоряжении
Существуют три линии развития кодеров -- кодеры от XingTech, кодеры от FhG IIS, и кодеры, основанные но исходном иллюстративном коде ISO.
Кодеры от XingTech не отличаются высоким качеством кодирования, но многим нравятся, к тому же вполне подойдут для кодирования разной бросовой электронной музыки или синтезированных семплов. Благодаря своей скорости они остаются идеальными кодерами для музыки, не требующей высокого качества кодирования. Более подробно о них -- на http://www.xingtech.com/.
Кодеры от FhG IIS известны наивысшим качеством кодирования на низких и средних битрейтах благодаря наиболее подходящей для таких битрейтов психоакустичекой модели. Из консольных кодеров данной группы наиболее предпочтителен l3enc 2.61 (не 2.71 и не 2.72, на знаю про 2.74), также пока не отброшен mp3enc 3.1, но последний никто всерьез не тестировал. Другие кодеры, такие, как AudioActive или MP3 Producer, обладают значительными недостатками, правда, в основном это ограничения возможностей настройки и неразвитость интерфейса.
Также существует старый кодек ACM pro codec авторства FhG IIS, и несколько нелегальных кодеков, код для которых выкорчеван из последних кодеров FhG IIS.
Остальные кодеры ведут свое происхождение от исходных кодов ISO. Не считая таких "ошибок эволюции", как SoundLimit, в котором значительно увеличена скорость за счет еще более значительного ухудшения качества, получаем два основных направления развития -- оптимизация кода по скорости и оптимизация алгоритма по качеству.
До недавнего времени первую линию наилучшим образом представлял кодер BladeEnc, в котором используется первоначальная модель ISO, но проведено много оптимизаций кода, а вторую -- mpegEnc, известный также и как самый медленный MP3 кодер.
Но откуда берется высокое качество mpegEnc на высоких битрейтах, я уже упомянул выше. На самом же деле серьезная оптимизация самого алгоритма впервые встречена в кодере Lame, в котором использована самостоятельно разработанная психоакустическая модель GPSYCHO.
Есть все основания считать Lame наилучшим из основанных на коде ISO кодеров. По скорости он давно догнал остальные, а по качеству скоро должен отдать последние позиции и mpegEnc... впрочем, обо всем этом я уже писал выше.
Lame может быть собран практически на любой платформе, на которой есть компилятор языка C. Скомпилированный вариант Lame в виде библиотеки dll входит в состав граббера Cdex, но предпочтительнее использовать вариант, запускаемый из командной строки, он имеет более другие возможности настройки, к тому же работает быстрее. Но его надо собирать самому. Кстати, в состав Cdex входит и свой кодер, но он и раньше никем особенно не тестировался, а сейчас это не представляется нужным.
Всякое-разное
Что такое front-end ?
Front-end -- программа, пpедлагающая оконный интерфейс для повышения комфоpтности pаботы с пpогpаммами, его не имеющими. В слyчае MP3 -- с кодеpами, управляемыми из командной стpоки, или yстановленного в системе кодека.
После подачи команды на кодиpование front-end пеpедает введенные паpаметpы собственно кодеpy и ждет завеpшения его pаботы. Этот процесс может сопpовождаться как попытками пpедсказать оставшееся вpемя, так и выводом скромной таблички "Please wait".
В большинстве грабберов обеспечены средства для подключения внешних кодеров, поэтому любой из них может быть использован как front-end. В частности, при установленном ACM pro codec как таковой может быть использован любой граббер, позволяющий выбирать формат сохранения награбленного.
Что такое ACM pro codec ( MP3-кодек ) ?
Формат WAV является метаформатом для данных любого типа. Имеет стандартный заголовок и описания областей данных, которых может быть несколько, способ же кодирования аудиосигнала может быть каким угодно. Вполне могут содержаться данные, к аудио отношения не имеющие.
Каждый метод кодирования, указываемый в заголовке, имеет собственный идентификатор, в соответствии с которым Windows и определяет, установлен ли кодек для работы с данным файлом, и если установлен -- использует его.
Кодеки, индивидуальные для каждого подформата, регистрируются в системе при их установке, после чего становится возможным использовать WAV-файлы, содержащие аудиоданные в форматах, поддерживаемых данными кодеками.
Тем не менее, хотя для MP3 тоже существует по крайней мере один кодек ACM pro codec от FhG IIS, сам по себе формат из-за потерь при кодировании непригоден на роль промежуточного, поэтому в редакторах с WAV-MP3 работать не рекомендуется. Единственным разумным применением данного кодека можно считать декодирование WAV-MP3, либо их кодирование, когда по каким-либо причинам неудобно сделать это из нормального кодера. При установленном кодеке можно применять WAV-MP3 в качестве стандартных звуков Windows.
Помимо оригинального кодека от FhG IIS, позволяющего кодирование только с битрейтом 128kbs и ниже, существуют несколько нелегальных версий кодека, сделанных группой Radium из кода, выкорчеванного из нового 'Продюсера'. Но первая версия этого кодека была нестабильной, и я не вижу оснований для того, чтобы испытывать доверие к более новым версиям. Лучше сделать еще один кодек из Lame.
Файлы какого формата можно перевести в формат MP3?
Кодирование из формата WAV PCM поддерживают все кодеры. Многими поддерживается AIFF. Mp3enc может принимать исходные данные потоком, без промежуточного файла, в фоpмате PCM. А mpegEnc и Cdex предлагают кодировать прямо с CD-ROM. Lame распространяется в виде исходных кодов и может быть обучен любому формату.
Каков статус MP3 кодеров?
Все продукты Fraunhofer IIS и Xing Tech -- коммерческие, но полные версии обычно можно найти на FTP поисковиках.
BladeEnc, mpegEnc -- freeware, но FhG IIS пожелал сделать их развитие невозможным. Сделано это очень простым методом -- за распространение кодеров нужно платить пеню FhG IIS, даже если кодер распространяется бесплатно. Поэтому свободное распространение mpegEnc невозможно, также могут возникнуть трудности с распространением BladeEnc, несмотря на особую политику страны автора по отношению к патентам на математические алгоритмы.
Lame не угрожает подобная участь, так как он распространяется в виде патча к исходному коду ISO и сам по себе кодером быть признан не может.
Каковы системные требования ?
Фактически, единственное требование к системе -- наличие компилятора C. Но производительность MP3 кодеров на слабых системах оставляет желать лучшего, и из процессоров Intel не рекомендуется использовать что-либо ниже 486.
Выводы
В принципе, выбор кодера -- не такая уж трудная задача. Но вокруг нее возникло уже немало священных войн -- "128kbs vs 256kbs", "Xing vs FhG", "ISO-based vs FhG"... В своем обзоре я попытался показать, что сторонники каждого варианта просто достигают разных результатов, и мне сейчас уже особо нечего добавить. Делайте свои выводы, тестируйте, проверяйте, и если обнаружите что-то новое, интересное -- добро пожаловать ко мне на MP3 Forum ! Буду вас ждать.