PCM, WAV, AIFF, FLAC, ALAC: форматы без потерь простыми словами

Автор: Николай СапуновОбновлено: август 202620 мин чтения
Содержание статьи +

Кратко

Звук без потерь сохраняет каждый исходный сэмпл в точности, поэтому декодированный файл бит в бит совпадает с оригиналом – в отличие от MP3 или AAC, которые отбрасывают часть данных. Сам звук – это PCM (числа, описывающие звуковую волну); WAV, AIFF и BWF – контейнеры, хранящие PCM без сжатия, а FLAC и ALAC сжимают тот же PCM, не теряя ни одной детали. FLAC и ALAC обычно уменьшают размер файла до 50–70% от объёма WAV и при декодировании восстанавливают идентичный PCM – так же, как ZIP-архив возвращает документ без искажений. Используйте несжатые форматы WAV или BWF для мастер-файлов и обмена, а FLAC или ALAC – когда нужно сохранить качество без потерь при вдвое меньшем объёме и трафике.

Зачем это нужно

Если вы работаете с видеопродуктом – стриминговым сервисом, OTT-платформой, приложением для музыки и видео или медиаархивом – рано или поздно перед вами встанет вопрос: в каком формате хранить мастер-файлы. Неправильный выбор может обойтись дорого. Храните всё в несжатом WAV – и объём архива удвоится; выберите кодек, который не поддерживается вашими плеерами, – и доставка контента сломается. Эта статья даёт понятный словарь, чтобы отличать сам звук от формата его хранения, простое правило, когда сжатие без потерь окупается, и стандарты, на которые можно опереться, если заявления вендора расходятся с реальностью.

Lossy против lossless: единственное различие, которое важно

Начнём со слова, которое определяет суть процесса. Lossless (без потерь) означает, что информация не теряется: при декодировании вы получаете те же самые числа, что и при кодировании – каждый сэмпл остаётся идентичным. Lossy (с потерями) означает, что часть информации намеренно удаляется ради уменьшения размера файла, и восстановить её невозможно.

Помогает аналогия с ZIP-архивом и JPEG-фотографией. ZIP – формат без потерь: распакуйте его, и документ вернётся байт в байт. JPEG – с потерями: он удаляет детали, которые глаз вряд ли заметит, и повторное сохранение их не восстановит. MP3 и AAC – это JPEG в мире звука: они удаляют звуки, которые ухо едва ли услышит. FLAC и ALAC – это ZIP в мире звука: меньшие файлы, которые при декодировании превращаются в точную копию оригинала.

Это важно, потому что задачи разные. Кодек доставки вроде AAC оптимизирует размер файла – минимальный, который ещё будет приемлем для слушателя. Формат без потерь, напротив, стремится сохранить мастер-файл в идеальном состоянии – для архива, монтажа или повторного кодирования в любой формат доставки, который понадобится в будущем. Вы же не стали бы делать мастер-фильм в JPEG – и звук не стоит мастерить в MP3.

Рис. 1. При кодировании с потерями данные удаляются безвозвратно; при сжатии без потерь процесс обратим – на выходе получается бит-идентичная копия оригинала.

PCM: сам звук, до всякого контейнера

Прежде чем говорить о форматах файлов, нужно определить, что именно эти файлы хранят. Когда сигнал с микрофона оцифровывается, система измеряет уровень звуковой волны тысячи раз в секунду и записывает каждое измерение в виде числа. Получившийся поток чисел называется импульсно-кодовой модуляцией (PCM) – наиболее распространённый способ представления несжатого цифрового звука. (О том, как производятся эти измерения, см. Что такое цифровой звук: от звуковой волны к битам.)

PCM – это не формат файла. Это сырые данные: длинный список целых чисел, по два на стереофрейм, поступающих с заданной частотой дискретизации. Чтобы превратить эти сырые данные в файл, который сможет открыть другой человек, их нужно упаковать в контейнер, который фиксирует правила чтения – количество каналов, частоту дискретизации, битовую глубину, а также начало и конец аудиоданных. Без такого заголовка набор чисел PCM остаётся нечитаемым: ведь нигде не указано, 16 или 24 бита, моно или стерео, 44 100 или 48 000 сэмплов в секунду.

Значит, мысленная модель – это два слоя. Нижний слой – это звук PCM, сам аудиосигнал, который остаётся неизменным независимо от способа хранения. Верхний слой – контейнер или кодек, своего рода «обёртка», которая либо хранит эти данные без изменений (WAV, AIFF, BWF), либо упаковывает их компактнее, но обратимо (FLAC, ALAC). Держите эти слои раздельно – и каждый формат станет понятнее.

Рис. 2. Один звук, много форматов: PCM – это исходный звук; WAV, AIFF и BWF хранят его без изменений, а FLAC и ALAC используют сжатие, но сохраняют возможность полного восстановления данных.

Несжатые контейнеры: WAV, AIFF, BWF

Три формата хранят PCM без сжатия. Они различаются в основном происхождением, а не качеством звука – сэмплы внутри одинаковы.

WAV (Waveform Audio File Format) – стандарт мира Windows, представленный Microsoft и IBM в 1991 году. Это частный случай контейнера RIFF – универсального формата «Resource Interchange File Format», построенного из помеченных блоков, называемых чанками. В файле WAV присутствует чанк fmt , описывающий аудиоданные, и чанк data, хранящий PCM-данные. WAV использует little-endian порядок байтов (младший байт первым) – под процессоры Intel, на которых он был разработан. Это самый универсально читаемый аудиоконтейнер в мире.

AIFF (Audio Interchange File Format) – формат от Apple, разработанный в 1988 году для Macintosh. Он основан на структуре чанков Electronic Arts EA IFF 85: верхний чанк FORM, чанк COMM (common), описывающий параметры звука, и чанк SSND, в котором хранятся сэмплы. Один важный технический нюанс: AIFF использует порядок байтов big-endian (старший байт идёт первым), поскольку процессор Motorola 68000 в ранних Macintosh также работал в режиме big-endian. Качество звука такое же, как у WAV; на уровне сэмплов различия сводятся лишь к порядку байтов.

BWF (Broadcast Wave Format) – это формат WAV с добавленными профессиональными метаданными. Он стандартизирован Европейским вещательным союзом как EBU Tech 3285 и включает чанк bext (broadcast extension), содержащий таймкод, автора, дату создания и – начиная с версии 2 (2011) – метаданные громкости по стандарту EBU R128. Полезная нагрузка остаётся обычным PCM; BWF лишь фиксирует, кто создал файл, когда и при каком таймкоде, поэтому он стал стандартом обмена в профессиональном кино- и вещательном постпродакшене. Обычный плеер WAV открывает BWF-файл и игнорирует дополнительный чанк.

КонтейнерПроисхождениеПорядок байтовСжатиеТипичное применение
WAV (RIFF)Microsoft / IBM, 1991Little-endianНет (сырой PCM)Универсальный обмен, монтаж
AIFF (EA IFF 85)Apple, 1988Big-endianНет (сырой PCM)Apple / профзвук, монтаж
BWFEBU Tech 3285, 1997Little-endianНет (сырой PCM)Мастера кино и вещания

Частая ошибка: потолок в 4 ГБ у WAV

Вот ловушка, которая бьёт по длинным записям и высокому разрешению. Классические форматы WAV, AIFF и BWF используют 32-битное поле для хранения размеров чанков. Максимальное число, которое можно записать в 32 бита, – 4 294 967 295, поэтому один файл не может превышать примерно 4 гигабайта. Посчитаем для длительной многоканальной сессии: 6 каналов × 24 бита (3 байта) × 48 000 сэмплов в секунду = 864 000 байт в секунду, или около 3,1 ГБ в час. Двухчасовая запись в формате 5.1 легко превышает этот лимит, и файл либо молча портится, либо не дописывается.

Решение – RF64, расширенный формат WAV от EBU, описанный в EBU Tech 3306: он заменяет тег RIFF на RF64 и хранит 64-битный размер в новом чанке ds64, увеличивая предел примерно до 16 эксабайт. Если ваш рабочий процесс включает длинные surround-записи, требуйте инструментов с поддержкой RF64.

Кодеки без потерь: FLAC и ALAC

FLAC и ALAC делают то, чего не могут несжатые контейнеры: уменьшают размер файла, при этом по-прежнему декодируясь обратно в точно такой же PCM.

Трюк заключается в предсказании и эффективном кодировании, и его стоит объяснить простыми словами. Кодер анализирует звук короткими фрагментами и подбирает простой математический алгоритм, который предсказывает каждый сэмпл на основе предыдущих. Музыка хорошо предсказуемая от момента к моменту, поэтому предсказание обычно оказывается точным. Затем кодер сохраняет лишь небольшую разницу между предсказанием и реальным сэмплом – остаток (residual) – с помощью компактного способа кодирования чисел. Поскольку предсказание и остаток вместе полностью восстанавливают исходный сэмпл, информация не теряется. Это сжатие за счёт более умного описания звука, а не за счёт удаления его частей.

FLAC (Free Lossless Audio Codec) – открытый стандарт. Он был официально утверждён как IETF RFC 9639 в декабре 2024 года; до этого у него имелась лишь эталонная реализация и неформальная спецификация, существовавшая с 2000 года. FLAC применяет кодирование Райса (подмножество кодирования Голомба) для обработки остатка, не требует вычислений с плавающей запятой при декодировании и поддерживает уровни сжатия от 0 до 8: чем выше уровень, тем тщательнее подбор оптимального предсказателя, тем меньше размер файла – но за счёт более медленного кодирования. Важно: уровень сжатия влияет только на объём файла и скорость кодирования – при этом декодированный звук остаётся идентичным на всех уровнях. RFC 9639 также ввёл формальную поддержку 32-битного целочисленного звука.

ALAC (Apple Lossless Audio Codec) – аналог от Apple, представленный в 2004 году и открытый под лицензией Apache 2.0 в октябре 2011 года. Он использует ту же концепцию – линейное предсказание в сочетании с эффективным кодированием остатка, – а эталонная реализация поддерживает сэмплы до 32 бит и широкий диапазон частот дискретизации. В отличие от FLAC, у ALAC отсутствует возможность настройки уровня сжатия для пользователя: используется единственный фиксированный алгоритм. Главное преимущество формата – полноценная и нативная поддержка воспроизведения во всей экосистеме Apple.

Сколько на самом деле экономят?

Для типичной музыки FLAC и ALAC сжимают звук CD-качества примерно до 50–70% от размера несжатого WAV – то есть экономия составляет чуть меньше половины. По сравнению друг с другом они очень близки: на разнородном материале FLAC обычно занимает на 1–3% меньше, чем ALAC – разница, незаметная на одном альбоме, но накапливающаяся до нескольких гигабайт в большой библиотеке.

Рабочий пример наглядно демонстрирует выгоду от сжатия. Возьмём трёхминутный стереотрек CD-качества (16 бит, 44 100 Гц):

несжатый размер = 44 100 сэмплов/с × 2 байта × 2 канала × 180 с
                = 31 752 000 байт ≈ 31,8 МБ  (WAV / AIFF / BWF)
FLAC при ~60%   ≈ 0,60 × 31,8 МБ ≈ 19,1 МБ
экономия/трек   ≈ 12,7 МБ  (около 40%)

Умножьте на архив из 5000 треков – и для версий WAV понадобится около 159 ГБ, а для FLAC – примерно 95 ГБ: тот же звук, сэмпл в сэмпл, примерно на 60% меньше места и при схожем снижении стоимости передачи.

ФорматСжатиеДекодированный звукРегулятор сжатияЛучше всего для
WAV / AIFF / BWFНет= исходный PCM – Мастера, монтаж, обмен
FLACБез потерь, ~50–70%= исходный PCMУровни 0–8Веб, архивы, широкая поддержка
ALACБез потерь, ~50–70%= исходный PCMФиксированныйЭкосистема Apple

Так что же выбрать?

Решение зависит от одного вопроса: вы создаёте или распространяете? Для мастер-файла – то есть того, что вы будете монтировать, сводить или позже перекодировать, – выбирайте несжатый WAV или, в кино и вещании, BWF, поскольку сырой PCM – самый совместимый формат, который любой инструмент читает и записывает без сюрпризов. Для архива или доставки без потерь – то есть того же идеального качества звука при меньшем объёме и трафике – используйте FLAC ради самой широкой поддержки устройств или ALAC, если аудитория находится в экосистеме Apple. Учтите: любой lossless-формат всё равно занимает гораздо больше места, чем lossy. Например, FLAC-трек объёмом 19 МБ занял бы около 5 МБ в виде потока AAC 192 кбит/с – вот почему стриминговые сервисы по умолчанию раздают lossy большинству пользователей, а lossless оставляют для премиальных тарифов.

Рис. 3. Выбирайте формат в зависимости от задачи: несжатый PCM – для мастер-файлов, FLAC или ALAC – для хранения и доставки без потерь.

Где здесь Фора Софт

В видеопродуктах, которые мы создаём с 2005 года – стриминговых и OTT-платформах, e-learning, приложениях для музыки и видео, медиаархивах – вопрос lossless чаще всего возникает как решение для хранения и обработки, а не для качества. Мы храним мастер- и мезонинные копии в несжатом формате PCM (WAV или BWF), чтобы каждое последующее кодирование начиналось с идеального источника, а затем генерируем из этого единого мастера потоковые версии с потерями. Когда клиенту нужен формат без потерь, мы используем FLAC для кросс-платформенной совместимости и ALAC – там, где каталог ориентирован на экосистему Apple. Основной вывод: важно разделять формат мастера и формат доставки. Сделайте мастер правильно один раз – и каждый последующий формат будет стоить недорого.

Ключевые выводы

  • Lossless-формат декодируется в точные исходные сэмплы; lossy (MP3, AAC) навсегда удаляет часть данных.
  • PCM – это необработанный цифровой звук; WAV, AIFF и BWF – контейнеры, хранящие его без сжатия.
  • WAV использует little-endian порядок байт, AIFF – big-endian; BWF представляет собой расширенный WAV с метаданными вещания (EBU Tech 3285).
  • FLAC и ALAC сжимают данные без потерь до ~50–70% от объёма WAV и при декодировании восстанавливают исходный сигнал идентично.
  • FLAC (RFC 9639) – открытый формат с уровнями сжатия от 0 до 8; ALAC распространяется под лицензией Apache и является нативным для экосистемы Apple.
  • Классический WAV ограничен объёмом около 4 ГБ; для длинных или многоканальных записей рекомендуется использовать RF64 (EBU Tech 3306).

Что почитать дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.