如何在C ++程序中使用avcodec_register()

时间:2017-07-30 14:48:50

标签: c++ ffmpeg libavcodec

我不想在avcodec_register_all();注册所有编解码器 我想注册一个特定的编解码器。 扼杀,我找不到任何展示如何使用avcodec_register()的工作示例。大多数示例I found都提出了类似的建议:

extern AVCodec ff_h264_decoder;

avcodec_register(&ff_h264_decoder);

但我得到了

  

未解析的外部符号

链接器出错。我试图用extern "C"包装结构,但仍然是相同的。我需要链接h264 lib来访问这些结构吗?

1 个答案:

答案 0 :(得分: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