Сравнение:
mp3
Плюсы: поддержка большинством устройств, Минусы: плохое качество при низком битрейте
aac
Плюсы: хорошее качество кодирования при низком битрейте Минусы: грузит процессор при воспроизведении
Намеренно не буду приводить примеры как звучит AAC, так как у него есть несколько профилей кодирования:
- Low Complexity (LC-AAC)
- High-Efficiency Advanced Audio Coding (HE-AAC)
- Main Profile
- High Efficiency Advanced Audio Coding (ААС+)
Вот последний как раз и активно используется в радиовещании. Как гласит вики:
Этот профиль, ориентированный на низкий битрейт. Представляет собой комбинацию AAC LC, но с частотой дискретизации вдвое меньшей, чем у оригинала, что существенно уменьшает накладные расходы на битрейт, затем используется технология восстановления спектра (Spectral Band Replication) путём его предсказания и использования некоторой дополнительной информации для восстановления. Естественно, такой подход не обладает большой точностью и пригоден только в случаях, когда очень необходимо уменьшить битрейт.
А так, более простым языком рассказывает Евгений:
SBR режим придумывающий частотку в обычном ААС не применяется. там естественный звук, а в плюсе — придуманная верхняя полоса от 6 кгц и выше синтезированная на основе очень сжатой инфы из исходного звука
Сделаем некоторые выводы: aac aac’у — рознь. Начав вещание — можно в том же RadioBOSS выставить aac+ и заниматься более важными делами, а их на старте радиостанции ещё много. Но потом стоит выделить время, и поиграться с настройками encoder’а, и получить более качественный звук при низком битрейте.
oggПлюсы: Свободный, лучше качество по сравнению с mp3 Минусы: Несовместим с некоторыми проигрывателями
Мнение Евгения про OGG:
За ogg тоже как то немного обидно. Ну да, флагманы не используют, ну фиг на них. Далеко не всё в Москве делается правильно, не раз убеждался, видя например базы файлов на FTP и.т.д. А при всём при этом на OGG ~68 килобит (всегда VBR) можно добиться такого же звука как 128 mp3 stereo! то есть как раз таки для экономии битрейта он тоже кому то окажется очень полезным, особенно если речь идёт о встраивании потока в сайт. Конечному пользователю в итоге будет всё равно, в чём закодировано. Любой браузер поймёт в любом случае, а звук при мелком трафике будет опять таки эффективней передан, звучать будет лучше, и даже не в моно. Если подвести итог: в случае алгоритмов звука — алгоритмы кодирования OGG примерно одинаковы с aac, вопросы только в юридических тонкостях.
Частотный диапазон AAC
AAC сжимает аудио с потерями: «лишние» частоты отсекаются, сигнал выравнивается (добавляются «перекрывающие» блоки информации), корректируются ошибки. Примерно по такому же принципу работают все lossy кодеки (кодеки для сжатия с потерями).
Потери в основном выражаются в урезанном частотном диапазоне: обычно верхняя граница ВЧ. Кроме того, из-за выравнивания сигнала могут добавляться (и чаще всего добавляются) искажения, которые могут быть в любой области диапазона.
Посмотрим, как работает AAC (источник – lossless аудио-файл) в сравнении с SBC на некоторых Android-смартфонах и iPhone:
Полный частотный диапазон с использованием AAC и SBC кодеков
Сразу видны серьёзные отличия в реализации AAC на разных смартфонах. Стоит учитывать несколько моментов:
- человек теоретически может слышать звуки в районе 20 Гц – 20 кГц;
- бОльшая часть «материала» в музыке находится ниже 16-18 кГц;
- с возрастом мы хуже воспринимаем ВЧ (до 16-17 кГц в среднем после 30 лет)
Рассмотрим край ВЧ-диапазона покрупнее:
Как видно, AAC на Huawei P20 Pro «срезает» ВЧ очень рано: около 14 кГЦ. Эти частоты слышат даже совсем немолодые люди, если не было проблем со слухом. Samsung Galaxy Note 8 (через AAC) ограничивает верхний порог до 17 кГц. Но iPhone 7 справляется лучше: около 19 кГЦ.
Особенно интересен этот разброс результатов в сравнении с работой SBC-кодека на тех же Android-смартфонах. Верхние границы диапазона на всех «подопытных» выше, хоть и с бОльшими искажениями. Но главное, что они очень похожи: то есть кодек SBC работает более-мене одинаково на разных телефонах.
Поддержка различных форматов различными браузерами:
Следует обратить внимание, что не все браузеры поддерживают определённые форматы. Собрал данные в таблицу. Данные будут верны если проигрывать радио при помощи HTML5. При использовании «старых» Flash проигрывателей, нюансов может быть больше.
Браузер / Кодек | mp3 | aac | ogg |
Google Chrome / Яндекс Браузер и прочие на Chromium | Да | Да | Да |
Mozilla Firefox | Да | Да | Да |
Internet Explorer | Да | Да | Нет |
Opera | Да | Нет | Да |
Safari | Да | Да | Нет |
Особенности AAC
Ещё один интересный момент заключается в том, что даже файлы уже закодированные в AAC, меняются при передаче по Bluetooth-версии этого кодека. То есть, перекодируются ещё раз. До этого тестовые файлы были в формате без сжатия.
Верхний край частотного диапазона. Источник – AAC файл
В общем и целом, картина повторяется. Спад у iPhone идёт ощутимо позднее и уже ближе подбирается к верхней границе слуха, в отличие от Android-телефонов.
Уровень фонового шума (AAC файл)
Из графика уровня фонового шума явно видно, что даже в iPhone AAC-файл перекодируется при передаче через Bluetooth AAC: добавляется около 15 дБ шума. Общая же тенденция не изменилась: как с lossless, так и с AAC файлами при передаче «во воздуху» через одноимённый кодек лучше выглядит iPhone: искажений пере-кодировка тут добавляет меньше.
В итоге можно сказать, что AAC – весьма интересный кодек. О его качестве нельзя судить, просто отталкиваясь от уровня фонового шума и частотного диапазона, как в случае с другими кодеками. AAC в своих алгоритмах учитывает психоакустику, слуховое маскирование – только в цифрах качество тут не измерить.
AirPods 2, естественно, поддерживает AAC
Вместо тысячи слов:
Подготовил таблицу с форматами вещания популярных FM радиостанций. Обращаю внимание, в таблице приведены потоки, который можно включить только на официальном сайте. На деле — их может быть куда больше. Их можно просто послушать и сформировать своё мнение.
Станция | Количество потоков | Формат / Битрейт |
Европа Плюс | 1 | HLS aac 96 kb/s |
Авторадио | 1 | mp3 128 kbps |
Дорожное радио | 1 | HLS aac 96 kb/s |
Русское радио | ||
Ретро FM | 1 | HLS aac 96 kb/s |
Радио Дача | 2 | aac 24 / aac 56 |
Радио Шансон | 3 | mp3 64 / mp3 128 / mp3 256 |
Юмор FM | 1 | mp3 256 kbps |
Вести FM | 5 | mp3 64 kbps mp3 128 kbps mp3 256 kbps aac 32 kbps aac 64 kbps |
Радио России | 1 | mp3 192 kb/s |
Радио Energy | 1 | aac 64 |
Маяк | 1 | aac 64 |
Love Radio | 2 | aac 24 aac 56 |
Наше Радио | 2 | mp3 64 mp3 128 |
DFM | 1 | aac 96 |
Хит FM | 1 | aac 96 |
Эхо Москвы | 1 | mp3 32 |
Серебряный Дождь | 2 | mp3 48 mp3 128 Не видно на сайте: aac 64 |
Радио Рекорд | 1 | mp3 320 |
Причины плохого качества работы кодека AAC на Android
Основных причин разницы качества AAC на Android и iOS две:
- приоритизация процессов по энергоёмкости на Android;
- разные программные средства кодирования AAC;
Xiaomi Mi AirDots Pro и Apple AirPods поддерживают кодек AAC
В Andriod есть алгоритмы Energy Aware Scheduling (EAS). Эта система изменяет приоритеты процессов по их энергоёмкости. То есть, выбор на какую задачу будет отведено больше процессорной мощности (а процессор в смартфонах выполняет огромное количество задач одновременно) может варьироваться.
Если система настроена на экономию заряда аккумулятора, как у Huawei P20 Pro, то при выполнении сложной для процессора задачи приоритет будет отдан именно оптимизации энергопотребления. Как было показано выше, AAC использует психоакустические алгоритмы при кодировке, а это довольно тяжёлая нагрузка на процессор. Соответственно, эта задача будет выполняться с меньшим битрейтом и качеством в целом для оптимизации затрат энергии.
Sony WF-SP700N – полностью беспроводные наушники с поддержкой AAC
Если бы EAS дал процессу кодировки AAC высокий приоритет, он сильно «просаживал» бы батарею, хотя качество бы улучшилось. Но в приоритете именно экономия заряда, качеством EAS в данном случае жертвует.
Вторая основная причина – разные «кодировщики», программные средства кодирования AAC. В iOS используется Apple AAC, считающийся наиболее качественным из существующих. А в Android по умолчанию – Fraunhofer FDK AAC, он чуть хуже «справляется со своими обязанностями».
Apple AAC, естественно, не существует «под» Linux, поэтому установить его на Android-смартфон не удастся. А на iPhone, как известно, вообще лучше ничего стороннего не устанавливать.