Инструкция по использованию библиотек FFMPEG¶
- Table of contents
- Инструкция по использованию библиотек FFMPEG
Состав библиотеки¶
FFMPEG представляет собой набор модулей для работы с кодированием/декодированием видео, звука и субтитров.
В ее состав входят модули:
- libavcodec - собственно кодеки
- libavcore - ядро (чтение/запись потоков и т.п.)
- libavdevice - работа с устройствами
- libavfilter - работа с фильтрами для видео
- libavformat - работа с форматами видео и звука
- libavutil - сервисный модуль, часть реализации ядра (которая совместно используется остальными модулями)
- libswscale - работа с преобразованием форматов видео, изменением геометрии картинки
Каждый из модулей представляет собой отдельную библиотеку.
Зависимости библиотек:
# libavcodec
* libavcore
* libavutil
# libavcore
* libavutil
# libavdevice
* libavcodec
* libavformat
* libavutil
# libavfilter
* libavcore
* libavutil
* libswscale
# libavformat
* libavcodec
* libavcore
* libavutil
# libavutil
# libswscale
* libswscale
Установка библиотеки
h3. Использование официальной сборки для win32 и MSVC
Наиболее простой и удобный способ использования библиотек FFMPEG является использование собранных интернет-сообществом библиотек для FFMPEG под Win32.
Сборки осуществляются согласно выходам релизов проекта FFMPEG.
Взять готовые библиотеки можно с сайта http://ffmpeg.org/download.html версия для windows (соответственно проекты win32-shared-dev - библиотеки и заголовочные файлы, win32-shared - собранные библиотеки; и win64-shared-dev - библиотеки и заголовочные файлы, win64-shared - собранные библиотеки). Кроме того, на сервере находятся собранные для MacOS библиотеки и сборки документации построенные Doxygen-ом).
Кроме того нужны файы stdint.h inttypes.h Их можно взять здесь: http://code.google.com/p/msinttypes/downloads/list
Сборка¶
Для работы вполне хватает собранных библиотек, но если возникла необходимость собрать FFMPEG из исходных кодов, то важно помнить следующее:
- сборка без применения "неофициальных" патчей не возможна компилятором MSVC, кроме MSVC для компиляции будет необходим еще и Mingw;
- для нормальной компиляции необходим компилятор GCC;
- при использовании GCC отладка и работа с отладочными символами возможна только c GDB.
Тем не менее, если возникла необходимость собрать библиотеки из исходных текстов, то исходные тексты можно всегда взять с http://ffmpeg.org/download.html или http://ffmpeg.arrozcru.org/autobuilds/ffmpeg/sources/.
Сборка из исходных текстов возможна четырьмя путями: компиляция под MSVC, кросс-компиляция в linux, компиляция в среде Cygwin, компиляция в среде Mingw.
Компиляция для MSVC¶
Для компиляции с помощью компилятора MSVC необходимо установить Mingw:
- установить Mingw и MSYS (требования аналогичны требованиям для сборки в Mingw)
- запустить командную строку MSVC и из нее вызвать msys.bat
- скачать и распаковать FFMPEG
- выполнить конфигрурирование ( ./configure —enable-shared —enable-memalign-hack —disable-yasm —extra-cflags=-U
+ —extra-libs=‘-lpthread’ )
- выполнить сборку ( make & make install )
Возможные проблемы:
- не компилируется "strcasecmp" - в файле \Mingw\include\string.h убрать проверку на определение "
+".
- не компилируется "libavcodec/pthread.c" - добавить определение "typedef int pid_t;"
Кросс-компиляция¶
Для кросс-компиляции необходимо:
- скачать и распаковать исходные коды библиотеки;
- установить среду сборки для кросс-компиляции ( sudo apt-get install build-essentials mingw );
- сконфигурировать библиотеку для сборки ( ./configure –target-os=mingw32 –cross-prefix=i386-mingw32msvc- )
- собрать библиотеку ( make & make install )
Сборка в Cygwin¶
Компиляция в среде Cygwin требует:
- Cygwin версии 1.7.х или новее
- установленных компонентов Cygwin: binutils, gcc4-core, make, mingw-runtime, texi2html, diffutils
Существует два варианта сборки в Cygwin: сборка с применением библиотеки cygwin1.dll и кросс-компиляция с использованием mingw (дополнительно потребуются компоненты gcc-mingw-core, mingw-runtime, mingw-zlib).
Недостаток первого пути - дополнительная зависимость на библиотеку cygwin1.dll. Отличия второго пути от просто "компиляции в Mingw" - будет использован более новый компилятор GCC входящий в состав Cygwin (этот проект поддерживается лучше чем проект Mingw).
Чистая сборка в Cygwin¶
./configure --enable-shared --disable-static --extra-cflags=-fno-reorder-functions
make
make install
Сборка в Cygwin для Mingw¶
./configure --target-os=mingw32 --enable-memalign-hack --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
make
make install
Сборка в Mingw¶
Компиляция в среде Mingw требует:
- bash >= 3.1
- msys-make >= 3.81-2
- w32api >= 3.13
- mingw-runtime >= 3.15
Сборка в среде Mingw аналогична сборке в для MSVC за исключением того, что необходимо напрямую вызвать командную строчку MSYS, а не из командной строки MSVC.
Расположение файлов в SourceSafe¶
В каталоге MLIB лежит файл ffmpeg.rar в нем лежат lib, dll и h файлы распределенные по каталогам следующим образом.
Файлы библиотек¶
Расположены в #CURRENT/MLIB/LIB
- avcodec.lib
- avcore.lib
- avdevice.lib
- avfilter.lib
- avformat.lib
- avutil.lib
- swscale.lib
Файлы модулей¶
Расположены в #CURRENT/MLIB/DLL
- avcodec-xx.dll
- avcore-xx.dll
- avdevice-xx.dll
- avfilter-xx.dll
- avformat-xx.dll
- avutil-xx.dll
- swscale-xx.dll
> Файлы модулей необходимо включить в дистрибутив
Заголовочные файлы¶
Расположены в #CURRENT/INC
- Директория libavcodec
- Директория libavcore
- Директория libavdevice
- Директория libavfilter
- Директория libavformat
- Директория libavutil
- Директория libswscale
- stdint.h
- inttypes.h
Полезные ссылки¶
http://dranger.com/ffmpeg/tutorial01.html
http://www.calculate-linux.org/boards/40/topics/5294
http://cekirdek.pardus.org.tr/~ismail/ffmpeg-docs/
http://www.itbroadcastanddigitalcinema.com/ffmpeg_howto.html