Como instalar o libav / avconv no OSX?

30

O OSX vem com um utilitário de conversão de vídeo de linha de comando avconvert mas esta ferramenta fornece funcionalidade limitada em comparação com o avconv fornecido por libav .

Como posso instalar o avconv no OS X?

    
por Olivier 19.03.2013 / 18:34

4 respostas

17

Primeiro pegue a 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 as dependências com MacPorts (ou outros gerenciadores de pacotes, 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

Então você pode executar avconv :

avconv -i input.avi -c:v libx264 -preset slow -crf 18 output.mp4
  • x264 +asm parece ser necessário para trabalhar cpu-capabilities , por isso, se você não os obtiver (ou seja, [libx264 @ 0x7fe66101a800] using cpu capabilities: none! ), execute:

sudo port upgrade --enforce-variants x264 +asm

Você deve ficar como: [libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX

    
por 19.03.2013 / 18:34
50

Basta instalá-lo com brew:

brew install libav
    
por 02.09.2015 / 20:20
1

Para quem não tiver brew - e até macports aparecerem com uma porta para libav , aqui estão minhas anotações para instalar a libav no OSX 10.8.5 de source (libav version 12_dev0 , do github).

O principal problema que enfrentei foi que libav usa sem_timedwait() (semaphore.h no linux) que não é definido em macos.

Este post link menciona que Keith Shortridge, do grupo de software do Observatório Astronômico Australiano (obrigado), escreveu uma implementação da referida função para macos que podem ser encontrados aqui link

Faça o download dos dois arquivos em ${LIBAVDIR}/libavdevice e adicione a seguinte linha no arquivo de cabeçalho sem_timedwait.h :

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

Em seguida, edite o Makefile em ${LIBAVDIR}/libavdevice e adicione sem_timedwait.o no final da variável OBJS

configure e faça tudo

você é bom para ir.

para o registro, usei o seguinte 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

AVISO: Eu não posso dizer ou garantir se a referida implementação de sem_timedwait() é a correta e / ou não terá efeitos colaterais para o trabalho de libav ou mesmo de qualquer outra parte do sistema que links para bibliotecas libav que agora tem uma implementação sem_timedwait() lá !!!! Para este último, sugiro que você renomeie sem_timedwait() em todos os lugares em sua cópia de libav e na implementação de Keith. Além disso, verifique se outros símbolos são exportados de sem_timedwait.o e renomeie-os também.

Aqui estão os novos símbolos renomeados da implementação de sem_timedwait() :

de Keith Shortridge

sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith

(remova _keith para obter os nomes originais). A única referência a sem_timedwait() in libav (para a versão mencionada) é em jack.c .

    
por 17.11.2015 / 19:09
0

Para vídeos hospedados em https (muitos, atualmente), certifique-se de criar o avconv com suporte ao OpenSSL:

brew install libav --with-openssl
    
por 21.06.2018 / 20:24

Tags