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) ?
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
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
.
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.