Project

General

Profile

Инструкция по использованию библиотек FFMPEG

Состав библиотеки

FFMPEG представляет собой набор модулей для работы с кодированием/декодированием видео, звука и субтитров.

В ее состав входят модули:

  1. libavcodec - собственно кодеки
  2. libavcore - ядро (чтение/запись потоков и т.п.)
  3. libavdevice - работа с устройствами
  4. libavfilter - работа с фильтрами для видео
  5. libavformat - работа с форматами видео и звука
  6. libavutil - сервисный модуль, часть реализации ядра (которая совместно используется остальными модулями)
  7. 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 из исходных кодов, то важно помнить следующее:

  1. сборка без применения "неофициальных" патчей не возможна компилятором MSVC, кроме MSVC для компиляции будет необходим еще и Mingw;
  2. для нормальной компиляции необходим компилятор GCC;
  3. при использовании GCC отладка и работа с отладочными символами возможна только c GDB.

Тем не менее, если возникла необходимость собрать библиотеки из исходных текстов, то исходные тексты можно всегда взять с http://ffmpeg.org/download.html или http://ffmpeg.arrozcru.org/autobuilds/ffmpeg/sources/.

Сборка из исходных текстов возможна четырьмя путями: компиляция под MSVC, кросс-компиляция в linux, компиляция в среде Cygwin, компиляция в среде Mingw.

Компиляция для MSVC

Для компиляции с помощью компилятора MSVC необходимо установить Mingw:

  1. установить Mingw и MSYS (требования аналогичны требованиям для сборки в Mingw)
  2. запустить командную строку MSVC и из нее вызвать msys.bat
  3. скачать и распаковать FFMPEG
  4. выполнить конфигрурирование ( ./configure —enable-shared —enable-memalign-hack —disable-yasm —extra-cflags=-U+ —extra-libs=‘-lpthread’ )
  5. выполнить сборку ( make & make install )

Возможные проблемы:

  1. не компилируется "strcasecmp" - в файле \Mingw\include\string.h убрать проверку на определение "+".
  2. не компилируется "libavcodec/pthread.c" - добавить определение "typedef int pid_t;"

Кросс-компиляция

Для кросс-компиляции необходимо:

  1. скачать и распаковать исходные коды библиотеки;
  2. установить среду сборки для кросс-компиляции ( sudo apt-get install build-essentials mingw );
  3. сконфигурировать библиотеку для сборки ( ./configure –target-os=mingw32 –cross-prefix=i386-mingw32msvc- )
  4. собрать библиотеку ( make & make install )

Сборка в Cygwin

Компиляция в среде Cygwin требует:

  1. Cygwin версии 1.7.х или новее
  2. установленных компонентов 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 требует:

  1. bash >= 3.1
  2. msys-make >= 3.81-2
  3. w32api >= 3.13
  4. 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

Add picture from clipboard (Maximum size: 742 MB)