Аудио кодеки

Подготовили: Евгений Рыжков и Татьяна Головко Дата публикации: 22.03.2011

Если ты хочешь просмотреть фильм, снятый до 1927 года, то скорей всего ты захочешь к нему звуковую дорожку. Также как и видео кодек, аудио кодек — это алгоритм кодирования аудио потока. Как и у видео кодеков, у аудио есть алгоритмы с потерями и без. И аналогично — алгоритмы без потерь не подходят для Веб. Поэтому я рассмотрю только алгоритмы с потерями.

На самом деле, количество рассматриваемых кодеков я могу сузить еще больше, потому что существуют различные категории аудио кодеков с потерями. Аудио применяется во многих местах, где не используется видео (телефония, например) и существует целая категория кодеков, оптимизированный для кодирования речи. Такие кодеки не подойдут для декодирования музыкальных CD — результат будет схож с громким пением 4-х летнего ребенка. Но он незаменим для Asterisk PBX, так как тут важен каждый байт, проходящий по каналу, а такие кодеки способны сжимать речь на порядок лучше, чем обычные кодеки.

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

Как я уже упоминал, когда ты смотришь видео, твой компьютер делает следующие вещи:

  1. интерпретирует видео формат;
  2. декодирует видео поток;
  3. декодирует аудио поток.

Аудио кодеки отвечают за 3-й пункт — разбирают аудио поток, преобразуя его в цифровые сигналы, которые динамики превращают в звук. Как и видео кодеки, аудио кодеки прибегают к различным уловкам, чтобы сократить количество информации, хранящейся в аудио потоке. А поскольку я затрагиваю только кодеки с потерями, информация теряется во время такого цикла: запись → кодирование → декодирование → воспроизведение. Различные аудио кодеки «выбрасывают» различные части аудио потока, но все сводится к тому, чтобы выбросить те части, отсутствие которых человеческое ухо не заметит.

Основное отличие аудио от видео — это наличие каналов, которых у видео нет. Мы посылаем звук в колонки, правильно? А сколько колонок на твоем ПК? Их может быть две, а может быть три. Домашний кинотеатр их насчитывает шесть. Каждая колонка воспроизводит нам отдельную часть оригинальной записи. В теории, если ты сидишь, окруженный шестью раздельными источниками звука, твой мозг на это реагирует так, как будто ты находишься в гуще событий. Работает ли это? Многомиллионная индустрия, кажется, уверенна, что работает.

Большинство аудио кодеков общего назначения способны работать с двумя каналами звука. Во время записи, звук разделяется на правый и левый каналы. Во время кодирования оба канала сохраняются в один аудио поток. Во время декодирования, каждый канал направляется к своей колонке. Некоторые аудио кодеки способны обрабатывать более двух каналов и могут отслеживать, чтобы нужный канал отправлялся в нужную колонку.

Существует множество аудио кодеков. Я говорил, что видео кодеков много? Забудь про это. Аудио кодеков просто тьма тьмущая, но для Веб актуальны только три: MP3, AAC и Vorbis.

MPEG-1 Audio Layer 3

MPEG-1 Audio Layer 3 известен как "MP3". Если тебе неведом MP3, тогда даже не знаю, что с тобой делать. В продаже полно MP3 плееров.

MP3 может содержать до двух каналов звука. Каналы могут быть закодированы с различным битрейтом: 64 kbps, 128 kbps, 192 kbps — от 32 до 320. Более высокий битрейт обеспечивает более высокое качество звука, но и больший размер файла. Качество звука нелинейно зависит от битрейта (например, 128kbps в два раза лучше, чем 64kbps, но 256kbps уже не в два раза лучше, чем 128kbps). Более того, формат MP3 (стандартизирован в 1991 году) позволяет кодировать с переменный битрейтом. Это означает, что некоторые участки могут быть 128kbps, а другие 256kbps. Это сделано для возможности большей компрессии файлов. Для тишины можно использовать самый низкий битрейт, а а когда заиграет оркестр инструментов — использовать высокий.

Стандарт MP3 не определяет, как точно кодировать MP3 (хотя описывает как декодировать). Различные кодеры используют различные акустические модели, которые дают совершенно разные результаты. Проект с открытым исходным кодом LAME — это лучший кодер для всех битрейтов, кроме самых низких.

Формат MP3 имеет патент, что объясняет, почему Linux не поддерживает этот формат по умолчанию. Большинство портативных аудио проигрывателей поддерживают MP3. Этот формат может быть встроен в любой видео формат. Flash также способен проиграть файлы MP3, а также MP3 аудио поток в видео формате MP4.

Advanced Audio Coding

Advanced Audio Coding в народе ласково называют "AAC". Стандартизован в 1997 году. Обрел известность, когда Apple выбрала его в качестве формата для iTunes Stores. Первоначально все файлы AAC в iTunes Apple зашифровал собственными DRM схемами, названными FairPlay. Многие песни в iTunes доступны в незащищенном режиме, который Apple назвали "iTunes Plus". Назвали так, потому что звучание у них намного лучше, чем у других, названных — "iTunes Minus". Формат AAC запатентован, лицензирование доступно онлайн.

AAC был разработан с целью получить лучшее качество звука, чем у MP3, а так же, чтобы была возможность кодирования в любые битрейты. (MP3 ограничен фиксированным числом битрейтов с верхней границей равной 320 kbps). AAC может кодировать до 48 каналов звука, хотя на практике никто этого не делает. AAC в отличие от MP3 определяет несколько профилей, по типу H.264 и по тем же причинам. Профиль "lowcomplexity" предназначен для воспроизведения на устройствах со слабеньким CPU. Высшие профили предлагают лучшее качество звука при том же битрейте за счет более медленного кодирования/декодирования.

Все современные продукты Apple, включая iPods, Apple TV, Quick Time поддерживают определенные профили ACC для воспроизведения как аудио файлов, так и для аудио потоков в MP4. Adobe Flash поддерживает все профили AAC в MP4, так же как и open source проигрывтели Mplayer и VLC.

Vorbis

Vorbis часто называют "Ogg vorbis", хотя технически это неверно: "Ogg" — это формат файла-контейнера, а Vorbis — это аудиопоток, который может быть включен в подобные контейнеры. Vorbis не обременен патентами и потому доступен по умолчанию во многих версиях Linux и портативных устройствах, работающих под Rockbox firmware. Mozilla Firefox 3.5 поддерживает проигрывание аудио Vorbis в формате Ogg или же как аудио поток в видео формате Ogg. Мобильные устройства под Android так же способны воспроизводить аудио файлы Vorbis. Аудио потоки Vorbis обычно включены в видео форматы Ogg и WebM, но могут быть включены и в MP4 и MKV, и даже в AVI после некоторых хакерских манипуляций. Vorbis поддерживает произвольное количество каналов.

В Сети доступны кодеры/декодеры с открытым исходным кодом для Vorbis, те же OggConvert, ffmpeg, aoTuV и libvorbis. Есть так же QuikTime компоненты для Mac OS и DirectShow фильтры для Windows.

Куда дальше

Показать комментарии