Введение

Формат сжатия аудио с потерями.

Advanced Audio Coding (AAC) — это стандарт кодирования аудио для сжатия цифрового аудио с потерями. Он был разработан как преемник формата MP3 и, как правило, обеспечивает более высокое качество звука, чем MP3 при той же битрейте. AAC был стандартизирован ISO и IEC как часть спецификаций MPEG-2 и MPEG-4. Часть AAC, HE-AAC ("AAC+"), является частью MPEG-4 Audio и используется в цифровых радиостандартах DAB+ и Digital Radio Mondiale, а также в стандартах мобильного телевидения DVB-H и ATSC M/H. AAC поддерживает включение 48 полнополосных (до 96 кГц) аудиоканалов в один поток, плюс 16 каналов низкочастотных эффектов (LFE, ограниченных 120 Гц), до 16 каналов для "связи" или диалога и до 16 потоков данных. Качество стереозвука удовлетворительно для умеренных требований при 96 кбит/с в совместном стереорежиме; однако для достижения Hi-Fi прозрачности требуются битрейты не менее 128 кбит/с (VBR). Тесты аудио MPEG-4 показали, что AAC соответствует требованиям, определяемым ITU как "прозрачные" при 128 кбит/с для стерео и 384 кбит/с для 5.1 аудио. AAC использует исключительно алгоритм модифицированного дискретного косинусного преобразования (MDCT), что обеспечивает более высокую эффективность сжатия по сравнению с MP3, который использует гибридный алгоритм кодирования, сочетающий MDCT и FFT.

Предыстория

Дискретное косинусное преобразование (DCT) – тип кодирования с помощью преобразований для сжатия с потерями – было предложено Насиром Ахмедом в 1972 году и разработано Ахмедом совместно с Т. Натараджаном и К. Р. Рао в 1973 году, результаты были опубликованы в 1974 году. Это привело к разработке модифицированного дискретного косинусного преобразования (MDCT), предложенного J. P. Princen, A. W. Johnson и A. Б. Брэдли в 1987 году, после предшествующей работы Принсена и Брэдли в 1986 году. Аудиокодек MP3, представленный в 1994 году, использовал гибридный алгоритм кодирования, сочетающий MDCT и FFT. AAC использует исключительно алгоритм MDCT, что обеспечивает более высокую эффективность сжатия по сравнению с MP3. Разработка AAC осуществлялась при сотрудничестве и с участием компаний, таких как Bell Labs, Fraunhofer IIS, Dolby Laboratories, LG Electronics, NEC, Panasonic, Sony Corporation, ETRI, JVC Kenwood, Philips, Microsoft и NTT. В апреле 1997 года Moving Picture Experts Group официально признала его международным стандартом. Он специфицирован как часть 7 стандарта MPEG-2 и подчасть 4 части 3 стандарта MPEG-4.

Стандартизация

В 1997 году AAC был впервые представлен как MPEG 2 Часть 7, официально известный как ISO/IEC 13818 7:1997. Эта часть MPEG 2 была новой, поскольку MPEG 2 уже включал MPEG 2 Часть 3, официально известную как ISO/IEC 13818 3: MPEG 2 BC (Обратно совместимый). Поэтому MPEG 2 Часть 7 также известна как MPEG 2 NBC (Не обратно совместимый), поскольку она несовместима с аудиоформатами MPEG 1 (MP1, MP2 и MP3). MPEG 2 Часть 7 определила три профиля: профиль низкой сложности (AAC LC / LC AAC), основной профиль (AAC Main) и профиль масштабируемой частоты дискретизации (AAC SSR). Профиль AAC LC состоит из базового формата, очень похожего на формат кодирования Perceptual Audio Coding (PAC) от AT&T, с добавлением временного шумоподавления (TNS), окна Кайзера (описанного ниже), неравномерного квантизатора и переработки формата битового потока для обработки до 16 стереоканалов, 16 моноканалов, 16 каналов низкочастотных эффектов (LFE) и 16 каналов комментариев в одном битовом потоке. Основной профиль добавляет набор рекурсивных предсказателей, которые вычисляются на каждом отводе фильтр-банка. SSR использует 4-полосный PQMF-фильтр-банк, за которым следуют четыре более коротких фильтр-банка, чтобы обеспечить масштабируемую частоту дискретизации. В 1999 году MPEG 2 Часть 7 была обновлена и включена в семейство стандартов MPEG 4, став известной как MPEG 4 Часть 3, MPEG 4 Audio или ISO/IEC 14496 3:1999. Это обновление включало в себя несколько улучшений. Одним из них было добавление типов аудиообъектов, используемых для обеспечения совместимости с широким спектром других аудиоформатов, таких как TwinVQ, CELP, HVXC, Text To Speech Interface и MPEG 4 Structured Audio. Еще одним заметным дополнением в этой версии стандарта AAC является перцептуальная замена шума (PNS). В связи с этим профили AAC (AAC LC, AAC Main и AAC SSR) объединяются с перцептуальной заменой шума и определяются в аудиостандарте MPEG 4 как типы аудиообъектов. Типы аудиообъектов MPEG 4 Audio объединены в четыре профиля MPEG 4 Audio: Main (включающий большинство типов аудиообъектов MPEG 4 Audio), Scalable (AAC LC, AAC LTP, CELP, HVXC, TwinVQ, Wavetable Synthesis, TTSI), Speech (CELP, HVXC, TTSI) и Low Rate Synthesis (Wavetable Synthesis, TTSI). Эталонное программное обеспечение для MPEG 4 Часть 3 указано в MPEG 4 Часть 5, а соответствующие битовые потоки – в MPEG 4 Часть 4. MPEG 4 Audio остается обратно совместимым с MPEG 2 Часть 7. MPEG 4 Audio Version 2 (ISO/IEC 14496 3:1999/Amd 1:2000) определил новые типы аудиообъектов: объект AAC с низкой задержкой (AAC LD), объект с арифметическим кодированием с разделением по битам (BSAC), параметрическое аудиокодирование с использованием гармонических и индивидуальных линий плюс шум, а также устойчивые к ошибкам (ER) версии типов объектов. Он также определил четыре новых аудиопрофиля: профиль аудио высокого качества, профиль аудио с низкой задержкой, профиль естественного звука и профиль мобильной сети Интернет. Профиль HE AAC (AAC LC с SBR) и профиль AAC (AAC LC) были впервые стандартизированы в ISO/IEC 14496 3:2001/Amd 1:2003. Профиль HE AAC v2 (AAC LC с SBR и параметрическим стерео) был впервые указан в ISO/IEC 14496 3:2005/Amd 2:2006. Параметрический тип стереоаудиообъекта, используемый в HE AAC v2, был впервые определен в ISO/IEC 14496 3:2001/Amd 2:2004. Текущая версия стандарта AAC определена в ISO/IEC 14496 3:2009. AAC+ v2 также стандартизирован ETSI (Европейский институт телекоммуникационных стандартов) как TS 102005.

Лицензирование и патенты

Для пользователя не требуется лицензий или платежей за потоковую передачу или распространение аудио в формате AAC. Эта причина сама по себе могла сделать AAC более привлекательным форматом для распространения аудио, чем его предшественник MP3, особенно для потокового аудио (например, интернет-радио), в зависимости от конкретной области применения. Однако патентная лицензия требуется всем производителям или разработчикам кодеков AAC для "конечных пользователей". Условия лицензирования (как раскрыто SEC) предусматривают оплату за единицу продукции. В случае программного обеспечения каждый компьютер, на котором установлено программное обеспечение, считается отдельной "единицей". Ранее было распространено, что реализации свободного и открытого программного обеспечения, такие как FFmpeg и FAAC, распространялись только в виде исходного кода, чтобы избежать "иного предоставления" кодека AAC. Однако FFmpeg с тех пор стала более лояльной в отношении патентных вопросов: сборки "gyan.dev", рекомендованные официальным сайтом, теперь содержат кодек AAC, а на юридической странице FFmpeg указано, что ответственность за соблюдение патентного законодательства лежит на пользователе. (См. ниже в разделе "Продукты, поддерживающие AAC, Программное обеспечение"). К счастью, проект Fedora, поддерживаемый сообществом Red Hat, импортировал "Модифицированную версию библиотеки кодеков Fraunhofer FDK AAC для Android сторонним разработчиком" в свои репозитории 25 сентября 2018 года и включил собственный кодер и декодер AAC FFmpeg в свой бесплатный пакет ffmpeg 31 января 2023 года. Патентообладателями AAC являются Bell Labs, Dolby, ETRI, Fraunhofer, JVC Kenwood, LG Electronics, Microsoft, NEC, NTT (и его дочерняя компания NTT Docomo), Panasonic, Philips и Sony Corporation.

Форматы контейнеров

В дополнение к MP4, 3GP и другим контейнерным форматам, основанным на базовом формате файлов ISO для хранения данных, аудиоданные AAC впервые были упакованы в файл стандарта MPEG-2 с использованием формата обмена аудиоданными (ADIF), состоящего из одного заголовка, за которым следуют необработанные блоки аудиоданных AAC. Однако, если данные предназначены для потоковой передачи в транспортном потоке MPEG-2, используется самосинхронизирующийся формат, называемый потоком транспорта аудиоданных (ADTS), состоящий из серии кадров, каждый из которых содержит заголовок, за которым следуют аудиоданные AAC. Цифровое вещание DVB, использующее сжатие H.264 для видео, обычно использует HE-AAC для аудио.

iTunes и iPod

В апреле 2003 года Apple привлекла широкое внимание к AAC, объявив о поддержке формата MPEG 4 AAC в своих продуктах iTunes и iPod (через обновление прошивки для более старых iPod). Пользователи могли загружать музыку в закрытом формате с управлением цифровыми правами (DRM) с ограничением скорости 128 кбит/с AAC (см. FairPlay) через iTunes Store или создавать файлы без DRM из собственных компакт-дисков с помощью iTunes. В последующие годы Apple начала предлагать музыкальные видео и фильмы, в которых также использовался AAC для кодирования звука. 29 мая 2007 года Apple начала продавать песни и музыкальные видео от участвующих звукозаписывающих лейблов с более высокой скоростью передачи данных (256 кбит/с cVBR) и без DRM, в формате под названием "iTunes Plus". Эти файлы в основном соответствуют стандарту AAC и воспроизводятся на многих устройствах, не произведенных Apple, но содержат дополнительную информацию iTunes, такую как обложка альбома и чек о покупке, для идентификации покупателя в случае утечки файла в пиринговые сети. Однако эти дополнительные теги можно удалить, чтобы восстановить совместимость с проигрывателями, строго соответствующими спецификации AAC. По состоянию на 6 января 2009 года почти вся музыка в iTunes Store для региона США стала свободной от DRM, а к концу марта 2009 года от DRM были освобождены и остальные композиции.

iTunes предлагает опцию кодирования с "Переменным битрейтом", которая кодирует треки AAC по схеме с ограниченным переменным битрейтом (менее строгий вариант кодирования ABR). Однако базовый API QuickTime предоставляет настоящий профиль кодирования VBR. По состоянию на сентябрь 2009 года Apple добавила поддержку HE AAC (полностью входящего в стандарт MP4) только для радиопотоков, но не для воспроизведения файлов, и iTunes по-прежнему не поддерживает истинное кодирование VBR.

Nero Digital Audio (цифровой звук)

В мае 2006 года компания Nero AG выпустила бесплатный инструмент для кодирования в AAC, Nero Digital Audio (часть кодека AAC получила название Nero AAC Codec), который поддерживает кодирование потоков LC AAC, HE AAC и HE AAC v2. Инструмент представляет собой только интерфейс командной строки. Также в комплект включена отдельная утилита для декодирования в PCM WAV. Различные программы, такие как аудиоплеер foobar2000 и MediaCoder, могут предоставлять графический интерфейс для этого кодировщика.

FAAC и FAAD2

FAAC и FAAD2 расшифровываются как Freeware Advanced Audio Coder и Decoder 2 соответственно. FAAC поддерживает типы аудиообъектов LC, Main и LTP. FAAD2 поддерживает типы аудиообъектов LC, Main, LTP, SBR и PS. Несмотря на то, что FAAD2 является программным обеспечением с открытым исходным кодом, FAAC таковым не является.

Fraunhofer FDK AAC

Кодировщик/декодер с открытым исходным кодом, разработанный Fraunhofer и включенный в Android, был портирован на другие платформы. Собственный AAC-кодировщик FFmpeg не поддерживает HE-AAC и HE-AACv2, однако лицензия GPL 2.0+ FFmpeg несовместима с FDK-AAC, поэтому FFmpeg с libfdk_aac не подлежит распространению. Кодировщик QAAC, использующий Core Media Audio от Apple, по-прежнему обеспечивает более высокое качество, чем FDK.

FFmpeg и Libav

Нативный AAC-кодировщик, разработанный в libavcodec FFmpeg и портированный в Libav, считался экспериментальным и некачественным. Значительная работа была проделана для выпуска FFmpeg 3.0 (февраль 2016 года), чтобы сделать его версию пригодной для использования и конкурентоспособной с другими AAC-кодировщиками. Libav не включил эти изменения и продолжает использовать более старую версию AAC-кодировщика. Эти кодировщики распространяются под лицензией LGPL с открытым исходным кодом и могут быть скомпилированы для любой платформы, поддерживаемой фреймворками FFmpeg или Libav. И FFmpeg, и Libav могут использовать библиотеку Fraunhofer FDK AAC через libfdk aac, и хотя нативный кодировщик FFmpeg стал стабильным и достаточно хорошим для повседневного использования, FDK по-прежнему считается кодировщиком наивысшего качества, доступным для FFmpeg. Libav также рекомендует использовать FDK AAC, если он доступен. FFmpeg версии 4.4 и выше также может использовать кодировщик Apple audiotoolbox. Несмотря на то, что нативный AAC-кодировщик производит только AAC LC, нативный декодер FFmpeg способен обрабатывать широкий спектр входных форматов.