我不想在avcodec_register_all();注册所有编解码器 我想注册一个特定的编解码器。 扼杀,我找不到任何展示如何使用avcodec_register()的工作示例。大多数示例I found都提出了类似的建议:
extern AVCodec ff_h264_decoder;
avcodec_register(&ff_h264_decoder);
但我得到了
未解析的外部符号
链接器出错。我试图用extern "C"
包装结构,但仍然是相同的。我需要链接h264 lib来访问这些结构吗?
答案 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
。