Não é possível ativar a biblioteca libvpx no ffmpeg a partir da linha de comando

0

Esta é a minha primeira pergunta que fiz sobre o superusuário, então, por favor, seja paciente com minha ignorância se ela aparecer. Eu passei horas e horas tentando descobrir isso e agradeceria muito sua ajuda.

Eu recentemente instalei o ffmpeg e ele veio com muitas bibliotecas que eu precisava, mas faltava o libvpx. Eu instalei o libvpx.tar.bz2 após o fato nos mesmos diretórios que minhas outras bibliotecas e executei o untar. Então eu executei o seguinte na linha de comando do meu diretório ffmpeg:

./configure --enable-libvpx

Ele não retornou nenhum erro, mas listou bibliotecas externas, decodificadores habilitados, codificadores ativados etc. e, na parte inferior, disse:

Creating config.mak, config.h, and doc/config.texi...
config.h is unchanged
config.asm is unchanged
libavutil/avconfig.h is unchanged

Mas quando eu corro:

ffmpeg -codecs

Ele retorna:

configuration: --prefix=/usr/local/cpffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-decoder=liba52 --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/local/cpffmpeg/include/ --extra-ldflags=-L/usr/local/cpffmpeg/lib --enable-version3 --extra-version=syslint

Que não contém --enable-libvpx. Há algo que estou perdendo? Como posso ativar o libvpx?

Estou executando o CentOS 6.6. Obrigado pela sua ajuda!

    
por Patrick 24.07.2015 / 15:27

1 resposta

1

Primeiro, verifique se o libvpx estava realmente ativado. Meu palpite é não:

$ grep LIBVPX config.h
#define CONFIG_LIBVPX 1
#define CONFIG_LIBVPX_VP8_DECODER 1
#define CONFIG_LIBVPX_VP9_DECODER 1
#define CONFIG_LIBVPX_VP8_ENCODER 1
#define CONFIG_LIBVPX_VP9_ENCODER 1

Supondo que isto diz 0 (significado: desativado), descubra porque pesquisando por "-lvpx" no config.log:

check_pkg_config vpx >= 0.9.1 vpx/vpx_decoder.h vpx/vp8dx.h vpx_codec_vp8_dx
pkg-config --exists --print-errors vpx >= 0.9.1
check_func_headers vpx/vpx_decoder.h vpx/vp8dx.h vpx_codec_vp8_dx -I/opt/local/include -L/opt/local/lib -lvpx -lm
check_ld cc -I/opt/local/include -L/opt/local/lib -lvpx -lm
check_cc -I/opt/local/include -L/opt/local/lib
BEGIN /var/folders/fz/vjyfg5z12vj759mhd1t27r_m0000gn/T//ffconf.m3VTrQlx.c
1 #include <vpx/vpx_decoder.h>
2 #include <vpx/vp8dx.h>
3 long check_vpx_codec_vp8_dx(void) { return (long) vpx_codec_vp8_dx; }
4 int main(void) { return 0; }
END /var/folders/fz/vjyfg5z12vj759mhd1t27r_m0000gn/T//ffconf.m3VTrQlx.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -I/Users/ronaldbultje/Projects/libvpx -I/opt/local/include -std=c99 -fomit-frame-pointer -fPIC -pthread -I/opt/local/include -L/opt/local/lib -c -o /var/folders/fz/vjyfg5z12vj759mhd1t27r_m0000gn/T//ffconf.9gSJKIir.o /var/folders/fz/vjyfg5z12vj759mhd1t27r_m0000gn/T//ffconf.m3VTrQlx.c
clang: warning: argument unused during compilation: '-L/opt/local/lib'
gcc -L/Users/ronaldbultje/Projects/libvpx/x86-64 -L/opt/local/lib -Wl,-dynamic,-search_paths_first -I/opt/local/include -L/opt/local/lib -o /var/folders/fz/vjyfg5z12vj759mhd1t27r_m0000gn/T//ffconf.kMUmUAaJ /var/folders/fz/vjyfg5z12vj759mhd1t27r_m0000gn/T//ffconf.9gSJKIir.o -lvpx -lm -framework CoreGraphics -lm -llzma -lbz2 -lz -pthread

No seu caso, você provavelmente verá que esses testes falharam, por exemplo, porque não conseguiu encontrar os arquivos de cabeçalho ou as bibliotecas para vincular. Isso provavelmente é causado por não usar as cflags / libs corretas ao tentar vincular-se à libvpx. Para corrigir isso, use --extra-cflags = .. e --extra-libs = .. ao executar configure. Por exemplo, quando você coloca os cabeçalhos libvpx em / path / to / libvpx / include e as bibliotecas em / path / to / libvpx / libs, use:

--extra-cflags='-I /path/to/libvpx/include' --extra-libs='-L /path/to/libvpx/libs'

Como opções adicionais de configuração (ou seja, além de --enable-libvpx). Então, deveria funcionar. Alternativamente, mova os cabeçalhos libvpx para as bibliotecas / usr / include e libvpx para / usr / lib e, em seguida, ele os encontrará automaticamente. (Nas distribuições típicas do Linux, é aqui que o gerenciador de pacotes padrão coloca esses arquivos.)

    
por 13.08.2015 / 19:46