Risposte:
Basta installarlo con brew:
brew install libav
Per prima cosa prendi 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
Imposta le dipendenze con MacPorts (o altri gestori di pacchetti come Homebrew ):
sudo port install yasm zlib bzip2 faac lame speex libogg libvorbis libtheora libvpx x264 XviD openjpeg15 opencore-amr freetype
Crea 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
Quindi puoi eseguire avconv
:
avconv -i input.avi -c:v libx264 -preset slow -crf 18 output.mp4
x264 +asm
sembra che sia necessario per funzionare cpu-capabilities
, quindi se non li [libx264 @ 0x7fe66101a800] using cpu capabilities: none!
esegui (es. ) esegui:aggiornamento porta sudo --enforce-varianti x264 + asm
Dovresti ottenere sth come: [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` sopra passa miracolosamente!
brew install libav
al lavoro.
Per quelli senza brew
- e fino a quando i macport non avranno una porta per libav
, ecco le mie note per l'installazione di libav su OSX 10.8.5 dal sorgente (versione libav 12_dev0
, da github).
Il problema principale che ho dovuto affrontare era che usa libav sem_timedwait()
(semaphore.h in Linux) che non è definito in macos.
Questo post https://stackoverflow.com/a/15163760 menziona che Keith Shortridge del gruppo software dell'Osservatorio astronomico australiano (grazie) ha scritto un'implementazione di tale funzione per macos che può essere trovata qui https://github.com/attie / libxbee3 / albero / master / xsys_darwin
Scarica i due file in ${LIBAVDIR}/libavdevice
e quindi aggiungi la seguente riga nel file di intestazione sem_timedwait.h
:
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
Quindi modifica il Makefile in ${LIBAVDIR}/libavdevice
e aggiungi sem_timedwait.o
alla fine della OBJS
variabile
configura e crea tutto
Sei bravo ad andare.
per la cronaca, ho usato il seguente comando configure:
./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
ATTENZIONE: Non posso dire o garantire se la suddetta implementazione sem_timedwait()
è quella corretta e / o non avrà effetti collaterali sul funzionamento libav
o in effetti su qualsiasi altra parte del sistema che si collega alle librerie libav che ora hanno sem_timedwait()
un'implementazione lì !!!! Per quest'ultimo posso suggerire di rinominare sem_timedwait()
ovunque nella tua copia libav
e implementazione di Keith. Controlla anche se sono stati esportati altri simboli da sem_timedwait.o e rinominali.
Ecco i nuovi simboli rinominati dall'implementazione di Keith Shortridge di sem_timedwait()
:
sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith
(rimuovi _keith
per ottenere i nomi originali). L'unico riferimento a sem_timedwait()
in libav
(per detta versione) è in jack.c
.
brew install libav
.