Блог Андрія Огороднікова Хто з мечем до нас прийде, від меча й загине.

Exhale

17.04.2021, 15:07

Э… Собрав 22-й том WAC, я, как и задумывал, полез клепать заметку про кодирование аудиоформатов (encoding). Собственно, идея была — систематизировать все это не самое однозначное деяние (сколько копий в интернетах ломается о мягкие и твердые места оппонентов) — и показать, как можно это делать просто, сердито, быстро, точно и наглядно. И даже подручно (кнопки для Total Commander — выделяем файлы, жмакаем на панельке и — всё огурцом… ).

А споткнулся вот на чем: решил взглянуть, не появилась ли новая версия opus’a — не обновляемая два года уж… И наткнулся на обсуждение «бага», коего разработчики багом не признают — появление слышимых щелчков при кодировании треков с некоторым частотным контрастом… А до сего момента я считал этот кодек лучшим для кодирования любой [почти] музыки в диапазоне до 100 kbps с т.н.в.о.к. «прозрачным» восприятием получившихся «конвертов».

Настроение как-то приспустилось. Нашел и сэмплы, где смог воспроизвести щелчки (даже на максимальных битрейтах!). Буф.. Учитывая, что проблема отрицается, и никто не прикасался к разработке уже значительное время — рекомендовать кодек я больше не могу с прежним энтузиазмом

Но весы как-то ненавязчиво качнулись в сторону робкого равновесия, в соседней теме обнаружил горячее обсуждение новой разработки Extended HE-AAC — ака Exhale. Добыл скомпилированный экзешник, подключил к конвертеру foobar2000 — поигрался.

ВПЕЧАТЛЯЕТ. Тупо субъективно, оф кос.

Проблема пока в минимальной поддержке даже программными средствами: есть только плагин для того же foobar2000.

Но разработка активна, открытые исходники, версия 1.1.4 от 4-го числа.

Потенциально — бомба. Если не похерится. (Э, сколько таких бомб за четверть века проявлялось, а mp3 до сих поръ с навершия бугра похохатывает над этой возней…)

Ну ладно, это так…

—=•=·•·=•=—

Все немножко затягивается. Консольный энкодер Lame 3.100 (напрямую) не понимает и не кодирует flac. Даже не знаю, как его подружить, потому что я даже поставил в систему кодеки и прописал flac.exe в PATH (что помогло для musepack (mpc) видеть и прекрасно работать с flac).

Я просто пытаюсь сделать все возможные кнопки для Total Commander (самому интересно). У меня были тупо две: для «обычного» aac в контейнере m4a и для opus — для личных целей я конвертировал в подавляющем большинстве случаев в тот (побольше битрейт) или другой (поменьше битрейт) формат. Все остальное, если требовалось — шло через foobar2000 — там у меня куча настроенных пресетов, просто это дольше, больше движений.

Ну и вот — хочу всё в баре, но не в фубаре (бар в Тотале — стандартное название панели с кнопками)…

Как только lame — единственный и признанный лидер конвертирования (кодирования) в mp3 закапризничал, я чего-то захотел удариться в винтажъ. Стал вспоминать, чем я кодировал на заре Перестройки в преддверии миллениума. Это был какой-кто модный японский кодек, который потом втюхивали местные умельцы в составе гумнопрожки, называя его «лучшим кодеком 2000». УУУУ! Я его таки нашел. UZURA3 — с необычной психоакустической моделью. Хочу поиграться. Не надеясь на кнопку, но в составе фубара хотя бы.

[Нет, для кнопки если что — отлично идет гигантский хряк под названием ffmpeg — 107 мб (в 2000 году это был бы копец) — комбайн, на котором построены вот такие вот всякие кодирующие-конвертирующие прожки (легионы их пасутся на готовеньком). Консольная штука, в основном заточенная для переработки видеоформатов. Но может шкодить и мр3.]

А еще был кодек Blade и кошерный «Звук эмпэтри от Фраунгофера» — кодек от создателей, да еще и с поддержкой 6 канального звука! Но все они сдохли вместе с мамонтами. Собственно, Фраунгофер положил и на мп3 — не став продлевать патент. МП3 — свободен нынче. Во как!

Брр.

Чуть теплые ламповики рекомендуют кодить lame 3.93 — там по-моему предыдущая психоакустика, та еще, ленинская.

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

99% населения в 99,9 % случаев не услышат разницы между даже обычным 16/44 беспотерьным флаком-таком-фуяком и ДАЖЕ mp3 в районе 192 kbps (для нормальных кодеков этот порог прозрачного битрейта 112 и меньше).

Что не отменяет совет хранить исходники в «беспотерьности». Заливаем на жесткие терабайты Flac-8* (максимальное сжатие, это как архив), а в мобилу шкодим аас-128 как максимум. Opus 96 вполне слушабельный, а количесво файлов на полезный гигабайт…

Каждому свое.

..

У упомянутого выше Exhale максимальное качество (еще раз — максимальное) = примерно 192 kbps (9-й пресет cvbr). Цифровые пресеты 0-9 идут без синтезирования высоких частот, буквенные пресеты a-g с синтезированием. Это чтобы артефакты не сыпались на низких битрейтах.

При этом, автор позиционирует кодек как «средний» — явно отказываясь от низкобитрейтных примочек. То есть интересная ниша намечается.

Кстати, для свежих Андроидов-Айфонов тот же и-нт Фраунгофера выпустил декодер и для xHE-AAC. Будущее менее туманно у этого проекта. Но я все еще не представляю, что должно случиться, чтобы мр3, не то, чтобы исчез бесследно, а просто заметно потеснился.

-=-

*Безусловно, дополнения TAK и льются. Про сжатие кодеков без потерь. Их — кодеков — много на самом деле. Это хорошо, когда есть выбор, но у каждого своя специфика. Отдельную заметку, наверное, как «введение» надо сделать. Пока по сжатию, коротко:

Ну допустим, стандартный несжатый аудиофайл .wav размером 600 мб, если мы начнем безудержно кодировать в лосслесс, то получится примерно следующая картина:

1. Flac-8 сможет в среднем пожать на чуть менее 50% ~ 315 Мб. При этом скорость сжатия и скорость декодирования достаточно хороши. И формат распространен, практически стандарт в лосслессе. Это надо учитывать.

2. TTA пожмет ~ в 312 Мб — скорость туда-сюда тоже ничего, но формат практически неизвестен. И не обновляется более 6 лет.

3. WavPack пожмет еще чуть лучше, ну так на 308 мб. Активно разрабатывается и интересен прежде всего тем, что может создавать файл с потерями + дополнительный файл с инструкциями, которые позволяют восстановить ВСЕ ПОТЕРИ до исходного состояния! Крайняя версия — января сего года. Есть перспектива.

4. ТАК — закрытый код, скромная программная поддержка, хоть и казавшийся чуть ли не заменой флаку еще пяток лет назад. Не обновлялся лет 8. Выдаст 303 мб. (Ха, я посмотрел, на ДНЯХ буквально вышла новая версия, 2.3.1 — предыдущая за 13 год была… Охохо. То есть — ОГО!… Ну интересно, интересно.)

5. Старичок Ape — monkey’s audio — даст 300 мб, но главная проблема — слишком медленное декодирование. Тормоза при проигрывании/прокрутке могут проявляться даже на мощных компьютерах. И требуются кодеки для проигрывания чаще всего. Потому что разрабатывается под некоей хитрой лицензией.

6. LA — заброшенный 1000 лет назад (2003-4) — даст 297 мб — проект закрыт, без всяких если. Не имеет смысла и поддержки.

7. OptimFrog — очень медленный при кодировании, но достаточно быстрый при декодировании. Не обновлялся 5 лет. Ну, даст 296 мб.

Т.е. выигрыш между лучшим и худшим — где-нибудь, там, 25-35 мб на сидюк. Это имеет смысл при больших объемах, раз, и если предполагается малое использование этих складов. Тогда можно жать тем, что лучше жмет.

Но на сегодня, по сочетанию факторов, Flac-8 — золотая середина с платиновой окантовкой. И, опять же, оно никуда не денется. Без потерь — это без потерь. Никаких сожалений, а, при наличии времени и средств, можно перегонять в любой модный формат в любое время.

[Уфф, считайте эту заметку публичным черновиком, альфа так скать] ..Хрхх.

/_\

Еще. Разумеется, от материала к материалу — сжатие в лосслесс может отличаться. Гарантировать, что кодеки пожмут вполовину и меньше — невозможно. Бывает 55%. 60%-70% ~ на что можно рассчитывать. Вопрос был в ином. Я про аудиоформаты хотел написать еще в феврале 2020 года, кое-что даже подготовил, кое-какие опыты провел… и тут резко началась пандемия, и как-то стало так… Я как раз сжимал какой-то образок, какая-то попса для теста была. Не важно, я интересовался сжатием между форматами.

Второе, да — я забыл про эппловский стандарт (у нас же все на маках да айфонах, стопудово) — ALAC — но он мне никогда не попадался. И вообще, найти в лосслесе что-то отличное от Flac или Ape — это надо стараться специально. Или намеренно, осознавая, кодить свою фонотеку в альтернативные форматы, без надежды на гарантированную совместимость, ежели чего.

Я посмотрю.

От лосслесса многое не нужно (или это как раз многое?):
1) Чтобы не было ошибок при сжатии PCM потока, так?
2) Чтобы была ненапряжная совместимость хотя бы с популярными системами и программами, без гемора: например, начинающий меломан, установив чистый меломанский foobar2000, без ручного скачивания и установки доп плагинов, не сможет воспроизвести даже популярный в народе APE. А кому щас лехко?
3) Чтобы кодирование одного диска не отнимало время, сопоставимое с его воспроизведением, тот же LA или OFrog, сжимая лучше, чем другие кодеки, занимаются этим очень долго. И выигрыш при большой самогонной перегонке физической музколлекции в цифровой вид становится неочевидным, экономятся мегабайты, теряются часы. Если в наличии 3,5 диска, это одно, если тысячи…
4) Чтобы ненапряжно воспроизводился, у меня, допустим, вывод звука организован как бы мимо виндового управления и разумения (WASAPI), и, когда APE подтормаживает (системе нужно много больше затрат для декодирования этого формата), раздается гадкий металлический звон в наушниках. Это бесит до такой степени, что я перегнал во Flac почти все имеющиеся у меня мартышки, кроме тех, которые в торренте раздаются.