Это мой первый вопрос, который я задал суперпользователю, поэтому, пожалуйста, будьте терпеливы с моим невежеством, если оно всплывет. Я потратил часы и часы, пытаясь понять это, и был бы очень признателен за вашу помощь.

Я недавно установил ffmpeg, и он шел со многими необходимыми библиотеками, но в нем отсутствовал libvpx. После этого я установил libvpx.tar.bz2 в те же каталоги, что и другие мои библиотеки, и запустил untar. Затем я выполнил следующее в командной строке из моего каталога ffmpeg:

./configure --enable-libvpx

Похоже, он не возвращал никаких ошибок, но в нем перечислены внешние библиотеки, включенные декодеры, включенные кодеры и т.д., А в нижней части он сказал:

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

Но когда я бегу:

ffmpeg -codecs

Возвращает:

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

Который не содержит --enable-libvpx. Есть что-то, чего мне не хватает? Как я могу включить libvpx?

Я использую CentOS 6.6. Спасибо за вашу помощь!

1 ответ1

1

Во- первых, проверьте , был ли на самом деле включен libvpx. Мое предположение нет:

$ 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

Предполагая, что это говорит о 0 (имеется в виду: отключено), выясните почему, выполнив поиск "-lvpx" в 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
НАЧАЛО /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/ Пользователи / ronaldbultje / Проекты /libvpx -I/opt/local/include -std = c99 -fomit-frame-pointer -fPIC -pptread -I/include -L/opt/local/lib -c -o /var/folders/fz/vjyfg5z12vj759mhd1t27r_m0000gn/T//ffconf.9gSJKIir.o /var/folders/fz/vjyfg5z12vj759mhd1t27r_mffqf3TVc00.x
clang: warning: аргумент не используется во время компиляции: '-L/opt/local/lib'
gcc -L/ Users / ronaldbultje / Проекты /libvpx/ x86-64 -L/opt/local/lib -Wl, -dynamic, -search_paths_first -I/opt/local/include -L/opt/local/lib -o / вар / папки / FZ / vjyfg5z12vj759mhd1t27r_m0000gn / T // ffconf.kMUmUAaJ /var/folders/fz/vjyfg5z12vj759mhd1t27r_m0000gn/T//ffconf.9gSJKIir.o -lvpx -lm -framework CoreGraphics -lm -llzma -lbz2 -lz -pthread

В вашем случае вы, скорее всего, увидите, что эти тесты не пройдены, например, из-за того, что не удалось найти заголовочные файлы или библиотеки, на которые можно ссылаться. Скорее всего, это связано с тем, что при использовании ссылок на libvpx не используются правильные cflags/libs. Чтобы это исправить, используйте --extra-cflags = .. и --extra-libs = .. при запуске configure. Например, когда вы помещаете заголовочные файлы libvpx в /path /to /libvpx /include и библиотеки в /path /to /libvpx /libs, используйте:

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

В качестве дополнительных параметров настройки (т.е. в дополнение к --enable-libvpx). Тогда это должно работать. Также можно переместить заголовки libvpx в библиотеки /usr /include и libvpx в /usr /lib, и тогда они автоматически найдут их. (В типичных дистрибутивах Linux именно здесь менеджер пакетов по умолчанию будет помещать эти файлы.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .