LAME (Lame MP3 Encoder) — это наш выбор и рекомендуемый MP3-кодировщик для сжатия аудио. Он был разработан сообществом разработчиков программного обеспечения с открытым исходным кодом с 1998 года и стал MP3 кодировщиком самого высокого качества для большинства целей.
История
Разработка LAME началась примерно в середине 1998 года. Майк Ченг начал его как патч против источников кодировщика 8hz-MP3. После некоторых проблем с качеством, поднятых другими разработчиками, он решил начать с нуля, основываясь на источниках dist10. Эта ветвь (патч со ссылочными источниками) получила название LAME 2.0. К выпуску LAME 3.81 весь код dist10 был удален, что сделало LAME совершенно новой программой, а не просто патчем существующего кодера.
Проект быстро стал коллективным усилием. Майк Ченг в конце концов оставил лидерство и начал работать над tooLAME, кодировщиком MP2. Марк Тейлор стал лидером и выпустил версию 3.0 с новой разработанной им психоакустической моделью gpsycho.
В настоящее время LAME считается лучшим MP3-кодировщиком на средних и высоких битрейтах и имеет лучшую модель VBR среди реализаций MP3, в основном благодаря преданной работе талантливых разработчиков Такехиро Томинага, Наоки Шибата, Дарина Моррисона, Габриэля Бувиня, Роберта Хегеманна и других. Разработка продолжается.
Хотя LAME обычно считается кодировщиком, согласно техническому FAQ LAME — это не кодировщик, а скорее просто «проект разработки, использующий модель с открытым исходным кодом для улучшения технологии MP3». Эта улучшенная технология выпущена только в виде исходного кода, чтобы минимизировать риск нарушения патентов. Когда исходный код компилируется и распространяется, ему может потребоваться лицензия от Thomson, в зависимости от того, где и как он будет использоваться. Позиция проекта LAME: «Исходный код рассматривается как речь, которая может содержать описания запатентованной технологии. Описания патентов находятся в открытом доступе».
См. также: Что такое Ogg Vorbis?
Исходный код LAME поддерживается в репозитории CVS, и единственная официальная база кодов для публичного использования — это транковый код с тегом «MAIN». Существует также множество экспериментальных веток этого кода, в которых разработчики проверяют новые идеи. Одна из этих веток была запущена после выпуска LAME 3.92 в 2002 году. Чтобы избежать путаницы с альфа-версиями LAME 3.93, был создан код, позволяющий идентифицировать себя как LAME 4.0 alpha 1 (в конце 2002 г.) — 4.0 alpha 14 ( с 2005 года). Этот код в основном предназначен для разработчиков, чтобы тестировать оптимизации и архитектурные изменения в базовом коде LAME, идеи, которые в конечном итоге могут быть использованы в основной ветке и когда разработка действительно начнется на LAME 4.0. Однако некоторые представители общественности использовали этот код для создания рабочих копий альфа-версий «LAME 4.0» в 2003-2005 годах. Они не должны рассматриваться как настоящие выпуски LAME 4.0, и разработчики не хотят, чтобы о них публиковали открытые отзывы, и не хотят, чтобы из этой ветви делались публичные сборки.
Рекомендуемые настройки кодера
Максимальное качество и архивация
Максимальное качество достигается, когда, независимо от условий прослушивания, вы не можете обнаружить разницу между MP3 и оригиналом. Как показали слепые тесты ABX, MP3-файлы с кодировкой LAME обычно достигают этого уровня прозрачности при кодировании с настройками по умолчанию, при битрейтах значительно ниже максимальных. Кодирование с более высокими настройками битрейта не повлияет на воспринимаемое качество.
Для архивирования идеальны только форматы без потерь, такие как WavPack,Wave, FLAC и т.д.; они сохранят звук без изменений, сэмпл за сэмплом, независимо от настроек кодера. Напротив, форматы с потерями, такие как MP3, предназначены для экономии места путем изменения звука тонкими, часто незаметными способами, даже при максимальных настройках кодера.
Высокое качество (Hi-Fi, домашнее прослушивание с лучшим размером файла):
-V0 (~ 245 кбит/с), -V1 (~ 225 кбит/с), -V2 (~ 190 кбит/с) или -V3 (~ 175 кбит/с).
Эти настройки VBR обычно дают прозрачные результаты. Звуковые различия между этими пресетами могут существовать, но они редки.
Очень высокое качество с максимальным размером файла:
-b 320 — альтернатива настройкам VBR, указанным выше.
Этот режим CBR максимизирует битрейт MP3 и общий размер файла. Дополнительное пространство может позволить сжать некоторые части аудио с меньшими потерями, но на сегодняшний день никто не дал результатов испытаний ABX, демонстрирующих, что воспринимаемое качество всегда лучше, чем самые высокие профили VBR, описанные выше.
Портативный (прослушивание в шумных условиях, меньший битрейт, меньший размер файла):
Рекомендуются -V4 (~ 165 кбит/с), -V5 (~ 130 кбит/с) или -V6 (~ 115 кбит/с). -V6 производит «приемлемое» качество, в то время как -V4 должно быть близко к прозрачности восприятия.
Очень низкий битрейт, небольшие размеры:
Для очень низких битрейтов, до 100 кбит/с, ABR чаще всего является лучшим решением. Используйте —abr (например, —abr 80).
—preset voice доступен только в интерфейсе командной строки и предназначен для совместимости. В настоящее время он сопоставлен с —abr 56-мм, что означает, что рекомендуется кодировать в моно и использовать ABR.
Понимание настроек битрейта
MP3 разделены на кадры, каждый из которых имеет определенный размер, выраженный в битрейте. Если битрейт каждого кадра одинаков во всем файле, то файл считается с постоянным битрейтом (CBR). В противном случае это переменная скорость передачи (VBR). LAME предлагает режимы кодирования CBR и VBR, а также специальный режим кодирования VBR, называемый ABR (средняя скорость передачи в битах).
VBR (переменный битрейт) настройки
VBR: режим переменной скорости передачи данных. Используйте режимы с переменным битрейтом, когда целью является достижение фиксированного уровня качества с использованием минимально возможного битрейта. VBR лучше всего использовать для определенного уровня качества, а не определенного битрейта. Окончательный размер файла для VBR-кодирования менее предсказуем, чем для ABR, но качество обычно лучше.
См. также: Что такое передискретизация?
В отличие от других MP3-кодеров, которые выполняют VBR-кодирование на основе прогнозов качества вывода, метод VBR по умолчанию LAME проверяет фактическое качество вывода, чтобы гарантировать, что всегда достигается желаемый уровень качества.
Использование: -V <число>, где <число> находится между 0 и 9, 0 — самое высокое качество, 9 — самое низкое. (Примечание: буква «V» должна быть заглавной.)
Пример: -V 2
Также допускаются дробные значения с точностью до трех знаков после запятой, при этом 9,999 — это самое низкое качество.
Пример: -V 2.75
Примечание. Параметр —vbr-new, который включил превосходный режим VBR в LAME 3.97 и некоторых предыдущих версиях, больше не требуется для LAME 3.98 и выше, поскольку теперь он является режимом VBR по умолчанию. Однако, если вы все еще используете LAME 3.97 или старше, вы должны добавить —vbr-new в командную строку, чтобы использовать этот режим.
Целевой битрейт и фактический типичный битрейт для каждого уровня качества VBR:
Если вам нужен предсказуемый битрейт (например, в потоковом приложении), используйте режимы ABR или CBR, описанные ниже.
Настройки ABR (среднего битрейта)
Компромисс между режимами VBR и CBR, кодирование ABR изменяет биты вокруг заданной целевой скорости передачи данных. Используйте ABR, когда вам нужно знать конечный размер файла, но при этом все же хотите предоставить кодировщику некоторую гибкость, чтобы решить, какие отрывки требуют больше битов. Вывод — это обычный файл VBR, совместимый со всеми MP3-плеерами, которые поддерживают VBR; ABR — это не особый тип файла, а стратегия LAME для создания VBR.
Использование: —preset , где (желаемый усредненный битрейт в кбит/с) — это значение от 8 до 320.
Пример: —preset 200
Важно: настройка ABR настраивается с 320 кбит/с до 80 кбит/с.
Настройки CBR (постоянный битрейт)
Кодирование CBR не эффективно. В то время как режимы VBR и ABR могут предоставлять больше битов для сложных музыкальных фрагментов и сохранять биты на более простых, CBR кодирует каждый кадр с одинаковой скоростью передачи.
См. также: Что такое частота дискретизации?
CBR рекомендуется только для использования в потоковых ситуациях, когда необходимо строго соблюдать верхний битрейт. За кулисами все еще есть некоторая изменчивость в битрейте благодаря использованию LAME функции резервуара битов формата MP3, но она гораздо менее гибкая, чем фактический VBR.
Использование: -b <битрейт> где <битрейт> (битрейт в кбит/с) должен быть выбран из следующих значений: 8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 160, 192, 224, 256 или 320.
Пример: -b 192
Важно: настройка CBR настроена с 320 кбит/с до 80 кбит/с.
Заметка
При заданной скорости передачи данных VBR имеет более высокое качество, чем ABR, что является более высоким качеством, чем CBR (VBR> ABR> CBR с точки зрения качества). Однако тесты ABX показывают, что с увеличением битрейта различия в восприятии уменьшаются, и все режимы обычно достигают прозрачности задолго до своих максимальных настроек; когда вы не можете отличить, режимы качественно одинаковы. С точки зрения размера файла VBR имеет тенденцию производить самые маленькие файлы вплоть до -V7. Для более низкого качества (например, для не музыкального звука, такого как речь), ABR будет производить файлы меньшего размера, чем VBR, начиная с —abr 115.
Все режимы и настройки, упомянутые в этом разделе, соответствуют спецификациям стандарта MP3, и полученные MP3-файлы должны воспроизводиться каждым декодером MP3, который соответствует стандарту. Если ваш декодер или устройство не воспроизводит MP3-файлы, созданные LAME, вините производителя или разработчика, а не LAME. До LAME 3.98 ключ —vbr-new включал новый режим VBR. Теперь это режим VBR по умолчанию. Старый режим доступен через —vbr-old. С точки зрения качества новый режим выглядит лучше старого, но сообщения об артефактах при использовании нового режима существуют. Несмотря на эти возможные проблемы, новый режим в настоящее время рекомендуется из-за увеличения скорости и качества, обеспечиваемого новым алгоритмом.
Resampling (ресемплирование)
Когда входная частота дискретизации превышает 48 кГц, LAME повторно изменит ее до максимальной частоты 48 кГц (максимум, поддерживаемый MP3). В режимах VBR с 7 по 9,999 и при битрейтах CBR ниже 104 кбит/с вход повторно дискретизируется до 32000, 24000, 22050, 16000, 12000, 11025 или 8000, в зависимости от целевого уровня качества или битрейта. Так как это требуется при повторной дискретизации, всегда применяется фильтр для удаления частот, превышающих половину частоты дискретизации. Приведенная выше информация о нижних частотах указывает, выполняется ли какая-либо дополнительная фильтрация.
Внутренний ресэмплер LAME не идеален. Если требуется повторная выборка, лучшие результаты (особенно при нацеливании на низкие битрейты) можно получить с помощью высококачественного преобразователя частоты дискретизации, такого как SoX или SSRC.
Несовместимость декодера Фраунгофера
Разные интерпретации неясной части спецификации MP3 привели к тому, что специфичная для Windows версия MP3-декодера Fraunhofer IIS не смогла правильно воспроизводить определенные MP3-файлы, созданные с определенными версиями LAME.
Чтобы продемонстрировать проблему, проблемный MP3 должен быть создан с LAME 3.97 или более ранней версии и должен содержать кадр с определенными параметрами и очень большим объемом данных, например кадр 320 кбит/с, который интенсивно использует бит резервуар. Декодером должен быть фильтр DirectShow l3codecx.ax версии 1.5.0 или ниже, используемый проигрывателем Windows Media в версиях Windows, предшествующих Windows Vista. Обновление безопасности для Windows XP и Server 2003, выпущенное в августе 2010 года, обновило этот фильтр до версии 1.6.0, которая может воспроизводить проблемные файлы MP3. Windows Vista поставляется с более старой версией, но проигрыватель Windows Media использует другой фильтр, и в более поздних версиях Windows этот фильтр вообще не используется.
Обходной путь был реализован в LAME 3.98.0 бета 1 до LAME 3.98.2 и в LAME 3.99 альфа 1, в результате чего кадры со скоростью 320 кбит/с были ограничены в том, какой объем битового резервуара они могли использовать. Это привело к потере впустую пространства, когда резервуар вырастет за пределы. В LAME 3.98.3 и более поздних версиях, а также в LAME 3.99 alpha 2 и более поздних версиях метод был изменен таким образом, что резервуар для долота не может расти выше предела.
VBR заголовок и тег LAME
LAME поддерживает стандарт де-факто добавления дополнительного кадра молчания к началу файлов MP3. Этот «заголовок VBR» или «информационный тег» предоставляет домашнюю страницу для точной информации о продолжительности звука и таблицу точек поиска. Это в основном для инженеров, работающих с файлами VBR. Декодеры обычно рассматривают кадр как информационный, а не воспроизводящий звук.
LAME использует формат Xing для этого заголовка и расширяет его, встраивая 20-байтовый «тег LAME» с дополнительной информацией:
- Короткая строка версии (9 байтов ASCII).
- CRC аудио и информационных тегов (начиная с LAME 3.90).
- Отдельные значения задержки и заполнения для воспроизведения без пауз (начиная с LAME 3.90).
- Различные настройки кодировщика (начиная с LAME 3.90, расширен в 3.94 для включения предустановок). До LAME 3.94 заголовок VBR записывался только в файлах VBR. Начиная с версии 3.94, они также записываются в файлы CBR, вначале с «Info» вместо «XING».
Что случилось с «—alt-preset»?
Революционная система —alt-preset была представлена в LAME 3.90. Это было заменено флагами —preset в более поздних версиях. Начиная с версии 3.94, была введена система качества -Vx, позволяющая более точно контролировать желаемый уровень качества и битрейт. Ключи —preset были превращены в псевдонимы для соответствующих флагов -V для обратной совместимости. Нет разницы между выводом, который вы получаете, если вы используете -V2 или —alt-preset standard.
В последних версиях LAME предусмотрены более удобные параметры командной строки, поэтому рекомендуется придерживаться одного из значений, описанных в тексте или показанных в таблице выше.
Например, следующие параметры командной строки будут выдавать одинаковые выходные данные:
—alt-preset insane
—preset insane
-b 320
—preset 320
—preset cbr 320
Скачать последнюю версию кодера LAME можно на официальном сайте.