logo
Лекции по ЦО АВС

3.13 Flac

FLAC (Free Lossless Audio Codec - свободный аудио-кодек без потерь) – это популярный свободный кодек для сжатия аудио. В отличие от кодеков с потерями Ogg Vorbis, MP3, FLAC не удаляет никакой информации из аудиопотока и подходит как для прослушивания музыки на высококачественной звуковоспроизводящей аппаратуре, так и для архивирования аудиоколлекции. На сегодня формат FLAC поддерживается многими аудиоприложениями.

Метаданные.

FLAC определяет несколько типов блоков метаданных. Блоки метаданных могут быть любого размера, новые блоки могут быть легко добавлены. Декодер имеет возможность пропускать неизвестные ему блоки метаданных. Обязателен только блок “streaminfo”. В нем содержится частота дискретизации, количество каналов и т. п., а также данные, позволяющие декодеру настроить буферы. Сюда также записывается подпись MD5 несжатых аудиоданных. Это полезно для проверки всего потока после его передачи.

Другие блоки предназначены для резервирования места, хранения таблиц точек поиска, тегов, список разметки аудиодисков, а также данных для конкретных приложений. Опции для добавления блоков “padding” или точек поиска приведены ниже. FLAC не нуждается в точках поиска, однако они позволяют значительно увеличить скорость доступа, а также могут быть использованы для расстановки меток в аудио редакторах.

Аудиоданные

За метаданными следуют сжатые аудиоданные. Метаданные и аудиоданные не чередуются. Как и большинство кодеков, FLAC делит входной поток на блоки и кодирует их независимо друг от друга. Блок упаковывается во фрейм и добавляется к потоку. Базовый кодер использует блоки постоянного размера для всего потока, однако формат предусматривает наличие блоков разной длины в потоке.

Разбиение на блоки

Размер блока — очень важный параметр для кодирования. Если он очень мал, то в потоке будет слишком много заголовков фреймов, что уменьшит уровень сжатия. Если размер большой, то кодер не сможет подобрать эффективную модель сжатия. Понимание процесса моделирования поможет Вам увеличить уровень сжатия для некоторых типов входных данных. Обычно при использовании линейного прогнозирования на аудиоданных с частотой дискретизации 44.1 кГц оптимальный размер блока лежит в диапазоне 2-6 тысяч сэмплов.

Моделирование

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

- подгонка простого полинома к сигналу

- общее кодирование с линейными предикторами (LPC).

Во-первых, постоянное полиномиальное предсказание (-l 0) работает значительно быстрее, но менее точно, чем LPC. Чем выше порядок LPC, тем медленнее, но лучше будет модель. Однако с увеличением порядка выигрыш будет все менее значительным. В некоторой точке (обычно около 9) процедура кодера, определяющая наилучший порядок, начинает ошибаться и размер получаемых фреймов возрастает. Чтобы преодолеть это, можно использовать полный перебор, что приведёт к значительному увеличению времени кодирования.

Во-вторых, параметры для постоянных предикторов могут быть описаны тремя битами, а параметры для модели LPC зависят от количества бит на сэмпл и порядка LPC. Это значит, что размер заголовка фрейма зависит от выбранного метода и порядка и может повлиять на оптимальный размер блока.

Остаточное кодирование

Когда модель подобрана, кодер вычитает приближение из оригинала, чтобы получить остаточный (ошибочный) сигнал, который затем кодируется без потерь. Для этого используется то обстоятельство, что разностный сигнал обычно имеет распределение Лапласа и есть набор специальных кодов Хаффмана, называемый кодами Райса, позволяющий эффективно и быстро кодировать эти сигналы без использования словаря.

Кодирование Райса состоит из нахождения одного параметра, отвечающего распределению сигнала, а затем использования его для составления кодов. При изменении распределения меняется и оптимальный параметр, поэтому имеется метод позволяющий пересчитывать его по необходимости. Остаток может быть разбит на контексты или разделы, у каждого из которых будет свой параметр Райса. FLAC позволяет указать, как нужно производить разбиение. Остаток может быть разбит на 2n раздела.

Составление фреймов

Аудиофрейму предшествует заголовок, который начинается с кода синхронизации и содержит минимум информации, необходимой декодеру для воспроизведения потока. Сюда также записывается номер блока или сэмпла и восьмибитная контрольная сумма самого заголовка. Код синхронизации, CRC заголовка фрейма и номер блока/сэмпла позволяют осуществлять пересинхронизацию и поиск даже в отсутствие точек поиска. В конце фрейма записывается его шестнадцатибитная контрольная сумма. Если базовый декодер обнаружит ошибку, будет сгенерирован блок тишины.

3.14 AAC

AAC (англ. Advanced Audio Coding) — Патентованный формат аудиофайла с меньшей потерей качества при кодировании, чем MP3 при одинаковых размерах. Формат также позволяет сжимать без потери качества исходника (профиль ALAC AAC).

AAC — это широкополосный алгоритм кодирования аудио, который использует два основных принципа кодирования для сильного уменьшения количества данных, требуемых для передачи высококачественного цифрового аудио. Данный формат является одним из наиболее качественных, использующих сжатие с потерями, поддерживаемый большинством современного оборудования, в том числе портативного. Изначально создавался как преемник MP3 с улучшенным качеством кодирования. Формат AAC, официально известный как ISO/IEC 13818-7, вышел в свет в 1997 как новая, седьмая, часть семьи MPEG-2. Существует также формат AAC, известный как MPEG-4 Часть 3.

Принцип работы AAC.

1) Удаляются невоспринимаемые составляющие сигнала.

2) Удаляется избыточность в кодированном аудио сигнале.

3) Cигнал обрабатывается по методу MDCT согласно его сложности.

4) Добавляются коды коррекции внутренних ошибок.

5) Сигнал сохраняется или передаётся.

Аудио стандарт MPEG-4 не требует единственного или малого набора высокоэффективных схем компрессии, а скорее сложный набор для выполнения широкого круга операций от кодирования низкокачественной речи до высококачественного аудио и синтезирования музыки.

- Семейство алгоритмов аудио кодирования MPEG-4 охватывает диапазон от кодирования низкокачественной речи (до 2 кбит/с) до высококачественного аудио (от 64 кбит/с на канал и выше).

- AAC имеет частоту сэмплов от 8 Гц до 96 кГц и количество каналов от 1 до 48.

- В отличие от гибридного набора фильтров MP3, AAC использует Модифицированное Дискретное Косинусное Преобразование (MDCT) вместе с увеличенным размером «окна» в 2048 пунктов. AAC более подходит для кодирования аудио с потоком сложных импульсов и прямоугольных сигналов, чем MP3.

AAC может динамически переключаться между длинами блоков MDCT от 2048 пунктов до 256:

- Если происходит единственная или кратковременная смена, используется малое «окно» в 256 пунктов для лучшего разрешения.

- По умолчанию используется большое 2048-пунктовое «окно» для улучшения эффективности кодирования.

Разновидности формата.

На данный момент различают четыре разновидности формата ААС:

- HomeboyAAC

- AT&T a2bAAC

- Liquifier Pro AAC

- Astrid/Quartex AAC

HomeboyAAC

Это первая версия ААС, кодер для которой стал общедоступен. Работает очень медленно в сочетании с отчетливо слышимыми искажениями. Это сыграло свою роль в отталкивании широких масс от этого формата. Единственными его плюсами является достижение качества MP3 128 Кбит/с на более низких битрейтах и наличие приятного и быстрого плейера BitAAC. Сейчас этот формат уже практически не используется.

AT&T a2bAAC

Известная компания AT&T не могла остаться в стороне от технологий новых систем сжатия аудиоданных. При фирме было создано специальное подразделение, занимающееся созданием программ и раскруткой нового формата, который получил название a2b. Строго говоря, этот формат практически полностью следует тем же самым принципам компрессии, что и предыдущий. Однако фирмой были предприняты значительные усилия по повышению качества звучания (в результате чего снизилась степень сжатия) и внесению новых элементов в формат. Составной частью формата a2b стала возможность включения изображения исполнителя и текста песни внутрь аудиофайла. Также была разработана технология получения самовоспроизводящихся песен (исходную композицию можно преобразовать в .ехе-файл, включающий в себя все необходимые для воспроизведения, что увеличивало файл всего примерно на 170 Кб). Для файлов этого формата существует удобный и бесплатный плейер с поддержкой многих дополнительных возможностей. Однако, несмотря на мощнейшую рекламную компанию и на очевидные достоинства формата, он не нашел широкого применения по одной простой причине — отсутствию общедоступного кодера. Кроме того, эта фирма пыталась запатентовать и запретить к использованию все составные части формата. Юридически это не получилось осуществить и патент был получен только на собственные нововведения.

Формат по степени сжатия превосходит MP3, но на 15—20% уступает VQF, РАС, Astrid/Quartex ААС и Liquifier Pro AAC. Качество звучания a2b 96 Кбит/с сравнимо с качеством MP3 128 Кбит/с и VQF 96 Кбит/с, но уступает Liquifier Pro AAC 96, Astrid/Quartex AAC 96 и РАС 96.

Liquifier Pro AAC

Компания AT&T не могла остаться одинокой на рынке борьбы за первенство в области высококачественной компрессии звука. Через некоторое время фирма Liquid Audio выпустила свою версию кодека. Предложенная ей версия формата ААС наиболее четко следовала всем техническим тонкостям и в результате появилась лучшая на сегодняшний день система сжатия звука. Она по степени сжатия и качеству звучания превосходит все существующие в данный момент форматы. И хотя превосходство по сжатию над VQF и Astrid/Quartex AAC незначительное — минимальный битрейт, заслуживающий внимания, все те же 96 Кбит/с, звук превосходит все ожидания.

К сожалению, политика компании Liquid Audio на данный момент слабо отличается от политики AT&T — есть отличный плейер, но нет общедоступного кодера.

В октябре 1998 г. в "спор гигантов" вступило частное лицо. Никому не известный и скромный программист создал, на основе изданных фирмой NTT в мае исходников МР4, свою собственную систему компрессии.

Уже через несколько дней после выхода новой версии популярного плейера K-Jofol, для которого автор формата Astrid/Quartex AAC написал декодирующий модуль, появились восторженные отклики. Кодер, обладающий непритязательным интерфейсом командной строки, по сжатию и качеству звучания превосходил кодировщики от AT&T ААС и YAMAHA VQF. При этом качество звука практически не уступало хваленому Liquifier Pro AAC. Почти одновременно появились графические интерфейсы (front-end) для нового кодировщика и масса хвалебных отзывов в разных источниках. При всех видимых недостатках сегодняшней версии 0.2 (поддержка только WAV 44 кГц/16 бит РСМ и степени сжатия только 64, 96 и 128 Кбит/с), она уже широко применяется.

По степени сжатия и качеству звучания формат превосходит все остальные, кроме Liquifier Pro AAC, и является объективно лучшим среди тех, что имеют общедоступные кодеры и доступные для распространения в Интернете звуковые файлы. По сравнению с MP3 обеспечивается аналогичное качество при потоке на 30% меньше. Качество Astrid AAC 96 Кбит/с много лучше качества VQF/96 Кбит/с. Возможно также потоковое воспроизведение.

Расширения файлов

.m4a — незащищённый файл AAC

.m4b — файл AAC, поддерживающий закладки. Используется для аудиокниг и подкастов.

.m4p — защищённый файл AAC. Используется для защиты файла от копирования при легальной загрузке собственнической музыки в онлайн-магазинах.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4