среда, 13 февраля 2008 г.

FFMPEG

Если я не напишу сейчас, как именно я наконец добился того, что все скомпилилось и работает, то через какое-то время опять буду стучаться лбом по стенам :(

ffmpeg - это знаменитая уже программа для транскодирования всего-во-все, с открытым исходным кодом, миллиардным количеством настроек, способностью работать в разных ОС

среди прочего в ней есть несколько архиполезных библиотек: libavformat -разгребает форматы файлов, libavcodec - декодирует видео, звук, картинки, субтитры, libavutil - куча полезного etc

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

сложности в общем-то с компилением из-за того, что библиотека всеплатформенная, да еще и на каком-то варианте С, который микрософт за С не считает

поэтому методом научного тыка в основном определялось окружение, которое могло бы собрать нужные dll-ки; оставшееся время пошло на то, чтобы выяснить - и почему же они не работают

  • Получение исходников
Самый правильный путь получить исходники ffmpeg - самый свежий вариант из svn; поставить svn (консольный, гуишный клиент - без разницы) и забрать все из репозитория svn://svn.mplayerhq.hu/ffmpeg/trunk

За исходниками mp3lame - http://lame.sourceforge.net/, свежие исходники - lame-3.97.tar.gz

  • Подготовка инструментов
Чтобы скомпилить ffmpeg в винде, надо установить MSYS/MinGW - набор хедеров, библиотек и еще фиг знает чего, для создания нативных виндовых приложений ("MinGW: A native Win32 port of the GNU Compiler Collection (GCC), with freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality") и среда, имитирующая nix-подобный шелл, в котором все и будет компилится

Надо - ставим:
1) ити сюда и качать:
msysCORE-1.0.11-2007.01.19-1.tar.bz2
MSYS-1.0.11-20071204.tar.bz2
bash-3.1-MSYS-1.0.11-1.tar.bz2
2) файлы распаковать в c:\msys
3) открыть msys.bat с c:\msys и добавить в самое начало строку
call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat"
4) в папке c:\msys создать папку mingw
5)
качать:
binutils-2.18.50-20080109.tar.gz
coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2
gcc-core-3.4.5-20060117-1.tar.gz
mingw-runtime-3.14.tar.gz
mingw32-make-3.81-2.tar.gz
w32api-3.11.tar.gz