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?
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?
Respuestas:
Simplemente instálelo con brew:
brew install libav
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 +asm
parece 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
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!
brew install libav
trabajar.
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}/libavdevice
y 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}/libavdevice
y agregue sem_timedwait.o
al final de la OBJS
variable
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 libav
ninguna 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 libav
y 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 _keith
para obtener los nombres originales). La única referencia a sem_timedwait()
in libav
(para dicha versión) está en jack.c
.
brew install libav
.