¿Cómo instalar libav / avconv en OSX?

32

OSX viene con una utilidad de conversión de video de línea de comandos avconvert, pero esta herramienta proporciona una funcionalidad limitada en comparación con avconv proporcionada por libav .

¿Cómo puedo instalar avconv en OS X?

Olivier
fuente
3
Con Homebrew: brew install libav.
Mathias Bynens

Respuestas:

57

Simplemente instálelo con brew:

brew install libav
Weston Ganger
fuente
17

Primero agarra la biblioteca:

 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

Configure las dependencias con MacPorts (u otros gestores de paquetes como Homebrew ):

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

Construir 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

Entonces puedes ejecutar avconv:

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

  • x264 +asmparece ser necesario para que funcione cpu-capabilities, así que si no los consigue (es decir [libx264 @ 0x7fe66101a800] using cpu capabilities: none!), ejecute:

actualización de puerto sudo --enforce-variantes x264 + asm

Deberías obtener algo como: [libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX

Olivier
fuente
3
En Mac OSX, las dependencias instaladas a través de MacPorts y usando pkg-config no se encuentran hasta que establezca la variable de entorno export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig'. Also, for the fun of it, you may add, to ./configure , options: --extra-cflags = -I / opt / local / include --extra-ldflags = -L / opt / local / lib . Then the whole . / configure` arriba pasa milagrosamente!
Alexy
55
brew install libav
Steven Soroka
1
En el penúltimo paso, compile lib-av. ERROR: no se encontraron gnutls
Chase Roberts
@ChaseRoberts Hola Chase, también tengo el mismo problema con gnutls no encontrado. Intenté seguir una guía gist.github.com/morgant/1753095 pero encontré más errores. ¿Alguna vez pudiste hacer que las cosas funcionen?
John
ok solo tuve que reinstalar homebrew para poder brew install libavtrabajar.
John
1

Para aquellos que no lo tienen brew, y hasta que los macports tengan un puerto libav, aquí están mis notas para instalar libav en OSX 10.8.5 desde la fuente (versión libav 12_dev0, desde github).

El principal problema que enfrenté fue que libav usa sem_timedwait()(semaphore.h en linux) que no está definido en macos.

Esta publicación https://stackoverflow.com/a/15163760 menciona que Keith Shortridge del grupo de software del Observatorio Astronómico Australiano (gracias) ha escrito una implementación de dicha función para macos que se puede encontrar aquí https://github.com/attie / libxbee3 / tree / master / xsys_darwin

Descargue los dos archivos ${LIBAVDIR}/libavdevicey luego agregue la siguiente línea en el archivo de encabezado sem_timedwait.h:

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

Luego edite el Makefile ${LIBAVDIR}/libavdevicey agregue sem_timedwait.oal final de la OBJSvariable

configurar y hacer todo

tú eres bueno para irte.

para el registro, utilicé el siguiente comando de configuración:

./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

ADVERTENCIA: No puedo decir ni garantizar si dicha implementación de sem_timedwait()es la correcta y / o no tendrá efectos secundarios para el funcionamiento de libavninguna otra parte del sistema que se vincule a las bibliotecas libav que ahora tienen una sem_timedwait()implementación allí. !!!! Para este último, puedo sugerir cambiar el nombre a sem_timedwait()todas partes en su copia libavy la implementación de Keith. Compruebe también si se exportan otros símbolos desde sem_timedwait.o y cámbieles el nombre también.

Aquí están los nuevos símbolos renombrados de la implementación de Keith Shortridge de sem_timedwait():

sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith

(eliminar _keithpara obtener los nombres originales). La única referencia a sem_timedwait()in libav(para dicha versión) está en jack.c.

bliako
fuente
0

Para los videos alojados en https (muchos, en estos días), asegúrese de crear avconv con soporte de OpenSSL:

brew install libav --with-openssl
jm3
fuente