Come installare libav / avconv su OSX?


32

OSX viene fornito con un'utilità di conversione video da riga di comando avconvert ma questo strumento offre funzionalità limitate rispetto a avconv fornito da libav .

Come posso installare avconv su OS X?


3
Con Homebrew: brew install libav.
Mathias Bynens,

Risposte:



17

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 +asmsembra 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


3
Su Mac OSX, le dipendenze installate tramite MacPorts e utilizzando pkg-config non vengono trovate finché non si imposta la variabile di ambiente 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!
Alexy,

5
brew install libav
Steven Soroka,

1
Nel penultimo passaggio, crea lib-av. ERRORE: gnutls non trovato
Chase Roberts

@ChaseRoberts Ciao Chase, ho anche lo stesso problema con gnutls non trovato. Ho provato a seguire una guida gist.github.com/morgant/1753095 ma ho riscontrato altri errori. Sei mai stato in grado di far funzionare le cose?
Giovanni,

ok ho dovuto reinstallare homebrew per mettermi brew install libaval lavoro.
Giovanni,

1

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}/libavdevicee 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}/libavdevicee aggiungi sem_timedwait.oalla fine della OBJSvariabile

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 libavo 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 libave 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 _keithper ottenere i nomi originali). L'unico riferimento a sem_timedwait()in libav(per detta versione) è in jack.c.


0

Per i video ospitati su https (molti, in questi giorni), assicurati di creare avconv con il supporto OpenSSL:

brew install libav --with-openssl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.