⚠️ Ceci est un site de traduction non officiel, sans lien avec le projet FFmpeg. Pour des informations faisant autorité, consultez la page originale (https://ffmpeg.org/platform.html).

Informations spécifiques aux plateformes

1 Unix et systèmes apparentés

Certaines parties de FFmpeg ne peuvent pas être compilées avec la version 2.15 de l'assembleur GNU, encore fournie par quelques distributions AMD64. Pour vérifier qu'après une mise à niveau de binutils, votre compilateur utilise bien la version requise de gas, exécutez :

$(gcc -print-prog-name=as) --version

Si ce n'est pas le cas, installez un autre compilateur ne comportant pas de chemin codé en dur vers gas. En dernier recours, passez --disable-asm à configure.

1.1 Configuration avancée de l'édition de liens

Si vous avez compilé les bibliothèques FFmpeg en statique et souhaitez les utiliser pour créer votre propre bibliothèque partagée, il peut être nécessaire de forcer la prise en charge de PIC (avec --enable-pic lors du configure de FFmpeg) et d'ajouter l'option suivante aux LDFLAGS de votre projet :

-Wl,-Bsymbolic

Si votre plateforme cible exige des binaires indépendants de la position, transmettez l'indicateur d'édition de liens approprié (par exemple -pie) à --extra-ldexeflags.

1.2 BSD

Le make de BSD ne permet pas de compiler FFmpeg ; vous devez installer et utiliser GNU Make (gmake).

1.3 (Open)Solaris

GNU Make est nécessaire pour compiler FFmpeg, vous devez donc l'invoquer (gmake), le Make standard de Solaris ne fonctionnera pas. Lors d'une compilation avec un frontal non conforme à c99 (gcc, suncc générique), ajoutez --extra-libs=/usr/lib/values-xpg6.o ou --extra-libs=/usr/lib/64/values-xpg6.o aux options de configure, car la libc n'est pas conforme à c99 par défaut. Les tests effectués par configure peuvent déclencher une exception provoquant l'arrêt de configure lui-même, à cause d'un bug du shell système. Pour contourner ce problème, invoquez directement un autre shell tel que bash :

bash ./configure

1.4 Darwin (Mac OS X, iPhone)

La chaîne d'outils fournie avec Xcode suffit pour compiler le code de base non accéléré.

Mac OS X sur PowerPC ou ARM (iPhone) nécessite un préprocesseur disponible sur https://github.com/FFmpeg/gas-preprocessor ou https://github.com/yuvi/gas-preprocessor (actuellement obsolète) pour compiler les fonctions assembleur optimisées. Placez le script Perl quelque part dans votre PATH ; le configure de FFmpeg le détecte automatiquement.

Mac OS X sur amd64 et x86 nécessite nasm pour compiler la plupart des fonctions assembleur optimisées. Fink, Gentoo Prefix, Homebrew ou MacPorts peuvent facilement le fournir.

2 DOS

L'utilisation d'un compilateur croisé est préférable pour diverses raisons. http://www.delorie.com/howto/djgpp/linux-x-djgpp.html

3 OS/2

Pour des informations sur la compilation de FFmpeg sous OS/2, consultez http://www.edm2.com/index.php/FFmpeg.

4 Windows

4.1 Compilation native sous Windows avec MinGW ou MinGW-w64

FFmpeg peut être compilé pour s'exécuter nativement sous Windows à l'aide de la chaîne d'outils MinGW-w64. Installez les dernières versions de MSYS2 et de MinGW-w64 depuis http://msys2.github.io/ et/ou http://mingw-w64.sourceforge.net/. Vous trouverez des instructions d'installation détaillées dans la section de téléchargement et la FAQ.

Remarques :

  • La compilation pour l'environnement MSYS est déconseillée ; MSYS2 fournit un environnement MinGW-w64 complet via mingw64_shell.bat ou mingw32_shell.bat, qu'il convient d'utiliser à la place de l'environnement fourni par msys2_shell.bat.
  • La compilation sous MSYS2 peut être accélérée en désactivant les règles implicites du Makefile, en appelant make -r au lieu de make seul. Ce gain de vitesse est quasi nul pour les compilations ponctuelles habituelles et ne se remarque que lors d'une seconde exécution de make (par exemple pendant make install).
  • Pour compiler FFplay, vous devez disposer de la bibliothèque de développement MinGW de SDL et de pkg-config.
  • En utilisant ./configure --enable-shared lors de la configuration de FFmpeg, vous pouvez compiler les bibliothèques FFmpeg (par exemple libavutil, libavcodec, libavformat) sous forme de DLL.

4.1.1 Compilation native sous Windows avec MSYS2

L'environnement MSYS2 MinGW-w64 fournit des chaînes d'outils et des dépendances prêtes à l'emploi via pacman.

Veillez à utiliser mingw64_shell.bat ou mingw32_shell.bat pour disposer de l'environnement MinGW-w64 correct. L'installation par défaut fournit des raccourcis vers ceux-ci sous MinGW-w64 Win64 Shell et MinGW-w64 Win32 Shell.

# normal msys2 packages
pacman -S make pkgconf diffutils

# mingw-w64 packages and toolchains
pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2

Pour cibler le 32 bits, remplacez x86_64 par i686 dans la commande ci-dessus.

4.2 Microsoft Visual C++ ou Intel C++ Compiler pour Windows

FFmpeg peut être compilé avec MSVC 2013 ou une version ultérieure.

Les prérequis suivants sont nécessaires :

  • MSYS2
  • NASM (également disponible via le gestionnaire de paquets de MSYS2.)

Pour mettre en place un environnement adéquat dans MSYS2, vous devez exécuter msys_shell.bat depuis l'invite de commandes de Visual Studio ou de l'Intel Compiler.

Placez nasm.exe quelque part dans votre PATH.

Ensuite, assurez-vous que les autres en-têtes et bibliothèques que vous souhaitez utiliser, telles que zlib, se trouvent à un endroit visible par le compilateur. Pour cela, modifiez les variables d'environnement LIB et INCLUDE afin d'y inclure les chemins au format Windows vers ces répertoires. Vous pouvez également essayer les options de configure --extra-cflags/--extra-ldflags.

Enfin, exécutez :

For MSVC:
./configure --toolchain=msvc

For ICL:
./configure --toolchain=icl

make
make install

Si vous souhaitez compiler des bibliothèques partagées, ajoutez --enable-shared à vos options de configure. Notez qu'en raison de la façon dont MSVC et ICL gèrent les importations et exportations de DLL, vous ne pouvez pas compiler les bibliothèques statiques et partagées en même temps ; activer les bibliothèques partagées désactive automatiquement les statiques.

Remarques :

  • Si vous souhaitez compiler avec la prise en charge de zlib, vous devrez récupérer quelque part un binaire zlib compatible, avec une bibliothèque d'import MSVC, ou, si vous préférez lier statiquement, vous pouvez suivre les instructions ci-dessous pour compiler un zlib.lib compatible avec MSVC. Quelle que soit la méthode utilisée, vous devez tout de même suivre l'étape 3, sans quoi la compilation échouera.
    1. Récupérez les sources de zlib.
    2. Modifiez win32/Makefile.msc pour qu'il utilise -MT au lieu de -MD, car c'est ainsi que FFmpeg est également compilé.
    3. Modifiez zconf.h et supprimez son inclusion de unistd.h. Celle-ci est incluse par erreur lors de la compilation de FFmpeg.
    4. Exécutez nmake -f win32/Makefile.msc.
    5. Déplacez zlib.lib, zconf.h et zlib.h vers un emplacement visible par MSVC.
  • FFmpeg a été testé avec ce qui suit sur i686 et x86_64 :
    • Visual Studio 2013 Pro and Express
    • Intel Composer XE 2013
    • Intel Composer XE 2013 SP1

Tout le reste n'est pas officiellement pris en charge.

4.2.1 Édition de liens avec FFmpeg sous Microsoft Visual C++

Si vous prévoyez de lier des bibliothèques statiques compilées avec MSVC, vous devrez vous assurer que Runtime Library est réglé sur Multi-threaded (/MT) dans les paramètres de votre projet.

Vous devrez définir inline avec quelque chose que MSVC comprend :

#define inline __inline

Notez également que, comme indiqué dans Microsoft Visual C++, vous aurez besoin d'un inttypes.h compatible MSVC.

Si vous prévoyez d'utiliser des bibliothèques d'import créées par dlltool, vous devez régler References sur No (/OPT:NOREF) dans les paramètres d'optimisation de l'éditeur de liens, sans quoi les binaires résultants échoueront à l'exécution. Ceci n'est pas nécessaire lors de l'utilisation de bibliothèques d'import générées par lib.exe. Ce problème est signalé en amont à l'adresse http://sourceware.org/bugzilla/show_bug.cgi?id=12633.

Pour créer des bibliothèques d'import qui fonctionnent avec l'option /OPT:REF (activée par défaut en mode Release), suivez ces étapes :

  1. Ouvrez l'invite de commandes Visual Studio.

Sinon, dans une invite de commandes normale, appelez vcvars32.bat, qui définit les variables d'environnement pour les outils Visual C++ (l'emplacement standard de ce fichier ressemble à C:\Program Files (x86_\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat).

  1. Entrez dans le répertoire bin où sont stockés les fichiers LIB et DLL créés.
  2. Générez de nouvelles bibliothèques d'import avec lib.exe :
     lib /machine:i386 /def:..\lib\foo-version.def  /out:foo.lib
    

Remplacez foo-version et foo par les noms de bibliothèque correspondants.

4.3 Compilation croisée pour Windows depuis Linux

Vous devez utiliser les outils de compilation croisée MinGW disponibles sur http://www.mingw.org/.

Configurez ensuite FFmpeg avec les options suivantes :

./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-

(vous pouvez modifier le cross-prefix selon le préfixe choisi pour les outils MinGW).

Vous pourrez ensuite tester facilement FFmpeg avec Wine.

4.4 Compilation sous Cygwin

Veuillez utiliser Cygwin 1.7.x, car les versions obsolètes 1.5.x de Cygwin ne disposent pas de llrint() dans leur bibliothèque C.

Installez votre Cygwin avec tous les paquets "Base", plus les paquets "Devel" suivants :

binutils, gcc4-core, make, git, mingw-runtime, texinfo

Pour exécuter FATE, vous aurez également besoin des paquets "Utils" suivants :

diffutils

Si vous souhaitez compiler FFmpeg avec des bibliothèques supplémentaires, téléchargez les paquets Cygwin "Devel" pour Ogg et Vorbis depuis n'importe quel dépôt de paquets Cygwin :

libogg-devel, libvorbis-devel

Les paquets de bibliothèques suivants ne sont disponibles que depuis Cygwin Ports :

libSDL-devel, libgsm-devel, libmp3lame-devel,
speex-devel, libtheora-devel, libxvidcore-devel

Pour x264, il est recommandé de compiler à partir des sources, car son évolution est trop rapide pour que Cygwin Ports reste à jour.

4.5 Compilation croisée pour Windows sous Cygwin

Avec Cygwin, vous pouvez créer des binaires Windows qui n'ont pas besoin de cygwin1.dll.

Installez simplement votre Cygwin comme expliqué précédemment, plus ces paquets "Devel" supplémentaires :

gcc-mingw-core, mingw-runtime, mingw-zlib

et ajoutez quelques indicateurs spéciaux à votre appel de configure.

Pour une compilation statique, exécutez

./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin

et pour une compilation avec des bibliothèques partagées

./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin

4.6 ARM64EC

FFmpeg n'a pas l'intention de prendre en charge la configuration de compilation Windows ARM64EC ; les correctifs modifiant les différentes bibliothèques pour les besoins d'ARM64EC ne seront pas acceptés.

Il peut néanmoins être possible de compiler FFmpeg dans cette configuration ; une telle compilation peut sembler fonctionner dans une certaine mesure. Elle peut toutefois présenter certaines incohérences d'ABI, que nous ne sommes pas disposés à corriger.

(Modifier le code assembleur aarch64 pour prendre en charge strictement ARM64EC nécessiterait d'ajouter des directives ifdef ou de modifier pratiquement tout ce code assembleur, ce qui représenterait une charge de maintenance considérable. De plus, modifier les surfaces d'ABI des bibliothèques pour corriger les incohérences d'ABI pourrait nécessiter des changements étendus et intrusifs.)

Hébergement fourni par telepoint.bg