46 votes

Comment installer libav/avconv sur Mac OS X ou macOS 11 ?

OSX dispose d'un utilitaire de conversion vidéo en ligne de commande avconvert mais cet outil offre des fonctionnalités limitées par rapport à l'outil avconv fourni par libav .

Comment installer avconv sur OS X (ou macOS 11) ?

79voto

Weston Ganger Points 961

Il suffit de l'installer avec brew :

brew install libav

18voto

Izmoto Points 1134

Commencez par vous emparer de la bibliothèque :

 wget http://libav.org/releases/libav-10.1.tar.gz
# use http://libav.org/releases/libav-snapshot.tar.bz2 for the latest snapshot
tar -xvzf libav-10.1.tar.gz 
cd libav-10.1

Configurer les dépendances avec MacPorts (ou d'autres gestionnaires de paquets tels que Homebrew ) :

sudo port install yasm zlib bzip2 faac lame speex libogg libvorbis libtheora libvpx x264 XviD openjpeg15 opencore-amr freetype

Construire libav :

./configure \
--extra-cflags=-I/opt/local/include --extra-ldflags=-L/opt/local/lib \
--enable-gpl --enable-libx264 --enable-libxvid \
--enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb \
--enable-nonfree --enable-libfaac \
--enable-libmp3lame --enable-libspeex --enable-libvorbis --enable-libtheora --enable-libvpx \
--enable-libopenjpeg --enable-libfreetype --enable-doc --enable-gnutls --enable-shared

make && sudo make install

Vous pouvez ensuite exécuter avconv :

avconv -i input.avi -c:v libx264 -preset slow -crf 18 output.mp4

  • x264 +asm semble être nécessaire pour fonctionner cpu-capabilities Ainsi, si vous ne les obtenez pas (par ex. [libx264 @ 0x7fe66101a800] using cpu capabilities: none! ) :

sudo port upgrade --enforce-variants x264 +asm

Vous devriez obtenir qqch comme : [libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX

1voto

Derek K Points 11

Pour ceux qui n'ont pas brew - et jusqu'à ce que macports propose un port pour libav Voici mes notes pour l'installation de libav sur OSX 10.8.5 à partir de source (version libav) 12_dev0 (à partir de github).

Le principal problème auquel j'ai été confronté est que libav utilise sem_timedwait() (semaphore.h sous linux) qui n'est pas défini sous macos.

Ce poste https://stackoverflow.com/a/15163760 mentionne que Keith Shortridge de l'Australian Astronomical Observatory's software group (merci) a écrit une implémentation de cette fonction pour macos qui peut être trouvée ici https://github.com/attie/libxbee3/tree/master/xsys_darwin

Télécharger les deux fichiers dans ${LIBAVDIR}/libavdevice puis ajoutez la ligne suivante dans le fichier d'en-tête sem_timedwait.h :

int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);

Modifiez ensuite le fichier Makefile dans ${LIBAVDIR}/libavdevice et ajouter sem_timedwait.o à la fin de la OBJS variable

configurer et faire en sorte que tous les

vous êtes prêt à partir.

pour mémoire, j'ai utilisé la commande configure suivante :

./configure --extra-cflags=-I/opt/local/include --extra-ldflags=-L/opt/local/lib --enable-gpl --enable-libx264 --enable-libxvid --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-nonfree --enable-libfaac --enable-libmp3lame --enable-libspeex --enable-libvorbis --enable-libtheora --enable-libvpx --enable-libopenjpeg --enable-libfreetype --enable-doc --enable-gnutls --prefix=/opt/local

AVERTISSEMENT : Je ne peux pas dire ou garantir que ladite mise en œuvre de sem_timedwait() est la bonne et/ou n'aura pas d'effets secondaires sur le fonctionnement de l'entreprise. libav ou toute autre partie du système qui est liée aux bibliothèques libav, qui ont désormais un sem_timedwait() mise en œuvre sur le site ! !!! Pour ce dernier, je suggère de renommer sem_timedwait() partout dans votre exemplaire de libav et la mise en œuvre de Keith. Vérifiez également si d'autres symboles sont exportés depuis sem_timedwait.o et renommez-les également.

Voici les nouveaux symboles, renommés, issus de la mise en œuvre de Keith Shortridge de sem_timedwait() :

sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith

(supprimer _keith pour obtenir les noms originaux). La seule référence à sem_timedwait() において libav (pour ladite version) est dans jack.c .

1voto

User Points 33

Pour les vidéos hébergées en https (beaucoup, de nos jours), assurez-vous de construire avconv avec le support d'OpenSSL :

brew install libav --with-openssl

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X