如何在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
.
我不想用 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
.