Это наверное самый логичный шаг после обкатывания и отладки новой методики тестирования: взять кодеки с потерями, которые все считают одними из лучших, и посмотреть, кто кого? В сегодняшнее тестирование попали:

  • Apple AAC LC — утилита afconvert, входящая в состав MacOS.
  • Ogg Vorbis libvorbis 1.3.6 aoTuV b6.03 — наиболее свежая модификация с оптимизациями качества кодирования.
  • Opus 1.3.1 — самый современный кодек и формат кодирования с потерями, позиционируется как лучший на момент написания статьи.
  • LAME 3.100 — самая свежая стабильная версия кодека для работы с популярным и по сей день форматом MP3.

Могу сказать, что ради интереса я поверхностно прогнал старичков faac и nero для кодирования в AAC LC. Можно сказать, faac сдался сразу же, на частотах выше 6 кГц он вёл себя на порядок хуже конкурентов. А вот nero удивил, сухие цифры говорят, что он и по сей день прекрасен на частотах до 9500 Гц и даже вполне в паритете с современным Opus! Но, начиная с 13 кГц nero полностью проваливается и сдаёт все позиции конкурентам. Эти два кодека я всё же решил убрать из результатов тестирования. Вероятно, я сделаю обзор на них позже.

В будущем я также думаю сделать обзор, насколько в действительности модификация aoTuV улучшает качество оригинального кодека Ogg Vorbis.

Но давайте продолжим, кто же из 4 перечисленных претендентов на лучший кодек сможет отстоять своё звание?

Параметры исследования

  • Описание методики тестирования
  • Железо: MacBook Pro 2018 года с процессором 2.3 GHz Intel Core i5 Coffee Lake (8259U), 6 MB L3
  • Эмуляция: в данном исследовании с Wine запускался только кодировщик Ogg Vorbis, поэтому стоит это учитывать в скорости кодирования

Командные строки запуска кодеков:

Apple AAC LC afconvert

afconvert --bitrate 186000 -q 127 -d aac -f m4af <input> <output>
afconvert -f WAVE -d LEI16 <input> <output>

Ogg Vorbis libvorbis 1.3.6 aoTuV b6.03

oggenc2.exe -Q --bitrate 200 -o <output> <input>
oggdec -Q -o <output> <input>

Opus 1.3.1

opusenc --quiet --bitrate 192 <input> <output>
opusdec --quiet <input> <output>

LAME 3.100

lame --silent --preset standard <input> <output>
lame --silent --mp3input --decode -t <input> <output>

Битрейты были подобраны так, чтобы размеры итоговых файлов были примерно одинаковыми: в диапазоне от 11.4 до 11.8 МБ. Оригинал был сжат более чем в 7 раз.

Результаты

Давайте начнём с самого интересного, анализа вносимых искажений. Не могу сказать, что нам открывается что-то поразительное, но, тем не менее, картина весьма занятная.

Искажения

Искажения

Что же у нас тут?

Apple AAC LC называют одним из лучших потребительских AAC кодеков на сегодняшний день. И действительно, он прекрасно держится и проигрывает только технологичному Opus. Но у нас будет ещё одна важная рубрика, посмотрим, как он поведёт себя дальше. Говоря более детально, он хорошо себя показывает на частотах до 3.5 кГц, и до самого потолка, можно сказать, держится наравне с Ogg Vorbis, то слегка выигрывая, то проигрывая.

Ogg Vorbis уже довольно старый формат и на диапазоне самых важных, на мой взгляд, частот от 1 кГц до 4.3 кГц проигрывает всем в степени искажений. Тем не менее, на высоких частотах от 7кГц он с лёгкостью обходит другой ещё более почтенный кодек LAME.

LAME обладает одной из самых низких степеней искажений до 3.5 кГц, затем постепенно сдаёт позиции и проваливается на частотах 6 кГц и выше. Кодек, история которого начинается больше 20 лет назад даже сегодня показывает вполне достойные результаты.

Opus наконец выглядит безусловным фаворитом этой рубрики. Я думаю, вы тоже заметили, что я опускаю рассмотрение искажений на низких частотах, где этот кодек выглядит хуже всех, но, учитывая логарифмическую шкалу и порядки искажений в сотые доли процента, не стоит так сильно упирать на этот момент. Тем не менее, стоит отметить, Opus действительно ведёт себя заметно хуже других кодеков на частотах до 1 кГц, но это примерно 0.04% у других и 0.08% у Opus. Это достаточно низкие показатели в абсолютных величинах. На частотах выше, вплоть до 14 кГц, этому кодеку нет равных, он идёт с большим отрывом, затем ненадолго сравнивается с Apple AAC и снова уходит в отрыв на сверх-высоких частотах выше 16.5 кГц. Стоит сказать, что этот кодек меньше всего «зарезает» сверхвысокие частоты, хотя для среднестатистического человека с обычными наушниками эти частоты уже почти не слышимы.

Скорость кодирования

В этой рубрике кодировщик Ogg Vorbis работал в эмуляторе Wine, поэтому не будем брать в рассмотрение его слабый результат. Могу сказать, что без эмулятора кодировщики Ogg Vorbis весьма и весьма быстрые.

Скорость

Кодеки отсортированы по скорости декодирования по возрастанию. Тем самым мне хотелось сделать акцент на бытовое применение кодека, так как зачастую именно с этой процедурой сталкиваются потребительские устройства вроде плееров и смартфонов.

Что ж, несмотря на всю свою технологичность, очевидно, что декодирование музыки в формате Opus будет требовать гораздо больших вычислительных ресурсов. Если сравнить с кодеком AAC Apple, то эта разница просто феноменальна и достигает 7 раз!

Что же касается декодеров Ogg Vorbis и LAME, они показывают себя наравне. Хм, здесь очень интересно, насколько оптимальный декодировщик встроен в Spotify, потому что, если результаты их плеера сравнимы с полученными выше, то Apple Music, вероятно, окажется намного более долгоиграющим на одном заряде. Стоит учитывать, что при тестировании использовались оригинальные и референсные декодеры, которые в других реализациях могут показать гораздо более высокие результаты. Впрочем, то же самое можно сказать и про Opus.

Итоги

Очень сложно вынести окончательный вердикт, так как, с одной стороны, Opus и правда справляется со своей задачей намного лучше конкурентов. Но, с другой, он выглядит очень требовательным к ресурсам. Учитывая всё, я думаю, что готов объявить результаты:

  1. Первое место делят между собой кодеки Apple AAC и Opus 1.3.1. Это лучшие кодеки сжатия с потерями среди выбранных претендентов. Применяйте их в зависимости от вашей сферы: если вам нужно воспроизведение на слабых устройствах, берите Apple. Если же вы хотите получить лучшее качество без оглядок на требовательность к ресурсам: с уверенностью применяйте Opus.
  2. Второе место отдаётся Ogg Vorbis libvorbis 1.3.6 aoTuV b6.03. Хоть он и провалился на средних частотах, но всё же на частотах выше показал себя весьма неплохо.
  3. Третье место занимает LAME 3.100 из-за его слабостей на высоких частотах и ярко-выраженной полочки со срезом сверхвысоких частот.

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