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

How to use avcodec_register() in C++ program

我不想用 avcodec_register_all(); 注册所有编解码器 我想注册一个特定的编解码器。 奇怪的是,我找不到任何显示如何使用 avcodec_register() . Most of the examples I found 的工作示例,建议如下所示:

extern AVCodec ff_h264_decoder;

avcodec_register(&ff_h264_decoder);

但我得到

unresolved external symbol

来自 linker 的错误。我试图用 extern "C" 包装结构,但仍然 same.Do 我需要 link h264 lib 来访问这些结构?

我对 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.