Как работает сжатие аудио
Сегодня количество потребляемой нами информации в сети выросло в тысячи раз в сравнении с началом 2000-х. И неудивительно, ведь раньше, помимо намного менее распространенного интернет-покрытия, привычные нам сайты и сервисы выглядели совсем по другому.
Мы ежедневно читаем статьи и новости о том, что та или иная компания разработала новый стандарт соединения, превосходящий нынешние аналоги по скорости передачи данных. За уже практически два десятилетия провайдеры и производители многих гаджетов сделали огромный шаг в направлении к скоростному доступу в Интернет. Но не одними лишь скоростями наш мгновенный доступ к сайтам един.
Огромную роль в экономии нашего времени сыграло развитие алгоритмов сжатия изображений, аудио и видеофайлов. Гуляя по просторам сети, зачастую мы даже не задумываемся над тем, как и что устроено, сколько сил было приложено к разработке той или иной технологии. В новой серии статей мы рассмотрим методы сжатия таких популярных форматов, как MP3 и JPEG, а также базово рассмотрим процесс кодирования видео.
Работа алгоритма
Первым в новой серии статей станет самый популярный формат сжатия аудио–файлов *.mp3. Появился он в 1993 году, благодаря рабочей группе института Фраунгофера, а стандартизирован объединением MPEG. По данным Википедии, объединение было образовано международной организацией ISO для разработки норм в сжатии аудио и видеофайлов. Ими были установлены также следующие стандарты:
Все таки давайте вернемся обратно к mp3. Основной задачей формата было и является уменьшение размера файлов за счет удаления определенных участков звукового спектра, которые не ощущаются на непрофессиональной аудиотехнике, в соответствии с психоакустической моделью звуковосприятия человека.
На этом этапе при помощи алгоритма преобразования Фурье, звуковая волна раскладывается на спектры разной частоты. Все те малоразличимые нашим слухом частоты просто удаляются. В основном это весь спектр звука выше 16 000 Гц. По такому принципу, кстати, работают и сервисы определения музыки, типа SoundHound и Shazam. Встроенный в их работу алгоритм разделяет слышимую звуковую волну на несколько, выделяет ритмику, основные ноты и сравнивает их со своей базой данных.
Но тем не менее, общая картина звучания, например, mp3-файла в битрейте 320 кбит/с мало чем отличается от несжатого файла, при этом в размере может составлять 1/10 от оригинального.
Уже на этом этапе размер файла можно значительно уменьшить, но самый больший процент сжатия происходит на следующих этапах маскировки. Работа первого из них заключается в удалении кратных звуковых частот на громких моментах в песне, то есть если звучит громкий барабан, то все остальные сигналы исходящие от включенных в аранжировку инструментов, можно просто–напросто убрать, и никто этого не заметит.
А в некоторых случаях, в соответствии с той же психоакустической моделью, можно удалять доли перед, и после звучания громких звуков, так как в этот период у всех людей наступает кратковременная (буквально на несколько сотых секунды) глухота.
Потом идет распределение звуков по каналам. Это происходит не без потерь в детализации, с помощью специальных формул, которые вы можете посмотреть на картинке (упрощено). Разница в звучании каждого из каналов сводится почти к нулю с целью сэкономить еще одну сотню-другую байт.
В конце каждый из сжатых фреймов аудиозаписи закодированные одинаковыми символами (например нулями), сокращаются до минимальных размеров при помощи метода кода Хаффмана. В процессе его работы дополнительная информация не теряется, просто к каждому из значений фреймов присваивается какой-то код, в зависимости от того, сколько раз то или иное число в нем встречается. Далее все оставшиеся куски нашей аудиозаписи склеиваются и на выходе образуют привычный нам аудио–файл.
Спасибо, что дочитали до конца теперь мы разобрались с тем, как устроен один из самых распространенных аудиоформатов. B следующей статье мы рассмотрим процесс сжатия видео.
Внутри MP3. А как оно всё устроено?
Однажды мне понадобилось решить простенькую (как мне тогда казалось) задачу – в PHP-скрипте узнать длительность mp3-файла. Я слышал о ID3 тегах и сразу подумал, что информация о длительности хранится либо в тегах, либо в заголовках mp3-файла. Поверхностные поиски в интернете показали что за пару-тройку минут решить эту задачу не получится. Поскольку от природы я довольно любопытен а время не поджимало — решил не использовать сторонние инструменты а разобраться в одном из самых популярных форматов самостоятельно.
Если Вам интересно, что там внутри – добро пожаловать под кат (трафик).
В данной статье мы не будем подробно останавливаться на извлечении ID3v2 тегов – это можно вынести в отдельную статью, так как там есть различные нюансы. А так же на фрагментах заголовков, которые практически не используются в настоящее время (например, часть Emphasis заголовка mp3-фрейма). Так же мы не рассматриваем структуру самих аудиоданных — тех самых, которые слышим из колонок.
ID3 теги
ID3 (от англ. Identify a MP3) — формат метаданных, наиболее часто используемый в звуковых файлах в формате MP3. ID3 подпись содержит данные о названии трека, альбома, имени исполнителя и т. д., которые используются мультимедиапроигрывателями и другими программами, а также аппаратными проигрывателями, для отображения информации о файле и автоматического упорядочивания аудиоколлекции.
Существует две абсолютно разных версии ID3-данных: ID3v1 и ID3v2.
ID3v1 – имеет фиксированный размер в 128 байт, которые дописываются в конец mp3-файла. Там можно хранить: название трека, исполнитель, альбом, год, комментарий, номер трека (для версии 1.1) и жанр.
Довольно быстро всем стало понятно, что 128 байт – очень уж небольшое место для хранения таких данных. И поэтому, со временем, появилась и успешно используется вторая версия данных – ID3v2.
В отличии от первой версии, теги v2 имеют переменную длину и размещаются в начале файла, что позволяет поддерживать потоковое воспроизведение. (Формат ID3v2.4 позволяет так же хранить данные и в конце файла).
Данные ID3v2 состоят из заголовка и последующих фреймов ID3v2. Например, в версии ID3v2.3 существует более 70 типов фреймов.
В данном случае вместе с заголовком ID3v2 (10 байт) – данные ID3v2 занимают 1024 байта.
После ID3v2-заголовка идут собственно теги. Подробный разбор чтения тегов ID3v2, как сказано выше, я решил не включать в эту статью.
Теперь у нас есть информация о наличии и длине тегов ID3 и мы можем приступать в разбору mp3-фрейма и понять-таки – где же хранится длительность. А заодно понять и всё остальное.
MP3-фрейм
Весь mp3-файл состоит из фреймов, которые можно извлекать только последовательно. Фрейм содержит в себе заголовок и аудио-данные. Поскольку мы не ставим себе целью написать прошивку для магнитофона – нас интересует именно заголовок фрейма.
О нем подробнее (куча таблиц и сухой информации)
Размер заголовка – 4 байта.
Режимы сжатия данных или какой бывает битрейт
Существует 3 режима сжатия данных:
CBR (constant bitrate) – постоянный битрейт. Не меняется на всем протяжении трека.
VBR (variable bitrate) – переменный битрейт. При этом сжатии битрейт постоянно меняется на протяжении трека.
ABR (average bitrate) – усредненный битрейт. Это понятие используется только при кодировании файла. На «выходе» получается файл с VBR.
Длительность = Размер аудиоданных / Битрейт (в битах!) * 8
Например, файл имеет размер 350670 байт. Есть ID3v1 теги (128 байт) и ID3v2 теги (1024 байта). Битрейт = 96. Следовательно размер аудиоданных равен 350670 – 128 – 1024 = 349518 байт.
Длительность = 349518 / 96000 * 8 = 29,1265 = 29 секунд
Необходимо пояснить – как определить режим сжатия. Всё просто. Если файл сжат с VBR – то добавляется VBR-заголовок. По его наличию мы и можем понять, что используется переменный битрейт.
Есть два вида заголовков: Xing и VBRI.
Xing размещается со смещением от начала первого mp3-фрейма в позиции, согласно таблице:
Например: у нас ID3v2 тег занимает 1024 байта. Если наш mp3-файл имеет режим канала «Стерео» — то заголовок VBR Xing будет начинаться со смещения 1024 + 32 = 1056 байт.
Заголовок VBRI всегда размещается со смещением +32 байта от начала первого mp3-фрейма.
Первые четыре байта в обоих заголовках содержат маркер ‘Xing’ или ‘Info’ для Xing. И ‘VBRI’ для VBRI.
Эти VBR заголовки имеют переменную длину и содержат различную информацию о кодировании файла. Подробнее о структуре заголовков VBR (и не только) можно почитать, например, тут.
Я же расскажу только о том, что нас интересует в данный момент. А именно – количество фреймов (Number of Frames). Это число длиной 4 байта.
В заголовке Xing оно содержится по смещению +8 байт от начала заголовка. В VBRI +14 байт от начала заголовка.
Используя таблицу Сэмплов на фрейм (Sampler Per Frame) мы можем получить длительность mp3-файла, закодированного с переменным битрейтом.
Длительность = Количество фреймов * Сэмплов на фрейм / Частоту дискретизации
Например: из заголовка VBRI получили количество фреймов 1118, сэмплов на фрейм = 1152. Частота дискретизации = 44100.
Длительность = 1118 * 1152 / 44100 = 29.204 = 29 секунд.
На этом на сегодня всё. Если был кому-то полезен — спасибо.
Для тех, кто захочет немедленно поковырять внутренности mp3 — Тут лежат скрипт на php, которые я писал для себя одновременно с данной статьей и четыре небольших mp3-файла для теста.
Понятно об MP3 кодировании
Copyright (C) 2012, Audiophile
От неизвестности к повсеместности
Со времен своей стандартизации в 1991-м MP3 прошел путь от малоизвестной части видео файла до такой распространенности, о которой большинство проектов может только мечтать. Он везде – на полках магазинов с плеерами, на устах политиков и адвокатов, защищающих интеллектуальную собственность.
Но что такое MP3? Чаще всего ответ бывает двух типов. Первый, длинный – техническая документация полная характерной терминологии и переполненная математикой. Второй, краткий, чаще всего используемый нетехническими периодическими изданиями; обычно в нем говорится, что в процессе преобразования удаляются звуковые составляющие, как правило не воспринимаемые человеческим ухом. Но это единственное предложение вызывает больше вопросов, чем дает ответов, для любого более-менее технически образованного читателя. Каким образом происходит выбор этих неслышимых звуков и как они удаляются? Какая разница между различными битрейтами и уровнями качества? Если Вы чем-то походите на меня, то Вы тоже хотели бы знать механизм работы MP3, но конечно не до такой степени, чтобы суметь написать свой собственный кодер.
Эта статья – попытка объяснить процесс MP3 компрессии доступными терминами, но не слишком упрощая. Хотя, отдельные этапы (такие как подробности схемы стерео кодирования и углубление в структуру файла) всё же опущены, эта статья включает в себя базовую теорию получения из несжатого аудио файла звука сжатого в MP3. Для того чтобы в процессе экскурса в кодек MP3 не перегружать вас техническими мелочами, мы рассмотрим изначальные принципы кодирования MP3 и его предшественников, затем перейдем к анализу и сжатию и, наконец, к влиянию этого формата на цифровой звук в целом.
Слушай
В зависимости от количества концертов, которые Вы посетили, Ваши уши могут быть в более или менее хорошем для Вашего возраста состоянии. Но даже если они в прекрасной форме, человеческий слух всё равно имеет определенные ограничения. Тесты обычно показывают, что в лучшем случае мы можем слышать частоты в диапазоне от 20 до 20000 Гц. Также наши уши более чувствительны к частотам в пределах 2-5 кГц и могут в данном диапазоне определять изменение частоты на 2 Гц – это и есть эффективное «разрешение» слуха. По мере того как человек стареет или чувствительные клетки уха поражаются громкими звуками, верхний частотный порог слышимости снижается. Фактически, большинство взрослых (включая меня) имеет проблемы с восприятием частот выше 16 кГц.
И это только физические ограничения человеческого уха. Наш мозг тоже играет роль в фильтрации и анализе сигналов получаемых по слуховому нерву. Наука, изучающая восприятие звука человеком, называется психоакустика, и она открыла несколько полезных слуховых эффектов. Например, мой любимый – эффект Хааса, заключающийся в том, что два одинаковых звука приходящих с промежутком в 30-40 мс из разных источников, будут восприниматься как один, звучащий из первого источника. Этот эффект часто используется на публичных выступлениях, чтобы усилить звук идущий со сцены – даже если дополнительные источники находятся далеко в стороне. MP3, как и многие другие алгоритмы кодирования с потерями, во многом опирается на подобные психоакустические эффекты. В частности, он использует явление частотной маскировки.
Представьте два звука несильно отличающихся по частоте – скажем, 100 и 110 Гц – но разных по мощности. По отдельности более тихий звук прекрасно слышен, но если оба звука воспроизвести одновременно, слышен будет лишь тот, который громче. Процесс сокрытия одной частоты другой близкой по значению (но не идентичной) называется частотной маскировкой. Степень, в которой одни частоты могут маскировать другие, зависит от частотного диапазона – наши уши менее чувствительны в области низких и высоких частот. Громкие переходные сигналы (щелчки и пр. – сигналы с очень короткой длительностью) также могут маскировать более тихие звуки на небольшое время, как в случае с эффектом Хааса. Этот тип маскировки называется временнОй и также используется в MP3 сжатии.
Пережитки прошлого
Еще одна вещь, которую необходимо помнить, изучая работу алгоритма MP3: он является непосредственным наследником более старых алгоритмов компрессии, что в значительной мере повлияло на его устройство. MP3 расшифровывается как MPEG-1 Audio Layer 3. MPEG, в свою очередь, расшифровывается как Moving Pictures Expert Group – это название группы создавшей стандарт. MPEG видео (а также его преемники MPEG-2 и MPEG-4) используется повсеместно – DVD представляет собой модифицированную версию MPEG-2, коим также является сигнал цифрового ТВ.
Кроме третьего слоя (Layer 3) спецификации MPEG-1, существуют и два предыдущих, которые, однако, не прижились среди пользователей (согласитесь, немногие из нас слушают дома MP2). В MP3 есть некоторые функции, которые явно безосновательно усложнены и выполняются в значительно большее количество этапов, чем необходимо, чаще всего это и есть пережитки прошлого – наследие полученное от предшественников. Таким образом, алгоритм MP3 не лишен недостатков и порой слабо рационализирован.
Это является большим оправданием для меня, как для автора, честно. Так что, если у вас проблемы с пониманием процессов описанных в этой статье, не вините меня за скудные пояснения, вините Layer 2.
Анализируй
Что ж, давайте начнем с обычного звукового файла в виде несжатого PCM аудио. Для простоты предположим, что и этот файл, и MP3 будут иметь одну частоту семплирования – MP3 поддерживает различные частоты дискретизации, но наиболее распространенной является частота дискретизации Audio CD – 44.1 кГц.
Первым этапом является группировка этих семплов во фреймы, каждый из которых содержит 1152 семпла. Почему 1152? Это очередная дань прошлому – обратной совместимости с Layer 2. Технически фреймы у Layer 3 разделены на две гранулы по 576 семплов. Это такой себе клудж («ляп»), который был устранен в более новых кодерах: когда создавался стандарт MPEG-2 видео его звуковая часть использовала одну гранулу (1152 семпла) в каждом фрейме. В целях кодирования MP3 на самом деле использует в каждый момент времени только одну гранулу, хотя он может частично использовать предыдущие и последующие гранулы – с тем чтобы более тщательно анализировать поведение сигнала.
Далее эти семплы проходят через банк фильтров, который разделяет звук на 32 частотных диапазона (в некоторых программах для обработки звука это называется полосовым фильтром – bandpass filter). Это также является наследием от Layer 2, который фактически использовал эти 32 полосы частот для кодирования. Одним из достоинств Layer 3 является то, что он дополнительно разделяет каждый из этих 32-х диапазонов еще на 18 частотных полос, создавая 576 меньших, адаптивных полос. Каждая из этих полос содержит 1/576-ю часть исходного частотного диапазона.
На данном этапе протекает два параллельных процесса: модифицированное дискретное косинус-преобразование (МДКП, MDCT) и быстрое преобразование Фурье (БПФ, FFT). Математика этих процессов весьма сложна, но объяснить их можно и более-менее простым языком.
FFT используется как функция анализа, преобразовывая каждую полосу частот в информацию, которая может быть передана психоакустической модели кодера (что-то вроде виртуального человеческого уха). Кодер использует эту модель чтобы ответить на такие вопросы как: есть ли в каждой отдельной полосе частот звуки ниже порога маскировки (которые будут скрыты более громкими звуками близкими по частоте)? Является ли звук более-менее постоянным или он изменяется? Имеются ли какие-то резкие всплески (щелчки, транзиенты), которые должны быть сохранены и которые должны скрыть другие всплески до или после? Эта информация будет использоваться на протяжении сжатия чтобы выяснить, какие данные (согласно психоакустической модели) могут быть исключены без ущерба для воспринимаемого нашим ухом звучания.
Перед переходом к параллельно протекающему MDCT преобразованию фрагменты аудио сортируются по сложности – в зависимости от динамики содержащегося в них сигнала. MP3 позволяет описывать частотные полосы, используя один из двух типов блоков (т.н. windows) – длинный или короткий. Постоянный, не изменяющийся со временем сигнал может быть описан с помощью одного длинного блока. Транзиенты же – например, ударные инструменты или согласные звуки в человеческой речи – описываются с помощью трех коротких блоков (каждый из которых содержит по 192 семпла – примерно 4 миллисекунды).
MDCT преобразовывает разбитую на блоки полосу частот в последовательность спектральных значений. В отличии от обычного представления аудио – где сигнал описывается уровнем звукового давления в заданные моменты времени – спектральный анализ описывает звук как распределение мощности по диапазонам частот на каждом отдельном промежутке времени.
Перед Вами спектрограмма – спектральное представление звукового файла. Частоты, на которые приходится больше мощности (энергии) изображаются более ярким цветом. Снизу-вверх – низкие/высокие частоты, по горизонтали откладывается время.
Поскольку спектральное представление сигнала имеет большее сходство со слуховым восприятием звука, большинство lossy кодеров используют именно его для исключения неслышимых человеком частотных составляющих, вместо того чтобы оперировать дискретизированной звуковой волной. Как только MDCT преобразование завершается, MP3 имеет в своем распоряжении 576 «бинов», каждое из которых описывает интенсивность 1/576 части всего спектрального диапазона.
Теперь, когда у кодера есть спектральная информация и результаты психоакустического анализа гранулы, начинается собственно сам процесс сжатия.
Холодное сжатие
MP3 опирается на два типа компрессии, только один из которых использует психоакустический анализ. Психоакустическая компрессия идеальна для уменьшения сложных по характеру звуков с большим количеством составляющих, т.к. они предоставляют широкие возможности маскировки. Более простые звуки не выигрывают по степени сжатия от психоакустики, но очень легко сжимаются с использованием более традиционных методов компрессии. Совмещение обоих подходов требует двух-проходного процесса квантования и кодирования по Хаффману, взаимодействие которых обеспечивает впечатляющую гибкость сжатия.
Слово «квантование» звучит весьма пугающе, но сводится это к процессу количественной оценки, иначе говоря, к присваиванию определенного численного значения. «Но у нас уже есть числа» – возразите Вы. Это так. Но MP3 не был бы алгоритмом компрессии, если бы только преобразовывал числовые данные из одной формы в другую.
И так, 576 бинов, полученных после MDCT преобразования, распределяются на 22 масштабнокоэффициентных полосы (scalefactor bands). Путем деления каждого значения в каждой отдельной полосе на заданное число (квантователь), достигается некоторая аппроксимация исходных значений, при этом часть информации из-за ошибки квантования теряется. Квантование одинаково для всего частотного спектра, но для каждой масштабнокоэффициентной полосы используется свой коэффициент масштабирования, т.е. своя точность. Большие значения меньше теряют в точности при процессе квантования, в то время как небольшие значения в значительной степени страдают от ошибки квантования. В процессе декодирования масштабирование компенсируется, потому на уровне громкости квантование практически не сказывается.
Быстрое преобразование Фурье (FFT) выполнялось именно с тем, чтобы в дальнейшем иметь возможность задавать точность необходимую для каждой масштабнокоэффициентной полосы. Если в полосе имеются слабые сигналы, которые будут маскироваться в данной полосе более сильным, коэффициент масштабирования данной полосы может быть уменьшен таким образом, что маскируемые сигналы будут исключены. К сожалению, ошибка квантования также имеет слышимый эффект (проявляется как шум), и, чем меньше уровень масштабированного сигнала, тем выше будет уровень шума после восстановления исходной амплитуды. Таким образом, вторая функция психоакустической модели – отслеживать, когда соотношение сигнал/шум станет таким, что впоследствии сможет восприниматься на слух. Когда это происходит, кодер возвращается к этапу квантования и увеличивает точность аппроксимации (коэффициент масштабирования).
Это может показаться сложным и непонятным, так что давайте рассмотрим данный процесс на гипотетическом примере. Пусть наша информация о несжатой масштабнокоэффициентной полосе представлена числом 12592. И мы должны произвести квантование путем деления на 100. Таким образом, при масштабном коэффициенте 1.0 (без изменений), мы запишем это значение как (12592*1.0)/100 = 126, в дальнейшем, восстанавливая значение при декомпрессии (умножая его на исходный квантователь), мы получим 12600. Мы пожертвовали точностью и внесли небольшой шум квантования – наше число отличается от исходного на 8, но всё равно очень близко к нему.
В случае если мы можем позволить себе более низкую точность и более высокий шум, можно масштабировать входные данные с помощью множителя 0.1 – получим 1259. После квантования (квантователь – 100) получим 13. Восстанавливая значение, мы используем как квантователь, так и масштабный коэффициент, получая на выходе (13*100 )/0.1 = 13000. Теперь мы потеряли немного больше информации, но вполне возможно, что эти потери не будут заметны – это зависит от конкретного случая. Но главное, что эти короткие значения занимают меньше места в файле, особенно в сочетании со следующим этапом сжатия.
В то же время, вместе с квантованием и масштабированием MP3 кодер также использует кодирование по Хаффману – с тем чтобы преобразовать информацию о масштабнокоэффициентных полосах в более короткие двоичные строки. Кодирование Хаффмана (названное так в честь кандидата наук Массачусетского института технологий, разработавшего этот метод в 1952-м году) представляет из себя что-то вроде дедуктивной игры «двадцать вопросов» в двоичном коде. Начиная с верха дерева, содержащего все возможные ответы, компьютер считывает информацию, спускаясь вниз по ветвям, каждой из которых присвоено значение 0 или 1. Ответы содержатся в конце ветви, так что, как только компьютер считывает верный ответ, он прекращает движение по ветви.
Наиболее вероятные ответы расположены близко к вершине (как на примере ниже, который иллюстрирует кодирование наиболее часто встречающихся букв английского языка). Ключевым моментом является именно то, что алгоритм прекращает перемещение по ветви, как только находит ответ. Наиболее часто встречающиеся ответы могут быть записаны в виде очень коротких значений (в примере ниже, если код начинается с 1 вместо 0, записывается буква «Е» и немедленно выполняется переход к следующей последовательности).
Эти коды могут быть изображены в виде дерева, но для компьютерной программы они – обычная таблица, и как только компьютер находит совпадение, он переходит к следующему символу.
| E | 1 |
| T | 00 |
| A | 0111 |
| O | 0110 |
| N | 0101 |
| R | 01001 |
| I | 01000 |
MP3 использует несколько таблиц Хаффмана для квантованных значений и может выбирать разные таблицы для представления различных масштабнокоэффициентных полос. Меньшие (менее точные) значения располагаются вверху таблиц. Используя таблицы Хаффмана, кодер регулирует качество для получения на выходе заданного битрейта. Если в конце этапа квантования он обнаруживает, что блок кодированных битов длиннее, чем позволяет битрейт гранулы, кодер возвращается к регулировке коэффициента масштабирования и уменьшает его (таким образом получая на выходе меньше битов, в т.ч. после сжатия по Хаффману). С другой стороны, если кодер не достигает установленного битрейта, он опять же возвращается и увеличивает уровень отдельных частот, тем самым повышая точность квантования.
Вот, в общем-то, и всё, что необходимо для кодирования гранулы. Каждая гранула состоит из двух частей необходимых для восстановления аудио: масштабные коэффициенты для каждой полосы и длинная последовательность битов Хаффмана. Но, как говорилось ранее, MP3 базируется на фреймах, каждый из которых включает две гранулы. После завершения двух гранул, кодер объединяет их в один фрейм для передачи. MP3 файлы имеют довольно простую структуру, с большим количеством аудио данных и ID3 метаданными (тегами) записанными в начале файла.
Кроме того, фрейм также содержит в своем заголовке большое количество вспомогательной информации. Например, здесь содержится код синхронизации, которым начинается каждый фрейм, именно поэтому декодеры могут проигрывать частично поврежденные файлы. После синхрокода в фрейме находится информация о битрейте, что позволяет некоторым фреймам использовать больший битрейт, если они содержат больше информации (VBR кодирование). Ну и, наконец, в заголовке фрейма располагается информация о количестве каналов (стерео или моно), частоте дискретизации (семплирования), а также пометка о защите материала авторскими правами.
И так, теперь, когда мы рассмотрели процесс преобразования цифрового звука в MP3, Вам наверное интересно, каким образом происходит обратное преобразование. Хотя структура декодера и не является полной инверсией кодера, она близка к этому. При декодировании биты Хаффмана преобразовываются обратно в квантованную информацию, масштабируются до исходного уровня, а затем складываются друг с другом, давая на выходе поток PCM (ИКМ – импульсно-кодовая модуляция) семплов, которые могут быть воспроизведены с помощью обычной звуковой карты.
Превращение
Переход к MP3 оказал небывалое влияние на цифровой звук. Мало того, что он поспособствовал повсеместному распространению портативных плееров, он также оказался в центре всех дискуссий на тему интеллектуальной собственности и пиратства. Конечно, были умельцы, которые распространяли музыку в громоздких WAV и AIFF форматах через группы новостей (IRC, etc), но возникла новая, простая в использовании пиринговая файлообменная сеть Napster, которая стала одной из торговых марок, связывающих музыкальную индустрию с потребителем. В то же время, MP3 поспособствовал созданию новой онлайновой системе дистрибуции, которая (в некоторой мере) демократизировала музыку и радио через MySpace и подкасты.
Могло ли это всё произойти без MP3? Почти наверняка. В конце концов кто-то популяризировал бы другой метод уменьшения размеров аудио файлов, или же проблему свело бы на нет увеличение пропускной способности сетей. P2P сети могли бы задержаться в развитии, но они всё равно бы появились, дабы мы с Вами могли воспользоваться преимуществами распространения цифрового контента. Тем не менее, вполне вероятно, что формат, который занял бы место MP3, скорей всего использовал бы те же самые базовые принципы, включая психоакустическое моделирование и сжатие данных.
В самом деле, это поразительно: как много важнейших элементов MP3 отсылает нас к теоретическим трудам более чем полувековой давности. Кодирование Хаффмана датировано 1952-м годом. Новаторская работа Клода Шеннона на тему сжатия с потерями и соотношений сигнал/шум была написана во время Второй мировой войны. Исследования ограничений человеческого слуха и восприятия – например, эффекта Хааса и кривых равной громкости – и того старше. Теорема Гарри Найквиста была открыта в 1927-м и предназначалась для связи по телеграфу! Так или иначе, MP3 – это отнюдь не новое изобретение, но принявшее современную форму.
И все же MP3 удалось сохранить свои позиции на потребительской арене, даже не смотря на появлении новых, технически более совершенных форматов. В последнее время, особенно с появлением цифрового управления правами (DRM), появилось большое количество форматов – как с открытым исходным кодом, так и проприетарных – но MP3 всё равно продолжает оставаться в интернете стандартом де-факто, и нет никаких предпосылок для изменения нынешнего положения вещей. Не смотря на то что MP3 может быть презираем поклонниками аналогового и lossless аудио за вносимые им искажения, надо признать, что он в корне изменил наше представление о музыке и звуке в целом.




















