Есть ли разница между аудио форматами MP3, AAC, FLAC и какой нужно использовать? Рисуем волну.wav-файла.

Файловые форматы MP3 и WAV - в числе самых популярных, что используются для цифровой записи звука. Насколько они схожи друг с другом?

Факты об MP3

MP3 - это мультимедийный файловый формат записи звука. Характеризуется большой универсальностью: его поддерживают практически все современные операционные системы ПК, мобильных девайсов, многие традиционные устройства для проигрывания музыки - MP3- и CD-плееры, проигрыватели, музыкальные центры.

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

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

Факты о WAV

Формат WAV также используется для цифровой записи звука. В универсальности не уступает MP3 и поддерживается основными типами современных девайсов.

Данный формат предназначен, в свою очередь, для записи аудиоданных без сжатия. Таким образом, размер WAV-файлов практически всегда намного больше, чем MP3 с аналогичным содержимым. По уровню качества WAV-звук приближен к оригинальному - при условии, что он будет воспроизводиться на высокотехнологичном оборудовании.

Формат WAV востребован главным образом в сфере услуг по профессиональной обработке аудио: для фильмов, студийных альбомов, в игровой индустрии - везде, где предполагается работа с высококачественным звуком. Также файлы WAV популярны в среде меломанов, которые, к слову, в большинстве случаев очень легко определяют на слух разницу между мелодиями, записанными в MP3 и WAV.

Сравнение

Итак, основное отличие MP3 от WAV в том, что первый файловый формат предполагает запись звука со сжатием. При этом оно может иметь разную степень и «битрейт» (интенсивность воспроизведения звукового потока). Которые, в свою очередь, во всех случаях одинаковы для WAV-файлов.

Считается, что несжатый звук в формате WAV имеет битрейт порядка 1400 Кбит/сек. По качеству он примерно соответствует аудио, записанному на CD. В свою очередь, битрейт MP3-файлов может варьироваться: максимальный показатель составляет 320 Кбит/сек, минимальный - около 8-16 Кбит/сек. Те значения, что ниже, как правило, обеспечивают неприемлемый уровень качества звука - человек с трудом способен различать ноты в мелодиях, которые записаны в подобном битрейте.

Насколько могут различаться размеры файлов, записанных в формате MP3 и WAV?

Запись звука в MP3 длительностью в 1 минуту при максимальном качестве - 320 Кбит/сек - имеет объем порядка 2 мегабайт. Соответственно, 1 минута аудиопотока в формате WAV сформирует файл величиной около 9 мегабайт.

Таблица

Итак, теперь мы знаем, в чем разница между MP3 и WAV. Зафиксируем основные критерии, предопределяющие соответствующие различия, в небольшой таблице.

Данные, имеющие отношение к мультимедиа (звук, видео и т. п.) хранятся в файлах в так называемом RIFF-формате (Resource Interchange File Format - формат файла для обмена ресурсами). Как wav-файлы, содержащие звук, так и avi-файлы, содержащие видеоинформацию, имеют формат RIFF.
Файл в формате RIFF содержит вложенные фрагменты (chunk"s). Внешний фрагмент состоит из заголовка и области данных (рис. 1).

Рис. 1. Фрагмент "RIFF"

Первое двойное слово заголовка содержит четырехбуквенный код FOURCC, который идентифицирует данные, хранящиеся во фрагменте. Второе двойное слово заголовка - размер области данных в байтах (без учета размера самого заголовка).
Область данных имеет переменную длину, однако она должна быть выравнена на границу слова и при необходимости дополнена в конце нулевым байтом до целого числа слов.
Заметим, что формат RIFF не описывает формат данных. Практически файл в формате RIFF может содержать любые данные для мультимедиа, причем формат данных зависит от типа данных.
Область, обозначенная на рис. 1 как "Данные", может содержать внутри себя другие фрагменты. Для файла, в котором хранятся звуковые данные (wav-файл), эта область содержит идентификатор данных "WAVE", фрагмент формата звуковых данных "fmt " (три символа "fmt" и пробел на конце), а также фрагмент звуковых данных (рис. 2). Файл может дополнительно содержать фрагменты других типов, поэтому не следует думать, что заголовок wav-файла имеет фиксированный формат. Например, в файле может присутствовать фрагмент "LIST" или "INFO", содержащий информацию о правах копирования и другую дополнительную информацию. Мы не будем рассматривать форматы других фрагментов, при необходимости вы можете узнать их из документации, которая поставляется в составе Microsoft SDK for Windows.

DWORD

DWORD

"RIFF"

Размер

Данные
"WAVE" "fmt " Размер Формат данных Фрагмент "data"
"data" Размер Звуковые данные

Рис. 2. Формат wav-файла

Область, обозначенная на рис. 2 как "Формат данных", описывает звуковые данные. Формат этой области для файлов РСМ (записанных с использованием импульсно-кодовой модуляции) соответствует структуре PCMWAVEFORMAT, определенной в файле mmsystem.h следующим образом:

Typedef struct pcinwaveformat_tag {
WAVEFORMAT wf;
WORD vBitsPerSample;
} PCMWAVEFORMAT;

Typedef PCMWAVEFORMAT *PPCMWAVEFORMAT;

Структура WAVEFORMAT также описана в файле mmsystem.h:

Typedef struct waveformat_tag {
WORD wFormatTag; // тип формата
WORD nChannels; // количество каналов (моно или стeрео)
DWORD nSamplesPerSec; // частота дискретизации
DWORD nAvgBytesPerSec; // скорость потока данных
WORD nBlockAlign; // выравнивание блока данных
} WAVEFORMAT;

Typedef WAVEFORMAT *PWAVEFORMAT;

Поле wFormatTag описывает тип формата звуковых данных. Для импульсно-кодовой модуляции РСМ, которая поддерживается стандартной библиотекой mmsystem.dll, в этом поле должно находиться значение WAVE_FORMAT_PCM, определенное в файле mmsystem.h:

#define WAVE_FORMAT_PCM 1

Поле nChannels содержит количество каналов. В нем могут находиться значение 1 (моно) или 2 (стерео).
В поле nSamplesPerSec записана частота дискретизации, то есть количество выборок сигнала в секунду. В этом поле могут находиться стандартные значения (11025 кГц, 22 050 кГц или 44100 кГц) либо нестандартные значения, такие, как 5000 кГц или 4400 кГц. Учтите, что не все драйверы звуковых адаптеров могут
работать с нестандартными частотами дискретизации.
Поле nAvgBytesPerSec содержит среднюю скорость потока данных, то есть количество байт в секунду, передаваемых драйверу устройства или получаемых от него. Эта информация может быть использована приложением для оценки размера буфера, необходимого для размещения звуковых данных. Для монофонического сигнала с дискретностью 8 бит численное значение скорости совпадает со значением частоты дискретизации. Для стереофонического сигнала с дискретностью 8 бит она в два раза выше. Точное значение вы можете подсчитать по формуле

NAvgBytesPerSec = (nChannels * nSamplesPerSec * wBitsPerSanipIe) / 8

В поле nBlockAlign находится выравнивание блока в байтах, которое подсчитывается по формуле

NBlockAlign = (nChannels * wBitsPerSample) / 8

Поле wBitsPerSainple находится в структуре PCMWAVEFORMAT и содержит дискретность сигнала, то есть количество бит, используемых для представления одной выборки сигнала. Обычно используются значение 8 или 16.
Что же касается формата самих звуковых данных, то он зависит от количества каналов и от дискретности.
Для монофонического сигнала с дискретностью 8 бит звуковые данные пред ставляют собой массив однобайтовых значений, каждое из которых является выбор-кой сигнала.
Для стереофонического сигнала с дискретностью 8 бит звуковые данных имеют формат массива двухбайтовых слов, причем младший байт слова соответствует левому каналу, а старший - правому.
Формат звуковых данных с дискретностью 16 бит выглядит аналогично. Для монофонического сигнала данные хранятся в массиве 16-битовых слов. Для стерео-фонического используется массив двойных слов, причем младшему слову соот-ветствует левый канал, а старшему - правый.
Диапазон изменения значений выборок сигнала определяется дискретизацией. Для 8-битовых данных он составляет от 0 до 255 (Охff), причем отсутствию сигнала (полной тишине) соответствует значение 128 (0х80). Для 16-битовых данных диапа-зон изменения составляет от -32768 (-0х8000) до 32767, (Ox7fff), отсутствию сигнала соответствует значение 0.

Несжатые звуковые файлы в формате RAW (PCM) и в форматах WAV и Apple AIFF. Контейнер RIFF и структура файла WAV.

Читайте также:
  1. II. Структура Системы сертификации ГОСТ Р и функции ее участников
  2. PR в государственных структурах и ведомствах. PR в финансовой сфере. PR в коммерческих организациях социальной сферы (культуры, спорта, образования, здравоохранения)
  3. Активы таможенных органов: понятие, структура и особенности
  4. Анализ финансового положения предприятия. Структура и порядок формирования финансового результата.
  5. Анимационный сервис, его структура и роль в социально-культурном сервисе и туризме.
  6. Апарат вищого спеціалізованого суду: структура і повноваження.

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

PCM расшифровывается как импульсно-кодовая модуляция (pulse code modulation) и обеспечивает цифровое представление аналогового сигнала, который дискретизируется (оцифровывается) через равные промежутки времени (с заданной в герцах частотой) и представляется в двоичном виде (с заданной точностью - разрядностью в битах). Помимо использования PCM для цифрового звука в компьютере и на аудио компакт-дисках, данный формат применяется также в некоторых цифровых телефонных системах и в ряде форматов цифрового видео.

В формате PCM значения амплитуды звука представлены с помощью разного числа битов (разрядности); звуковая дорожка, как правило, оцифровывается с разрядностью от 12 до 24 бит, но чаще всего при студийном кодировании PCM-аудио для записи на диски Blu-ray используются 16 бит.

WAV (WAVE) - формат файла-контейнера для хранения записи оцифрованного аудио-потока. Под Windows этот формат чаще всего используется в качестве оболочки для несжатого звука (PCM). В контейнер WAV можно поместить звук, сжатый почти любым кодеком (но с воспроизведением таких файлов могут возникать проблемы).

Структура: состоит из трёх заголовков, за которыми следуют данные самого звукового файла, т.е. последовательность байт самого звукового сигнала.

Первый - RIFF заголовок. Он занимает 8 байт с самого начала файла и содержит информацию о длине файла

Второй заголовок - WAV заголовок, содержит информацию о кол-ве каналов (моно или стерео)

Третий заголовок – информацию о кол-ве байт, отводящихся под сами WAV данные

Apple AIFF. Это стандартный формат файлов для сохранения аудиоданных на платформе Macintosh. Его особенностью является то, что он позволяет размещать вместе со звуковой волной дополнительную информацию, в частности, самплы WaveTable (примеры звучания инструментов вместе с параметрами синтезатора), что улучшает качество итогового результата.

Звуковые данные в стандартном файле формата AIFF представляют собой несжатую импульсно-кодовую модуляцию. Также существует и сжатая версия формата AIFF, которую называют AIFC (изредка AIFF-C), в которой для сжатия могут быть использованы различные кодеки.



AIFF, наряду с SDII и WAV, является одним из форматов используемых в профессиональных аудио и видео приложениях, так как в отличие от более популярного формата mp3 в нём звук не имеет потерь в качестве.

RIFF - один из форматов файлов-контейнеров для хранения потоковых мультимедиа-данных (видео, аудио, возможно текст). Наиболее известными форматами, использующими RIFF в качестве контейнера, являются: AVI (видео), WAV (аудио), RMI (MIDI-треки).

RIFF имеет ограничение размера данных в 2 ГБ.

Файл формата RIFF содержит вложенные фрагменты (chunk’и) с данными одного типа; внешний фрагмент состоит из заголовка и области данных.

Структура: Первое двойное слово заголовка идентифицирует хранящиеся во фрагменте данные. Второе двойное слово заголовка представляет собой размер области данных в байтах (без учета размера самого заголовка).

Область данных имеет переменную длину, однако она должна быть выравнена на границу слова (при необходимости дополняется в конце нулевым байтом до целого числа слов).

Представляем вашему вниманию статью с подробным разбором заголовка WAV-файла и его структуры.

Теория

Итак, рассмотрим самый обычный WAV файл (Windows PCM). Он представляет собой две, четко делящиеся, области. Одна из них – заголовок файла, другая – область данных. В заголовке файла хранится информация о:

  • Размере файла.
  • Количестве каналов.
  • Частоте дискретизации.
  • Количестве бит в сэмпле (эту величину еще называют глубиной звучания).

Но для большего понимания смысла величин в заголовке следует еще рассказать об области данных и оцифровке звука. Звук состоит из колебаний, которые при оцифровке приобретают ступенчатый вид. Этот вид обусловлен тем, что компьютер может воспроизводить в любой короткий промежуток времени звук определенной амплитуды (громкости) и этот короткий момент далеко не бесконечно короткий. Продолжительность этого промежутка и определяет частота дискретизации. Например, у нас файл с частотой дискретизации 44.1 kHz, это значит, что тот короткий промежуток времени равен 1/44100 секунды (следует из размерности величины Гц = 1/с). Современные звуковые карты поддерживают частоту дискретизации до 192 kHz. Так, со временем разобрались.

Теперь, что касается амплитуды (громкости звука в коротком промежутке времени). От нее, я бы сказал, зависит точность звука. Амплитуда выражается числом, занимаемым в памяти (файле) 8, 16, 24, 32 бит (теоретически можно и больше). Как известно, 8 бит = 1 байту, следовательно, какая-то одна амплитуда в какой-то короткий промежуток времени в памяти (файле) может занимать 1, 2, 3, 4 байта соответственно. Таким образом, чем больше число занимает места в памяти (файле), тем больше диапазон значений для этого числа, а значит и для амплитуды.

  • 1 байт – 0..255
  • 2 байта – 0..65 535
  • 3 байта – 0..16 777 216
  • 4 байта – 0..4 294 967 296

В моно варианте значения амплитуды расположены последовательно. В стерео же, например, сначала идет значение амплитуды для левого канала, затем для правого, затем снова для левого и так далее.

Совокупность амплитуды и короткого промежутка времени носит название сэмпл.

Теперь таблица, наглядно показывающая структуру WAV файла.

Местоположение Поле Описание
0..3 (4 байта) chunkId Содержит символы “RIFF” в ASCII кодировке (0x52494646 в big-endian представлении). Является началом RIFF-цепочки.
4..7 (4 байта) chunkSize Это оставшийся размер цепочки, начиная с этой позиции. Иначе говоря, это размер файла – 8, то есть, исключены поля chunkId и chunkSize.
8..11 (4 байта) format Содержит символы “WAVE” (0x57415645 в big-endian представлении)
12..15 (4 байта) subchunk1Id Содержит символы “fmt “ (0x666d7420 в big-endian представлении)
16..19 (4 байта) subchunk1Size 16 для формата PCM . Это оставшийся размер подцепочки, начиная с этой позиции.
20..21 (2 байта) audioFormat Аудио формат, полный список можно получить . Для PCM = 1 (то есть, Линейное квантование). Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
22..23 (2 байта) numChannels Количество каналов. Моно = 1, Стерео = 2 и т.д.
24..27 (4 байта) sampleRate Частота дискретизации. 8000 Гц, 44100 Гц и т.д.
28..31 (4 байта) byteRate Количество байт, переданных за секунду воспроизведения.
32..33 (2 байта) blockAlign Количество байт для одного сэмпла, включая все каналы.
34..35 (2 байта) bitsPerSample Количество бит в сэмпле. Так называемая “глубина” или точность звучания. 8 бит, 16 бит и т.д.
36..39 (4 байта) subchunk2Id Содержит символы “data” (0x64617461 в big-endian представлении)
40..43 (4 байта) subchunk2Size Количество байт в области данных.
44.. data Непосредственно WAV-данные.

Вот и весь заголовок, длина которого составляет 44 байта, далее следует блок данных о котором я уже рассказал выше.

На самом деле, понятно, что использованные типы данных можно и менять. Например, в Си (MSVS) вместе массива char можно использовать __int32 или DWORD , но тогда сравнение с какой-либо строковой константой, к примеру может оказаться не очень удобным. Также хотелось бы предостеречь Вас в связи с влияением новой 64-битной моды на программные средства. А именно: всегда стоит помнить, в языке Си тип переменной int в 64-битной системе будет иметь длину 8 байт, а в 32-битной – 4 байта. В таких случаях можно воспользоваться вышеупомянутым типом переменной __int32 или __int64 , в зависимости от того, какой размер переменной в памяти Вам необходим. Существуют типы __int8 , __int16 , __int32 и __int64 , они доступны только для MSVC++ компилятора как минимум 7-й версии (Microsoft Visual Studio 2003.NET), но зато Вы не ошибетесь с выбором размера типа данных.

Недавно я получил следующее письмо:

Привет, сайт, MP3 является самым популярным аудиоформатом, но есть так много других, таких как AAC, FLAC, OGG и WMA, что я не совсем уверен, какой из них я должен использовать. В чем разница между ними, и какой из них мне следует использовать, чтобы хранить мою музыку?

Вопрос достаточно популярный, попробую ответить на него просто, но понятно.

Мы уже говорили о различии между lossless и lossy, но если кратко, есть два типа качества звука:

  • без потерь: FLAC, ALAC, WAV;
  • с потерями: MP3, AAC, OGG, WMA.

Lossless формат сохраняет полное качество звука, в большинстве случаев, это уровень CD, в то время как формат с потерями сжимает файлы для экономии места (конечно, качество звука ухудшается).

Форматы хранения данных без сжатия: FLAC, ALAC, WAV и другие

  • WAV и AIFF : Оба WAV и AIFF хранят звук без сжатия, что означает, что они являются точными копиями исходного аудио. Эти два формата по существу имеют одинаковое качество; Они просто хранят данные немного по-другому. AIFF сделан Apple, поэтому вы можете увидеть его чаще в продуктах Apple, а WAV в значительной степени универсален. Однако, поскольку они несжаты, они занимают много ненужного пространства. Если вы не редактируете аудио, вам не нужно хранить аудио в этих форматах.
  • FLAC : Free Lossless Audio Codec (FLAC) — самый популярный формат хранения звука без потерь, что делает его хорошим выбором. В отличие от WAV и AIFF, он немного сжимает данные, поэтому занимает меньше места. Тем не менее, он считается форматом, который хранит звук без потерь, качество музыки остается таким же, как и у оригинального источника, поэтому эффективнее использовать его, чем WAV и AIFF. Он бесплатный, с открытым исходным кодом.
  • Apple Lossless : Также известный как ALAC, Apple Lossless похож на FLAC. Это формат с лёгкой компрессией, тем не менее, музыка сохраниться без потерь качества. Его сжатие не так эффективно, как FLAC, поэтому ваши файлы могут быть немного больше, но они полностью поддерживаются iTunes и iOS (в то время как FLAC — нет). Таким образом, если вы используете iTunes и iOS в качестве основного программного обеспечения для прослушивания музыки, вам придется использовать именно этот формат.
  • APE : APE — имеет самый агрессивный алгоритм сжатия, для хранения музыки без потерь, то есть вы получите максимальную экономию места. Его качество звука такое же, как у FLAC, ALAC, однако часто возникают проблемы с совместимостью. Кроме того, проигрывание этого формата гораздо сильнее нагружает процессор для его декодирования, так как данные сильно сжаты. Вообще, я бы не рекомендовал использовать этот формат, если только вы не ограничены в свободной памяти и не имеете проблем совместимости с программным обеспечением.

Форматы хранения звука с сжатием: MP3, AAC, OGG и другие


Если вы просто хотите послушать музыку здесь и сейчас, скорее всего, вы будете использовать формат с потерями. Они экономят массу памяти, оставляя вам больше места для песен на вашем портативном плеере, и, если будет достаточно высоким, они будут неотличимы от исходного источника. Вот форматы, с которыми вы, вероятно, столкнетесь:

  • MP3 : MPEG Audio Layer III, или MP3, является наиболее распространенным форматом хранения звука с потерями. Настолько, что он стал синонимом загружаемой музыки. MP3 — не самый эффективный формат из всех, но, безусловно, наиболее хорошо поддерживаемый, что делает его лучшим выбором для хранения аудио с сжатием.
  • AAC : Advanced Audio Coding, также известный как AAC, похож на MP3, хотя он немного эффективнее. Это означает, что вы можете иметь файлы, занимающие меньше места, но с тем же качеством звука, что и MP3. Лучшим евангелистом этого формата сегодня является iTunes от Apple, сделавший AAC настолько популярным, что он стал почти так же широко известен, как MP3. За очень долгое время у меня было только одно устройство, которое не могло играть AAC, и это было несколько лет назад, так что вы можете смело использовать этот формат для хранения своей музыки.
  • Ogg Vorbis : формат Vorbis, известный как Ogg Vorbis из-за использования контейнера Ogg, является бесплатной альтернативой MP3 и AAC. Его главная черта состоит в том, что он не ограничен патентами, но на вас, как на конечного пользователя, это совершенно не влияет. Фактически, несмотря на его открытость и сходное качество, он гораздо менее популярен, чем MP3 и AAC, это значит, что меньшее количество программ его поддерживают. Таким образом, мы не рекомендуем его использовать, чтобы избежать проблем с совместимостью программного обеспечения.
  • WMA : Windows Media Audio — собственный фирменный формат Microsoft, похожий на MP3 или AAC. Он не дает никаких преимуществ перед другими форматами, и также не очень хорошо поддерживается за пределами платформы Windows. Мы не рекомендуем вам копировать компакт-диски в этот формат, если только вы не будете точно знать, что всю музыку будут слушать на платформе Windows, или на совместимых с этим форматом проигрывателях.

Так что вы должны использовать?

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

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