Audiophile's Software

Сравнение одиннадцати лучших lossless кодеров (2017)

Дата обновления: 05 Сентября 2017
2017-09-05T19:02
Audiophile's Software

Copyright (C) 2017, Taras Kovrijenko

Полное или частичное копирование текста допускается только с письменного разрешения автора.



Обратите внимание: это обновлённая версия теста. С результатами теста за 2011 год (для сравнения) можно ознакомиться здесь.

1. Вступление

Идея о создании этого теста родилась у меня, когда я обнаружил, что существующие на тот момент аналогичные сравнения сильно устарели (последний тест датирован 2007 годом). Большинство из них проводилось на старых слабых процессорах, с использованием давно забытых версий кодеров.

Идея же моего теста заключается в том чтобы показать возможности последних версий кодировщиков на более современном оборудовании. Значительный прирост скорости кодирования/декодирования в этом случае можно получить за счет использования таких наборов инструкций, как SSE2, SSE3, SSSE3, которые поддерживаются новыми процессорами, и конечно же — за счет многоядерности.

Стоит заметить, что в тесте рассматривается лишь три параметра: скорость кодирования, скорость декодирования и степень сжатия. Я умышленно не беру во внимание проблемы совместимости, так как это значительно затрудняет возможность сделать какое-либо конкретное заключение.

2. Подготовка к тесту

2.1 Оборудование

Процессор: Intel Core i3 530, 2933 MHz (x86, x86-64, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2)
Мат. плата: Asus P7H55-V
RAM: 4x2Gb DDR3-1333
Видеокарта: nVidia GTX460 MSI Hawk 1GB DDR5

Все технологии энергосбережения и HyperThreading отключены в BIOS материнской платы. Чтобы исключить задержки, связаные с записью/чтением HDD, для тестов используется RAM диск (Z:, 3 Гб).

2.2 Программное обеспечение

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

ОС: Windows 10 Pro 64-bit
Видеодрайвер: ForceWare 385.41 WHQL

-----------------------------------------------------

foobar2000:
Core (2017-07-10 05:24:08 UTC)

foobar2000 core 1.3.16

foo_benchmark.dll (2017-09-04 20:26:52 UTC)
Decoding Speed Test 1.2.3

foo_bitcompare.dll (2017-09-04 20:26:52 UTC)
Binary Comparator 2.1.1

foo_converter.dll (2017-07-10 05:22:28 UTC)
Converter 1.5

foo_input_la.dll (2010-12-08 22:45:00 UTC)
Lossless Audio(La) decoder 0.01

foo_input_monkey.dll (2017-09-04 20:26:54 UTC)
Monkey's Audio Decoder 2.1.7
foo_input_ofr.dll (2017-09-05 14:18:58 UTC)
OptimFROG Lossless/DualStream Decoder 1.31

foo_input_std.dll (2017-07-10 05:22:04 UTC)
FFmpeg Decoders 3.2.4
Standard Input Array 1.0

foo_input_tak.dll (2017-09-04 20:26:54 UTC)
TAK Decoder 0.4.7

foo_input_tta.dll (2017-09-04 20:26:54 UTC)
TTA Audio Decoder 3.4

foo_ui_std.dll (2017-07-10 05:22:34 UTC)
Default User Interface 0.9.5

foo_verifier.dll (2017-09-04 20:26:54 UTC)
File Integrity Verifier 1.1.2
-----------------------------------------------------

Кодеры:
FLAC 1.3.2 GIT20170314 x64 ICL
Flake 0.11
FLACCL 2.1.6
Lossless Audio (LA) Compressor v0.4b
Monkey's Audio Console Front End v4.22
OptimFROG Lossless Audio Compressor v5.100 x64
refalac 1.64
TAK v2.3.0
TTA 2.3 64-bit SSE4
WMA 0.2.9c 64-bit
WavPack v5.1.0

[СКАЧАТЬ ТЕСТОВУЮ СБОРКУ] (4.79 МБ)

Для процесса плеера (а также для конвертера в его настройках) был установлен приоритет реального времени.

2.3 Музыкальный материал

Для теста был выбран образ диска одного из современных композиторов электронной музыки. Запись имеет широкий частотный и относительно неплохой динамический диапазоны.

Artist/Album: Armin van Buuren — Mirrage
File path : D:\lossless comparison\Image.wav
File size : 804MB (843 702 428 bytes)
Duration : 1:19:42.893 (210925596 samples)
Sample rate : 44100 Hz
Channels : 2
Bits per sample : 16
Bitrate : 1411 kbps
Codec : PCM
Encoding : lossless

2.4 Подбор параметров кодирования

Изначально я планировал провести сравнение при максимальных настройках сжатия для каждого кодера. Но по некоторым причинам это представилось невозможным, да и смысл такого теста был бы весьма сомнителен. Например, чтобы закодировать 30-секундный отрезок стандартного звукового материала кодеком OptimFROG с максимальными параметрами, уходит 230 секунд (скорость кодирования около 0.13х). Таким образом я сформулировал следующие требования:

  • скорость кодирования не менее 1x
  • скорость декодирования не менее 2х
  • возможность использовать для сжатых файлов прокрутку (seeking).

Так как прирост сжатия по мере увеличения параметров уменьшается, степень сжатия с выбранными мною параметрами практически не отличается от максимальной.

Общие параметры конвертера:

Output bit depth: Auto
Dither: Never
Output folder: Source track folder
Fiilename pattern: %filename%
Processing: None
When finished: Do nothing

Кодеры и параметры

Примечание: для кодеров, не имеющих возможности кодировать на лету, входной файл был указан непосредственно в параметрах (вместо переменной %s). Это сделано с той целью, чтобы кодирование происходило непосредственно из файла-источника в конечный, без создания временного (что занимает значительное время и искажает результаты). Ниже параметры для упомянутых кодеров указаны с переменной %s.

-s --ignore-chunk-sizes -8 — -o %d

Установлена максимальная степень сжатия, включён тихий режим и игнорирование размера в заголовке WAV.
-q -12 %s -o %d

Установлена максимальная степень сжатия, включён тихий режим.
-q -11 --lax --slow-gpu --cpu-threads 2 — -o %d

Установлена максимальная степень сжатия, включён тихий режим, включён режим переноса части расчетов на CPU.
-high %s %d

Включён режим повышенного сжатия.
%s %d -c5000

Установлена максимальная степень сжатия (Insane).
--silent --encode --mode bestnew --experimental %s --output %d

Включён тихий режим, режим наилучшего сжатия, а также экспериментальная технология сжатия.
-s --ignorelength — -o %d

Включён тихий режим.
Параметры:
1 ядро: -e -p4m -ihs -silent — %d
2 ядра: -e -p4m -ihs -tn2 -silent — %d

включён режим максимального сжатия, игнорирование размера в заголовке, тихий режим. Второй набор параметров содержит ключ, включающий использование двух ядер процессора.
-eb — %d

Данный кодер не требует дополнительных параметров кодирования.
- %d --silent --codec lsl

WMA 9.2 lossless (16 бит, 44.1 кГц), тихий режим.
-q -i -hh -x6 — %d

Extra High сжатие, асимметричное кодирование 6й степени, игнорировать размер в заголовке, тихий режим.

3. Методика тестирования

3.1 Кодирование

После подготовки дело остается за малым. Первый этап тестирования выглядит следующим образом:

  1. Закрыть в диспетчере задач все процессы, кроме необходимых.
  2. Запустить foobar2000 и установить для процесса foobar2000.exe максимальный приоритет.
  3. Добавить в плейлист файл Z:\Image.wav
  4. Выделив файл в плейлисте, нажать кнопку конвертации, загрузить первый профиль конвертера и запустить процесс кодирования.
  5. По окончании конвертирования записать время и скорость кодирования (в виде N*realtime) из консоли плеера.
  6. Выполнить то же самое с использованием каждого из 9-ти профилей конвертера. Полученные файлы добавить в плейлист.
  7. Записать размер сжатого файла, степень сжатия (в %) и FBR (см. ниже) для каждого кодера.

После выполнения кодирования я получил следующий результат:

В плейлисте отображается имя файла, кодек, FBR (file-based bitrate = размер файла/продолжительность), степень сжатия в % и размер файла в мебибайтах.

3.2 Верификация

Сжатый файл должен нести все необходимые для восстановления исходного потока данные. Для проверки достоверности я произвел сравнение всех полученных файлов с исходным с помощью плагина Binary Comparator. Для того чтобы провести такое сравнение, надо выделить несжатый и тестируемый сжатый файлы в плейлисте, в контекстном меню выбрать Utilities->Bit-Compare Tracks.

Для всех форматов, кроме LA, результат был положительным (No differences in decoded data found).

В случае с LA плеер закрывался с ошибкой. По этой причине, декодирование файла Image.la пришлось производить с помощью консольного кодера/декодера la.exe и библиотеки la-core.dll (которые использовались для кодирования). Полученный таким образом несжатый поток оказался идентичным исходному. Из этого можно сделать заключение, что декодер LA в foobar2000 работает некорректно, но при кодировании кодер информации не теряет и её можно восстановить.

3.3 Декодирование

Скорость декодирования оценивалась с помощью плагина Decoding Speed test. Декодирование происходило с высоким приоритетом, в 5-10 проходов. Буферизация в память отключена (файлы и так физически находятся в ОЗУ), количество потоков установлено в 1 (в стандартных условиях декодирование происходит именно в один поток). Окно плагина изображено ниже.

Для каждого кодера записывалось среднее время и скорость декодирования.

Примечание: для формата LA декодирование выполнялось через консоль (см. "Верификация").

4. Результаты

Результаты тестирования оформлены в таблицу и отсортированы по убыванию степени сжатия.

Кодек Степень сжатия FBR, кбит/с Размер файла, МБ Время сжатия, c Скорость сжатия Время декодирования, с Скорость декодирования
LA 66,55% 939 535,55 589,28 8,11x 519,90 9,20x
OFR 66,74% 941 537.06 1028,78 4,65x 558,19 8,57x
APE 67,23% 948 540,98 252,92 18,91x 327,8 14,59x
TAK 67,79% 956 545,53 128,91 37,10x 12,62 379,02x
TAK
(2 ядра)
67,79% 956 545,53 78,92 60,60x 12,67 377,36x
WV 68,75% 970 553,28 1741,86 2,74x 39,86 119,99x
FLACCL 69,51% 980 559,36 14,01 341,40x 10,99 435,21x
TTA 69,60% 982 560,12 22,94 208,51x 32,42 147,53x
Flake 69,67% 983 560,66 432,33 11,06x 14,07 340,03x
FLAC 69,90% 986 562,49 39,98 119,61x 9,13 523,48x
ALAC 71,00% 1002 571,38 42,56 112,37x 18,92 252,822x
WMA 71,68% 1011 576,81 38,72 123,52x 32,26 148,28x
PCM 100% 1411 804,67 - - - -

5. Заключение

1. Lossless Audio (LA) — этот весьма старый кодек (2004 г.) стал безусловным победителем по сжатию. При этом надо отметить вполне приемлемую (в сравнении с тем же OptimFROG или WavPack) скорость кодирования, а также достаточную скорость декодирования. Хоть файл LA и не декодировался с помощью плагина foo_benchmark, проигрывался он прекрасно, без запинок и задержек при прокрутке.
Остаётся только удивляться, почему автор забросил такой прекрасный кодек, даже не открыв при этом исходный код.

2. OptimFROG — не слишком отстает от LA. Но по скорости его едва ли можно назвать быстрым. Кроме того, неприятным моментом является высокая задержка при прокрутке файла — порой это сильно напрягает.

3. Monkey's Audio — популярный, но ресурсоёмкий кодек. Дает действительно высокое сжатие, но, опять же, имеет проблемы с прокруткой.

4. TAK — этот активно разрабатываемый кодек не перестает радовать. Если брать во внимание все три параметра (сжатие, кодирование, декодирование), TAK выглядит наиболее привлекательно. Высокая скорость работы объясняется активным использованием процессорных оптимизаций (в т.ч. SSSE3). А использование двух ядер дает почти двукратный прирост скорости кодирования! Таким образом, в случае с TAK преимущество от использования современных процессоров наиболее ощутимо.

5. WavPack — честно говоря, я не знаю, за счет чего этот кодек приобрел популярность. Кодирование со средней степенью сжатия дает результаты сравнимые с FLAC, а использование режимов высокого сжатия приводит к неоправданному понижению скорости. Хотя, главным плюсом этого кодека является его широкая поддержка и функциональность (в т.ч. поддержка многоканального аудио, гибридного режима), но напомню, что эту сторону вопроса мы в данном тесте не рассматриваем.

6. FLACCL — без сомнений, это очень высокопроизводительный кодер, который рекомендуется к использованию всем, у кого есть видеокарта с поддержкой CUDA. Кроме того, с его помощью можно, хоть и незначительно, но увеличить степень сжатия во FLAC.

7. True Audio (TTA) — тут надо отметить разве что очень высокую скорость кодирования и приемлемую степень сжатия (чуть выше чем у FLAC). При этом скорость декодирования нельзя назвать очень высокой.

8. Flake — преимущество от использования этого кодера с максимальным сжатием весьма сомнительно. Кроме того, такие высокие настройки сжатия могут привести к потере обратной совместимости с некоторыми аппаратными декодерами. Вероятно, этот кодек даст какое-то реальное преимущество по скорости (в сравнении с референсным flac.exe) только при уровне 8 и ниже.

9. FLAC — степень сжатия средняя, но вот скорость декодирования порадовала. Правда, главной причиной лидерства этого кодека среди общественности является открытый исходный код, и, как следствие, широчайшая аппаратная/софтовая поддержка.

10. Apple Lossless (ALAC) — низкий уровень сжатия, скорость сжатия — средняя. Стоит отметить значительный рост скорости декодирования по сравнению с результатами 2011 года (253x против 39x) — это, скорей всего, результат обновления декодера ALAC в foobar2000 (не так давно он был встроен в плеер).

11. WMA Lossless — ещё меньшая степень сжатия, чему ALAC, средняя скорость сжатия. Скорость декодирования приемлемая. Трудно представить случай, в котором возникла бы необходимость использовать именно этот lossless кодек.

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


Информация от спонсора

MEGOGO.NET: бесплатные мультики смотреть онлайн. Огромная коллекция самых лучших и новых мультфильмов.

 
   
Категория: Авторские статьи | Автор: | Добавил: Audiophile
Просмотров: 53893| Рейтинг: 5.0/5, голосов: 3
Комментариев: 18
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
0   Спам
[13] winaptziaz (27 Февраля 2016 15:57)
Заметьте, из форматов APE/TAK/WV/TTA/FLAC на 44 КГц лидирует APE, но на 88-192 КГц лидирует ТАК.

Я сильно зациклился на проблеме хранения музыки на диске, поэтому искал самый сжимаемый вариант, чтобы хранить "исходный звук". Для прослушивания всё равно всё сжимаю в Nero AAC CBR 320 и вполне хватает. Лучше lossy чем этот -- не найти! :)
Теперь побаиваюсь случайно повредить файлы и ищу самый сжимаемый архиватор, чтоб чуть что -- ошибки показывал. Вот это паранойя... Oo
0   Спам
[14] purpore (25 Октября 2016 06:38)
Если нравится кодек с потерями - рекомендую Opus - это лучший кодек на сегодня! Я сам когда-то использовал Ogg, но перешёл на Opus когда узнал о нём. AIMP кодирует им превосходно, настройки на максимальное качество (НЕ БИТРЕЙТ), битрейта хватает 160 - 224kBs если рипать с CD, 320kBs в mp3 - это 160kBs в Opus! wink
+2   Спам
[15] arbuzzoff (20 Февраля 2017 20:27)
опус прекрасен, но лучше чем lossyTAK не найти dont_know
0   Спам
[16] purpore (21 Февраля 2017 04:05)
Согласен на 100%, но это же безпотерьный кодек - Lossless, а не Lossy. Следовательно и размер у него как и у всех "полноприводных"! Хотя технология самая передовая. worship
0   Спам
[17] svanto (21 Февраля 2017 19:54)
Чем Opus лучше Ogg ? Наверное просто новый и набирающий популярность? То, что он сдвигает фазу между каналами и режет верхи почему-то никто не говорит; делается упор на малую временную задержку - но это не преимущество. Opus идеально подходит для интернет радио и передачи голоса /Viber/, на низких битрейтах 64 кбит/с он вне конкуренции. Но на высоких Ogg q10 - лучше.
P.S. lossyTAK - использует предварительную обработку утилитой losssywav поэтому битрейт около 350 кбит/с wink
0   Спам
[18] purpore (23 Февраля 2017 19:06)
... да хотя бы своим откликом от 5 ms, и это немало! и звук шикарный, и бас и верха держит не хуже Ogg, и ничего не режет, и не задирает до железного звона как Ogg на малых битрейтах; и потом о каком фазовом сдвиге идёт речь, в чём это выражается и как отражается на прослушивание по ощущениям? никаких отрицательных аспектов лично я не заметил, а я человек дотошный и проверил кодек в "хвост и в гриву", и не с бухты - барахты перепрыгнул на Opus с Ogg, - это было не совсем простым выбором для меня - решиться на смену кодека!
0   Спам
[12] Ловкач (14 Ноября 2015 19:28)
Когда у уважаемого автора появится время, очень хотлеось бы увидеть сравнение с обновленными версиями - FLAC 1.3.1, FLACCL 2.1.6, TAK 2.3.0 и т.д. Кстати, в составе последней версии энкодеров CUETools, кроме FLACCL и Flake, появился еще ALAC - навреное, тоже усовершенствованный?
+1   Спам
[11] Rollinnn (06 Июня 2015 14:08)
Rollinnn
Сравнивать wavpack при использовании -x6 и при этом утверждать, что "использование режимов высокого сжатия приводит к неоправданному понижению скорости" - некорректно. С таким же успехом можно утверждать, что flac - очень медленный, если использовать для него -e или -e -p, или -A tukey(0.5) -A flattop.
-----------------------------------------------------------
Для тех, кто ещё не видел. Самый свежий на данный момент сравнительный тест lossless кодеков: http://www.audiograaf.nl/lossles....204.pdf
0   Спам
[10] NGC6611 (12 Апреля 2013 15:32)
Хорошая статья, но все же два замечания у меня есть.
1) Никто в здравом уме в WavPack hhx6 не кодирует. По личным тестам от этого есть прок только для определенных типов музыки (эмбиент, например). При hhx3 скорость упаковки приемлемая, а результат зачастую лучше флаки, в среднем плотнее на 4-7 метра при стандартной длине альбома. Из-за этого не согласен с заключением по поводу WavPack, к тому же не стоит забывать, что он свободный кодек, и проигрывается на всех популярных ОС (в отличии от TAK, который жуется только на винде и только несколькими плеерами).
2) Тест на одном альбоме не совсем объективен. У меня имеется альбом, который WV hhx1 кодирует на 10 метров сильнее флаки8, при hhx3 уже на 20 метров, и более чем на 25 при hhx6, достигая сжатия, сравнимого с обезбяной -c4000. Однако, есть альбом, который флакой ужимается так, что WV / TTA / ALAC проигрывают метров 20 и более. Так что хотелось бы видеть более объемный тест - примерно как тут (50 разных композиций, разных жанров, правда тест 2008 года).

По поводу победителя конечно претензий нет - TAK объективно сейчас лучший по показателю скорость/плотность, за ним будущее, если конечно Томас наконец-то додумается до очевидного и откроет исходники в ближайшие год/два. Иначе поезд уйдет - там кажется xiph планируют продвинутый современный гибридный lossy/lossless кодек пилить (кодовое название Ghost), ориентировочно на 2015 год.
+1   Спам
[9] plov333 (16 Декабря 2011 19:10)
plov333
Не перечетал, а перечитал pardon
0   Спам
[8] plov333 (16 Декабря 2011 19:08)
plov333
А, дошло yahoo Спасибо! Перечетал статью. Только странно как красную надпись ВНИМАНИЕ! не заметил...
0   Спам
[7] plov333 (16 Декабря 2011 16:32)
plov333
У меня два вопроса: в тесте lossless кодека wavpack вы используете асиметричное кодирование 6 уровня потому что в исходном треке есть синтетические сигналы, если нет, то почему? И второй в тестах lossy кодеков mp3 320 kbps вы используете lame 3.98.4, хотя в тесках кодеров mp3 вы назвали лучшим на данном битрейте lame 3.93.1. Почему? Заранее спасибо.
Ответ: 1. Потому что это максимально возможное сжатие.
2. В каком месте я называл лучшим 3.93.1? Также советую внимательно прочитать предисловие к аналогичному тесту:
http://audiophilesoft.ru/publ/software/encoders_test/4-1-0-53
0   Спам
[6] Rollinnn (18 Января 2011 17:20)
Rollinnn
Пардон, видимо у меня старая версия foo_input_alac была...
0   Спам
[5] Rollinnn (14 Января 2011 17:28)
Rollinnn
Плагин для декодирования ALAC в foobar'е какой-то тормознутый. При декодировании через командную строку скорость получается в несколько раз больше (это при том, что идет запись в файл).
Ответ: alacdec.exe из пакета qaac?
0   Спам
[2] Songs0fFailure (26 Декабря 2010 14:53)
Songs0fFailure
Любопытно было бы посмотреть подробные тесты TAK vs FLAC. Может даже на разном материале.
Поигрался с Tak немного. Вот только редко встречается в дикой природе :|
Нам остается только ждать и надеяться.

зы. Может добавить в Програмы Pleasurize Music Foundation TT Dynamic Range Meter v1.4a ? :)
И ещё, например, в Кодеры и утилиты:
Audio Identifier
MP3 Diags
Mr QuestionMan
MP3val
+1   Спам
[3] Audiophile (26 Декабря 2010 15:26)
Audiophile
Да, я как-нибудь сделаю подробное сравнение - с графиками и всем полагающимся.

Насчет утилит.
AudioIdentifier - более чем заменяется фубаром (просмотр версии кодера и параметров, если они указаны) и EncSpot'ом (информация о MP3 и LAME Tag в нем более детальна и удобнее оформлена).
MP3Val - заменяется фубаром (fix vbr mp3 header, rebuild mp3 stream)
MP3Diags - буду благодарен, если дадите ссылку на исполняемый файл windows. Назначения пока не понял.

Mr QuestionMan - тоже заменяется фубаром.

Спасибо за помощь, но я размещаю только лучший в своем роде или же уникальный софт.
Создать архив всех существующих утилит - не в моих целях.

0   Спам
[4] Songs0fFailure (26 Декабря 2010 16:46)
Songs0fFailure
На всё есть фубар :)
на sf кажется были
http://sourceforge.net/projects/mp3diags/files/
Его если под linux только. Под win и так хватает свяких mp3-tag-что-то.
0   Спам
[1] Songs0fFailure (26 Декабря 2010 00:45)
Songs0fFailure
Если разница в степени сжатия между FLAC и TAK не очень и велики(2.3% тут) и хранится это всё на hdd, да и архивируем по сути один раз и ещё есть flake же =)
То время\скорость декодирования имхо очень важная вещь. Все же хотят ещё этот самый lossless на портативе слушать :)
Там же нет intel и amd, и памяти не много часто. А если и сможет устройство через себя пропустить это и не пожавиться, так батареи на долго ли хватит ?

И кажется на rutracker писали, что автор не хочет открывать код :(
Ответ: Заметьте, что тут тестировались максимальные параметры сжатия. А они обычно крайне не оптимальны. Так что при оптимальных параметрах TAK может FLAC и обойти, а портативу не составит труда декодировать такое аудио.
исходный код - это да, жаль. но возможно, автор прост хочет досконально отточить кодек для начала. иначе он обрекает кодек на отсутствие каких-либо перспектив