Возможно, вы уже слышали про то, как некоторые энтузиасты собирают кодеки из исходных кодов сами и таким образом имеют доступ к новейшим кодекам.

Эта несложная задача для меня когда-то казалась неподъемной. Порой очень хотелось протестировать последние разработки кодека, несмотря на то, что они были нестабильны. По себе знаю, что нестабильность для энтузиастов — все равно, что масло в огонь, лишь разжигает интерес. Овладев умением сборки из исходных кодов, я хотел бы поделиться им с вами. Речь пойдет о сборке кодеков под 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 с SourceForge.net

MinGW

Итак, установка MinGW.

Установка MinGW

Соглашаемся с условиями GPL.

Установка MinGW

Я буду устанавливать на диск F:\ Вы же можете выбрать любое более подходящее для вас место.

Установка MinGW

Компилятор для языка Си уже выбран по умолчанию. Нам ещё понадобится MSYS (набор утилит Linux, скомпилированных под Windows).

Установка MinGW

Установка занимает длительное время, так как при установке MinGW выкачивает большое количество необходимых библиотек, тем самым делая за нас очень большую и рутинную часть работы.

Установка MinGW

В конце на ваше усмотрение можно проконтролировать логи установки MinGW. Я же поверю ему на слово.

Установка MinGW

TortoiseCVS

Как только вы закончите с MinGW, можно будет приступить к загрузке последней версии исходников LAME на ваш компьютер. Что для этого нужно? Как я уже говорил выше, TortoiseCVS — это удобный клиент для работы с CVS. Я буду скачивать исходники в корень диска F:\ в папку lame. Папку lame создавать не нужно, об этом позаботится клиент. Итак, через проводник заходим на диск F:\ и нажимаем правой кнопкой в пустом месте.

TortoiseCVS

Выставляем следующие настройки и выполняем действия последовательно

TortoiseCVS

По завершении, если вы все сделали правильно, вы увидите примерно следующее

TortoiseCVS

Итак, теперь у нас в F:\lame лежит последняя версия исходников.

Конфигурация, компиляция, сборка

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

MSYS

MSYS — это, грубо говоря, эмулятор консоли Linux. Итак, запускаем его. В моем случае файл для запуска располагался здесь:

F:\MinGW\msys\1.0\msys.bat

Итак, перед вами должно появиться окно следующего вида:

MSYS

Набираем в нем

cd /F/lame

Таким образом, мы попадем в папку с исходниками LAME, откуда и будем производить все действия. В данном случае F — имя диска, на который вы скачали исходники. Командой ls можно удостовериться, что мы там, где нужно, она выведет список файлов в текущей директории.

MSYS

Конфигурация

Этот процесс подготавливает проект к текущему окружению (в нашем случае MinGW). Он также проверяет, все ли необходимые библиотеки и утилиты у вас установлены и возможна ли компиляция вообще. Конфигурация запускается как правило командой:

./configure

Не игнорируйте ./ Без них у вас ничего не получится. Если вы все сделали правильно и звезды были к вам благосклонны, то через некоторое время вы увидите, что конфигурация завершилась успешно.

MSYS

Компиляция и сборка

Итак, настало время скомпилировать проект, за это отвечает команда make. Вводим ее, нажимаем Enter и видим…

Компиляция

Что ж, мое шоу потерпело фиаско. Я столкнулся с ошибкой компиляции. Мой опыт не позволил мне разобраться, что же было не так в исходных кодах, да и не в этом заключается цель статьи. Просто это яркий пример того, как порой нестабильные версии могут наотрез отказываться собираться. Да, такое происходит и сегодня нам не повезло, но с этим надо смириться, возможно, один из разработчиков проекта в ближайшее время исправит этот недочет.

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

Повторяем со стабильной версией

Скачать стабильную версию можно с главной страницы проекта LAME:

Загрузка LAME с SourceForge.net

Удаляем сущестувующую папку F:\lame и распаковываем туда скачанный архив.

Переходим в MSYS в папку F:\lame командой

cd /F/lame

И снова запускаем конфигурирование командой

./configure

Конфигурирование

Запускаем копиляцю и сборку командой

make

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

Компиляция

Теперь, перейдя в папку

cd /F/lame/frontend

Мы можем увидеть, что наш исполняемый файл лежит там, просто запустив его:

lame

Пробный запуск lame.exe

Попробуем на тестовом файле (в моем случае a.wav), как же поведет себя только что скомпилированный кодек LAME, запустив команду

lame a.wav

Кодирование

В итоге был создан файл a.mp3 128 kbit/s, который прекрасно воспроизвелся в моем foobar2000.

Заключение

На этом я считаю, что можно заканчивать статью. Тема сборки LAME из исходников раскрыта, несмотря на то, что у нас не получилось собрать его из самых свежих исходников. Хоть нам и не пригодился TortoiseCVS, тем не менее, опыт его использования в нашем деле очень полезен.

Также хочется отметить, что все эти действия можно обобщить и применять их не только для кодека LAME. В следующий раз я попробую рассказать вам о задаче несколько посложнее: сборке кодека CELT.