- techteendaily been there, done tech
- Compiling LAME for Windows on Windows
- 4 comments:
- LAME 3.100 SRC + 3.99.5 DLL
- Основная информация о программе
- LAME 3.100 (+ optimized version by tmkk) x86/x64
- Настройка
- Использование
- Параметры
- Собираем LAME прямо из исходников
- Репозиторий, CVS и зачем все это надо
- Исходные тексты в EXE
- MinGW
- TortoiseCVS
- Конфигурация, компиляция, сборка
- Конфигурация
- Компиляция и сборка
- Повторяем со стабильной версией
- Заключение
techteendaily
been there, done tech
Compiling LAME for Windows on Windows
This procedure works, after trial and error from following this guide.Refined some steps.
Get MinGW (if you didn’t have)
First and foremost, have MinGW running on your computer, by downloading the installer from here.
Choose to download the latest repository catalogue, and choose to install the following components:
— C compilier
— C++ compiler
— MSYS Basic System
— MinGW Developer Toolkit
After installation, open a MinGW shell by Start>All Programs>MinGW>MinGW Shell then type
Something like this should appear.
Then, install the Yasm assembler for optimal compilation of LAME by going to here (Win32.exe) and putting the .exe to the bin folder of MinGW.
Get source of LAME
By going here.
Extract the tarball using 7-zip or other decompression software and place it somewhere.
Compile LAME
At the MinGW shell, change working directory to the lame folder you extracted by typing
The .dll is located in the .libs folder.
The Binaries
If you just want the binaries and dll (for use in Audacity etc.), you can get them here.
lame.exe
lame_enc.dll
4 comments:
In last version this man does not work. I am wondering how to compile 3.100 or 3.99 in MinGW 0.6.3 Win10 x64.
./configure —prefix=/mingw —enable-export=full
configure: WARNING: unrecognized options: —enable-export
Then on make receive: (same on 3.99.5)
Cannot export lame_init_old: symbol not defined
It seemed like problem of x64-x86 imcapatibility.
replica Cartier watches uk online shop, combining elegant style and cutting-edge technology, a variety of styles of replica Cartier santos watches uk online shop, the pointer walks between your exclusive taste style.
@unknown. if you’re out there. I think it’s a typo. The option should be —enable-expopt=full. it enables spooky and powerful experimental optimizations! ./configure —help says so at least.
I’m getting error message when I use ./configure .»sh: ./configure: No such file or directory».
I followed all the steps mentioned above, still ending up with problem. Would be great help if you can help me out of it.
LAME 3.100 SRC + 3.99.5 DLL
Автор | Mark Taylor |
Языки | Английский |
Лицензия | Freeware (Бесплатная) |
Основная информация о программе
LAME MP3 Encoder — это приложение, которое используется для кодирования аудио в MP3. LAME использует три разных метода сжатия.
Метод CBR может использоваться в тех случаях, когда вы хотите сохранить постоянный битрейт во всем файле и предсказуемый размер файла. Используйте этот метод только тогда, когда вам нужна совместимость с определенным софтом, или с аппаратными декодерами, поддерживающими только этот тип сжатия. В других случаях метод CBR не приветствуется из-за большого размера конечного файла.
VBR-метод является наиболее популярным. Он предусматривает выбор не битрейта, а качества аудио, что дает возможность менять битрейт в разных местах файла в зависимости от сложности начального контента. Используйте метод Variable Bitrate для получения меньших по размеру файлов, которые все же содержат хорошее качество.
И последний метод сжатия — ABR — является комбинацией из двух вышеописанных методов. Он позволяет выбрать наименьший битрейт для кодирования аудио, но в то же время оставляя битрейт относительно близким к значению, которое выбрал пользователь. Так получаются файлы с постоянным битрейтом, и более-менее компактным размером.
LAME MP3 Encoder работает в режиме командной строки, поэтому перед ее использованием нужно почитать информацию, которая есть в скачиваемом пакете. Синтаксис команд очень прост, и состоит из такого шаблона: lame [options] [outputfile], где options указывает на метод сжатия, битрейт или качество.
Библиотека кодировщика является бесплатной и предоставляется только в виде исходных кодов, которые нужно компилировать перед использованием. Если вы хотите использовать готовые приложения, то вы можете скачать такие редакторы, как winLAME или Audacity, которые используют LAME MP3 Encoder для преобразования аудио.
LAME 3.100 (+ optimized version by tmkk) x86/x64
Хотя сегодня MP3 и не самый качественный lossy аудио кодек, он бесспорно является лидером за счёт своей огромной популярности и совместимости с практически любыми аппаратными и программными плеерами.
LAME (аббревиатура от LAME Ain’t an MP3 Encoder) — это свободное приложение для кодирования аудио в формат MP3 (MPEG-1/2/2.5 Layer 3). По показателям качества LAME даёт лучший результат среди кодеров МР3.
Настройка
Использование
Параметры
—abr n кодирование в режиме среднего битрейта Включает кодирование с заданным в килобитах целевым средним битрейтом (Avareage BitRate) с поддержкой фреймов разных размеров. Допустимые значения — целые числа от 8 до 320. Может быть использовано с ключами ограничения максимального и минимального битрейта, например:
lame —abr 123 -b 64 -B 192 a.wav a.mp3
— данная комбинация ключей установит ограничение битрейта в пределах 64—192 кбит/с. -b n целевой битрейт/ограничить битрейт снизу Для режима постоянного битрейта (используется по умолчанию, если не указаны ключи —abr или -Vn) задаёт целевой битрейт. Для MPEG-1 Layer III доступны целые значения от 32 до 320 с шагом в 8 кбит/с. Значение по умолчанию (MPEG-1 Layer III) — 128 кбит/с для стерео и 64 для моно. В режимах ABR и VBR этот ключ задаёт минимальный битрейт фрейма и должен использоваться только для проблемных устройств, не поддерживающих значения битрейтов ниже заданного (в данном случае также используйте ключ -F ). -B ограничение максимального битрейта Используйте, если ваш плеер имеет проблемы воспроизведения фреймов с битрейтом выше определённого. -F форсировать ограничение битрейта снизу По умолчанию, даже если вы ограничиваете минимальный битрейт ключом -b , для цифровой тишины будет использоваться минимальный размер фрейма. Если из-за этих фреймов на вашем плеере возникают проблемы воспроизведения, ключом -F вы можете включить ограничение и для цифровой тишины. —highpass частота ФВЧ (кГц или Гц) Устанавливает частоту фильтра высоких частот. Частоты ниже указанной будут обрезаны. Довольно бесполезный ключ, так как в текущей версии минимальное значение равно 1.0887 % от частоты дискретизации (0.481 кГц для 44.1 кГц). —highpass-width крутизна ФВЧ Регулирует крутизну фильтра высоких частот путём задания ширины спада в кГц. По умолчанию установлено наименьшее значение (наибольшая крутизна), равное 1/64 от частоты дискретизации. —lowpass частота ФНЧ Устанавливает частоту фильтрации низких частот в кГц. Частоты выше указанной будут обрезаны. —lowpass-width крутизна ФНЧ Регулирует крутизну фильтра высоких частот путём задания ширины спада в кГц. По умолчанию установлено наименьшее значение (наибольшая крутизна), равное 1/64 от частоты дискретизации. -m s/j/f/d/m режим кодирования каналов Устанавливает режим кодирования стерео (или моно):
stereo
Кодер не использует возможность корреляции между двумя каналами, что может негативно сказаться на качестве в режиме CBR/ABR или неоправданно повысить битрейт для VBR. В этом режиме кодер предоставляет одному из каналов меньшее количество битов, если тот содержит тишину или же является менее сложным.
joint stereo
Кодер использует корреляцию между двумя каналами. Сигнал раскладывается на сумму Mid, рассчитанную как L+R, и разницу Side, рассчитанную как L-R, приоритет при распределении битов имеет канал Mid.
Такой прием эффективно увеличивает пропускную способность для сигналов с небольшим разделением стерео и даёт существенный прирост качества кодирования. Использование режима joint stereo совершенно безопасно, так как кодер может переключаться между Left/Right и Mid/Side представлениями на основе анализа степени разделения стерео (используется достаточно сложный алгоритм, описанный в документации ISO). Посмотреть количество фреймов для разных режимов можно, например, с помощью EncSpot.
forced joint stereo
Этот режим принудительно включает joint stereo для всех фреймов. Немного более быстрый, чем обычный joint stereo, использование рекомендуется только в тех случаях, когда вы уверены, что кодируемый сигнал имеет очень незначительное разделение стерео.
dual channels
В этом режиме 2 канала кодируются совершенно независимо. Каждому каналу выделяется ровно половина битрейта. Режим разработан для таких случаев, как, например, двуязычное кодирование (один язык в левом канале, другой язык — в правом). Использование данного режима для обычных стерео файлов приведет к более низкому качеству кодирования.
mono
Входной сигнал будет кодирован как моно. Если сигнал изначально являлся стерео, он будет сведен в моно. Сведение производится суммированием каналов со смягчением в 6 дБ (уменьшение амплитуд в два раза, что исключает клиппинг). -p защита от ошибок Добавляет в каждый фрейм циклический избыточный код CRC , позволяющий детектировать ошибки передачи, которые могут произойти в MP3 потоке. Код занимает 16 бит каждого фрейма, которые в противном случае были бы использованы для кодирования, в результате чего качество звучания несколько уменьшится. —preset предустановленные настройки Включает использование предустановленных настроек качества кодирования. На данный момент предустановки устарели и настоятельно не рекомендуются к использованию . Cоответствие пресетов параметрам:
—preset medium | -V 5 —vbr-old |
—preset standard | -V 2 —vbr-old |
—preset extreme | -V 0 —vbr-old |
—preset insane | -b 320 |
—preset fast xxx | включает режим —vbr-new (если не использовать пресеты, он включён по умолчанию) |
-q 0..9 качество алгоритмов Настройка позволяет регулировать баланс между скоростью и качеством кодирования путём изменения коэффициентов масштабирования и сложности алгоритмов кодирования Хаффмана. Ниже приведено описание разных установок для режимов CBR и ABR с оценкой скорости (скорость кодирования 64-битной версией 3.99.5 на Intel Core i3 530).
q0: использовать самые медленные и максимально качественные алгоритмы: наилучшее сжатие по Хаффману, полный внешний цикл (full outer loop), максимальная точность для некоторых параметров. -q 0 и -q 1 являются медленными и могут не дать значительного прироста качества. Оценка скорости: 7x.
q1..4: схожи с нулевой установкой, но без полного вншнего цикла и со снижением точности параметров. По умолчанию используется q3. q2 может быть рекомендован для небольшого повышения качества. Оценка скорости: q1 — 15x, q2 — 20x, q3 — 41x, q4 — 42x.
q5, 6 (идентичны): пониженная сложность алгоритмов Хаффмана, психоакустика (оценка шума квантования) используется только для переключения типов блоков (чтоб уменьшить пре-эхо) и режима стерео. Оценка скорости: 53x.
q7..9 (идентичны): аналогично ключу -f. То же, что и q6, но дополнительно отключена формаовка шума. Оценка скорости: 83x.
Для VBR:
q0..4 (идентичны, по умолчанию): использовать самые медленные и максимально качественные алгоритмы. Оценка скорости: 38x.
q5..6 (идентичны): снижает сложность сжатия по Хаффману. Оценка скорости: 44x.
q7..9 (идентичны): аналогично ключу -f, отключает субблоковое усиление, психоакустика (оценка шума квантования) используется только для переключения типов блоков (чтоб уменьшить пре-эхо) и режима стерео. Оценка скорости: 57x.
—resample передискретизация Ресемплирование в одну из доступных частот дискретизации: 8/11.025/12/16/22.05/24/32/44.1/48 кГц. Качество ресемплера довольно неплохое, но при необходимости ресемплирования всё же лучше воспользоваться качественным DSP SoX Resampler (тем более, что он работает быстрее). Заметьте, что LAME автоматически ресемплирует входной сигнал при использовании низких битрейтов. —silent / —quiet тихий режим Отключить вывод информации о процес кодирования в консоль. Полезно при кодировании, например, через foobar2000 — его конвертер скрывает консоль. -V 0..9 VBR кодирование Включает режим кодирования с переменным битрейтом и заданным целевым качеством (при этом точно результирюущий битрейт предсказать нельзя). 0 соответствует максимальному качеству, значение по умолчанию — 4.
Собираем LAME прямо из исходников
Возможно, вы уже слышали про то, как некоторые энтузиасты собирают кодеки из исходных кодов сами и таким образом имеют доступ к новейшим кодекам.
Эта несложная задача для меня когда-то казалась неподъемной. Порой очень хотелось протестировать последние разработки кодека, несмотря на то, что они были нестабильны. По себе знаю, что нестабильность для энтузиастов — все равно, что масло в огонь, лишь разжигает интерес. Овладев умением сборки из исходных кодов, я хотел бы поделиться им с вами. Речь пойдет о сборке кодеков под Windows 7.
Репозиторий, CVS и зачем все это надо
Самые свежие исходные коды LAME (грубо говоря, текст программы) лежат в репозиториях на SourceForge.net. Репозиторий находится под довольно старой системой контроля версий: CVS. Для нее проще всего воспользоваться специальным клиентом, заточенным под Windows — TortoiseCVS (ссылка для скачивания).
Зачем вообще эта система контроля? Проще всего можно сказать, что это хранилище исходных текстов, которое позволяет легко разрабатывать один проект нескольким людям.
Устанавливаем TortoiseCVS, таким образом у вас появляется возможность скачать себе самые последние исходные коды кодека.
Исходные тексты в EXE
Итак, предположим, что есть у нас на руках текст программы. А дальше что? Просто так текст сам по себе ничего не делает. Нам нужно создать из него исполняемый файл или, в простонародии, «экзешник». Для разных языков программирования путь этого преобразования разный. Но большинство кодеков пишутся на языке Си из-за того, что кодекам очень важна производительность. Как известно, программы, написанные на Си, в большинстве случаев оказываются быстрее своих собратьев, написанных на других языках. Остановимся на том, как же преобразовать текст программы, написанный на языке Си в исполняемый файл (этот процесс также называется компиляцией и сборкой).
Но тут вступает в свою силу следующий нюанс: в основном многие кодеки по идейным соображениям имеют открытый исходный код (как у LAME). Потому и разрабатываются они не на Windows, а на Linux, опять же из соображений, что Linux бесплатен и тоже имеет открытые исходные коды. Так что изначально кодеки написаны для Linux и, как правило, с большим трудом компилируются Windows-средствами от Microsoft (Visual C++). Возникает задача: скомпилировать программу, изначально написанную в Linux для работы в Windows. И тут есть решение: MinGW. Этот набор утилит, который, если не вдаваться в дебри, специально создан для таких задач.
Нам потребуется скачать MinGW и установить его. Располагается он также на SourceForge.net.
MinGW
Итак, установка MinGW.
Соглашаемся с условиями GPL.
Я буду устанавливать на диск F:\ Вы же можете выбрать любое более подходящее для вас место.
Компилятор для языка Си уже выбран по умолчанию. Нам ещё понадобится MSYS (набор утилит Linux, скомпилированных под Windows).
Установка занимает длительное время, так как при установке MinGW выкачивает большое количество необходимых библиотек, тем самым делая за нас очень большую и рутинную часть работы.
В конце на ваше усмотрение можно проконтролировать логи установки MinGW. Я же поверю ему на слово.
TortoiseCVS
Как только вы закончите с MinGW, можно будет приступить к загрузке последней версии исходников LAME на ваш компьютер. Что для этого нужно? Как я уже говорил выше, TortoiseCVS — это удобный клиент для работы с CVS. Я буду скачивать исходники в корень диска F:\ в папку lame . Папку lame создавать не нужно, об этом позаботится клиент. Итак, через проводник заходим на диск F:\ и нажимаем правой кнопкой в пустом месте.
Выставляем следующие настройки и выполняем действия последовательно
По завершении, если вы все сделали правильно, вы увидите примерно следующее
Итак, теперь у нас в F:\lame лежит последняя версия исходников.
Конфигурация, компиляция, сборка
Все эти три действия придется делать из консоли. Точнее сказать 2 действия, т.к. компиляция и сборка заключены в одно.
MSYS — это, грубо говоря, эмулятор консоли Linux. Итак, запускаем его. В моем случае файл для запуска располагался здесь:
Итак, перед вами должно появиться окно следующего вида:
Таким образом, мы попадем в папку с исходниками LAME, откуда и будем производить все действия. В данном случае F — имя диска, на который вы скачали исходники. Командой ls можно удостовериться, что мы там, где нужно, она выведет список файлов в текущей директории.
Конфигурация
Этот процесс подготавливает проект к текущему окружению (в нашем случае MinGW). Он также проверяет, все ли необходимые библиотеки и утилиты у вас установлены и возможна ли компиляция вообще. Конфигурация запускается как правило командой:
Не игнорируйте ./ Без них у вас ничего не получится. Если вы все сделали правильно и звезды были к вам благосклонны, то через некоторое время вы увидите, что конфигурация завершилась успешно.
Компиляция и сборка
Итак, настало время скомпилировать проект, за это отвечает команда make . Вводим ее, нажимаем Enter и видим…
Что ж, мое шоу потерпело фиаско. Я столкнулся с ошибкой компиляции. Мой опыт не позволил мне разобраться, что же было не так в исходных кодах, да и не в этом заключается цель статьи. Просто это яркий пример того, как порой нестабильные версии могут наотрез отказываться собираться. Да, такое происходит и сегодня нам не повезло, но с этим надо смириться, возможно, один из разработчиков проекта в ближайшее время исправит этот недочет.
Но чтобы не оставлять читателя ни с чем, я попытаюсь продемонстрировать метод до конца, для этого я возьму исходный код LAME стабильной версии и сделаю несколько шагов назад.
Повторяем со стабильной версией
Скачать стабильную версию можно с главной страницы проекта LAME:
Удаляем сущестувующую папку F:\lame и распаковываем туда скачанный архив.
Переходим в MSYS в папку F:\lame командой
И снова запускаем конфигурирование командой
Запускаем копиляцю и сборку командой
В этот раз все происходит довольно долго и это потому, что компилируется кодек. Если все пройдет успешно, вы увидите в итоге следующее:
Теперь, перейдя в папку
Мы можем увидеть, что наш исполняемый файл лежит там, просто запустив его:
Попробуем на тестовом файле (в моем случае a.wav ), как же поведет себя только что скомпилированный кодек LAME, запустив команду
В итоге был создан файл a.mp3 128 kbit/s, который прекрасно воспроизвелся в моем foobar2000.
Заключение
На этом я считаю, что можно заканчивать статью. Тема сборки LAME из исходников раскрыта, несмотря на то, что у нас не получилось собрать его из самых свежих исходников. Хоть нам и не пригодился TortoiseCVS, тем не менее, опыт его использования в нашем деле очень полезен.
Также хочется отметить, что все эти действия можно обобщить и применять их не только для кодека LAME. В следующий раз я попробую рассказать вам о задаче несколько посложнее: сборке кодека CELT.