web-dev-qa-db-fra.com

Commenter l'installateur libav / avconv sur OSX?

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

Comment puis-je installer avconv sur OS X?

32
Olivier

D'abord, prenez 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

Configurez 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

Ensuite, vous pouvez exécuter avconv:

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

  • x264 +asm semble être nécessaire pour travailler cpu-capabilities, donc si vous ne les obtenez pas (c.-à-d. [libx264 @ 0x7fe66101a800] using cpu capabilities: none!), exécutez:

Mise à niveau du port Sudo --enforce-variantes x264 + asm

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

17
Olivier

Il suffit de l'installer avec de la bière:

brew install libav
52
Weston Ganger

Pour ceux sans brew - et jusqu'à ce que les macports proposent un port pour libav, voici mes notes pour l'installation de libav sur OSX 10.8.5 à partir de source (version de libav 12_dev0, à partir de github) .

Le principal problème que j'ai rencontré était que libav utilise sem_timedwait() (semaphore.h sous Linux) qui n'est pas défini dans macos.

Ce message https://stackoverflow.com/a/15163760 mentionne que Keith Shortridge du groupe de logiciels de l’observatoire australien d’astronomie (merci) a écrit une implémentation de ladite fonction pour macos qui peut être trouvée ici https://github.com/attie/libxbee3/tree/master/xsys_darwin

Téléchargez 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);

Puis éditez le Makefile dans ${LIBAVDIR}/libavdevice et ajoutez sem_timedwait.o à la fin de la variable OBJS

configurer et faire tout

tu es prêt.

pour mémoire, j'ai utilisé la commande de configuration 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 saurais dire ni garantir si ladite implémentation de sem_timedwait() est la bonne et/ou n'aura aucun effet secondaire sur le fonctionnement de libav ou de toute autre partie du système reliée à Les bibliothèques libav qui ont maintenant une implémentation sem_timedwait() dedans !!!! Pour ce dernier, puis-je suggérer de renommer sem_timedwait() partout dans votre copie de libav et l'implémentation de Keith. Vérifiez également si d’autres symboles sont exportés à partir de sem_timedwait.o et renommez-les également.

Voici les nouveaux symboles renommés de l'implémentation de sem_timedwait() par Keith Shortridge:

sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith

(supprimez _keith pour obtenir les noms d'origine). La seule référence à sem_timedwait() dans libav (pour ladite version) est dans jack.c.

1
bliako

Pour les vidéos hébergées sur https (beaucoup, de nos jours), assurez-vous de créer avconv avec le support OpenSSL:

brew install libav --with-openssl
0
jm3