Il est souvent rageant de devoir compiler soi-même FFmpeg, notamment lorsqu'on constate les dépendances requises (au niveau des librairies nécessaires). Il y a la façon statique qui permet de s'approger de ces contraintes (à condition bien sûr que l'architecture x86,x86_64 reste la même). Pour celà, il y a un projet très intéressant https://github.com/pyke369/sffmpeg.

Dans le passé, je m'étais déjà livré à ce genre de compilation mais là c'est vraiment intéressant car gérer par cmake.

Note à l'attention des utilisateurs de Ubuntu LucidPour ceux qui sont sous Ubuntu Lucid (>=10.04.3), la version de cmake est la 2.8.0. Elle n'est malheureusement pas suffisante pour l'utilisation. J'ai personnellement récupérer la toute dernière version de cmake (en date du 2011/09/25) c'est la 2.8.5. Elle se compile sans souci. J'ai donc pu par la suite, la tester sans souci. Pour la récupération du projet
git clone https://github.com/pyke369/sffmpeg.git
cd sffmpeg
Avant de continuer et de lancer la compilation, jetez un coup d'oeil au fichier CMakeLists.txt Voici un extrait de son contenu
PROJECT(ffmpeg)

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
INCLUDE(ExternalProject)
INCLUDE_DIRECTORIES(BEFORE ${CMAKE_BINARY_DIR}/include)
LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/lib)

EXTERNALPROJECT_ADD(
  z
  URL http://zlib.net/zlib-1.2.5.tar.gz
  PATCH_COMMAND patch Makefile.in ${CMAKE_SOURCE_DIR}/vendor/zlib-1.2.5-static.patch
  CONFIGURE_COMMAND ./configure --prefix=${CMAKE_BINARY_DIR} --static
  BUILD_IN_SOURCE 1
)
EXTERNALPROJECT_ADD(
  openssl
  URL http://www.openssl.org/source/openssl-1.0.0e.tar.gz
  CONFIGURE_COMMAND ./config no-shared no-idea no-mdc2 no-rc5 --prefix=${CMAKE_BINARY_DIR}
  BUILD_COMMAND make depend && make
  BUILD_IN_SOURCE 1
)
....
Moi ça m'a rappeler la façon de compiler à la mode Gentoo :) du temps où j'utilisais Gentoo

Remarque: Le téléchargement de source sur des dépots type SVN ou GIT fonctionne sans souci:

EXTERNALPROJECT_ADD(
 xavs
 SVN_REPOSITORY https://xavs.svn.sourceforge.net/svnroot/xavs/trunk 
 CONFIGURE_COMMAND ./configure --prefix=${CMAKE_BINARY_DIR} --enable-shared=no --enable-static=yes
 BUILD_IN_SOURCE 1
)

Par défaut, l'auteur propose

  • x264
  • rtmp
  • theorea
  • speex,
  • aac
Il est aisé d'ajouter d'autres supports comme:
  • dirac 0.4.10 / schroedinger 1.0.9
  • xavs
  • etc...
J'ai upgradé sa version pour et fait des tests pour ffmpeg 0.8.4 sorti le 2011/09/22.

Non rien à dire que d'avoir ffmpeg compilé en full static quand on veut procéder à une conversion vidéo, sans avoir à se trimbaler toutes les dépendances :)