Я не хочу регистрировать все кодеки с помощью avcodec_register_all (); I хотите зарегистрировать один конкретный кодек. Как ни странно, я не могу найти ни одного рабочего примера, который показывает, как использовать
Как использовать avcodec_register () в программе на C ++
extern AVCodec ff_h264_decoder;
avcodec_register(&ff_h264_decoder);
Но я получаю
неразрешенный внешний символ
Ошибка компоновщика. Я попытался обернуть структуру extern "C"
, но все равно. Нужно ли связывать библиотеку h264 для доступа к этим структурам?
Ответы (1)
Я не очень хорошо знаком с MSVC
, и вы упустили детали сборки. Однако распространенной причиной такого рода ошибок является неправильный порядок библиотеки при статической компоновке, поэтому проверьте, как она обрабатывает зависимости.
Ниже приведен пример для g++
, возможно, это поможет вам или кому-то другому.
extern "C" {
#include <libavcodec/avcodec.h>
}
extern AVCodec ff_h264_decoder;
int main() {
avcodec_register(&ff_h264_decoder);
}
а также
g++ -o register -I/ffmpeg/include/path register.cpp -L/ffmpeg/lib/path -lavcodec -lavutil -lpthread [-possibly other libs based on configuration]
или используйте pkg-config
.
person
aergistal
schedule
31.07.2017
Как ни странно, я попробовал это снова, и он скомпилировал без ошибок компоновщика. Спасибо.
- person Michael IV; 16.11.2017
libavcodec
? - person aergistal   schedule 31.07.2017avcodec_register(&ff_h264_decoder)
работает для меня вc
.libx264
используется только для кодирования. - person aergistal   schedule 31.07.2017g++
. Было бы полезно выложить команду сборки. - person aergistal   schedule 31.07.2017