我正在使用FFMPEG API构建一个简单的解码应用程序。我知道OpenCV中有解决方案,但出于特殊原因我不会使用它。由于我对FFMPEG(以及这个社区)都很新,我想知道在构建FFMPEG时我是否有任何错误。
编译器:我正在使用gcc 5.3.0进行编译和构建。
以下是我遵循的步骤:
我使用以下配置构建了FFMPEG库:
./ configure --prefix = / home / dep / ffmpeg / install / --pkg-config-flags = - static --enable-gpl --disable-yasm
我的编译命令适用于应用程序:
g ++ -std = c ++ 11 -I / home / dep / ffmpeg / install / include / Queue.cpp Image.cpp CaptureFFMPEGFrame.cpp Object.cpp main.cpp -o main -L / home / dep / ffmpeg / install / lib -lavutil -lavcodec -lavformat -lavdevice -lavfilter -lswscale -lswresample -lpostproc -lpthread -lz -lrt -llzma -lbz2
我面临的错误是:
CaptureFFMPEGFrame.cpp:203:169: error: ‘PIX_FMT_BGR24’ was not declared in this scope
mpFrameSwsContext = sws_getContext(mpAVCodecContext->width, mpAVCodecContext->height, mpAVCodecContext->pix_fmt, mpAVCodecContext->width, mpAVCodecContext->height, PIX_FMT_BGR24, SWS_BICUBIC, NULL, NULL, NULL)
我的努力和理解:
根据我的理解,libavutil / pixfmt.h包含我包含的像素格式以及其他包含,并且错误仍然存在。您还可以查看我的应用程序中包含的库。
由于我的程序是cpp代码,因此我的标题已包含在extern“C”中,即#include "libavcodec/avcodec.h"
我可能错过了什么?
非常感谢。
答案 0 :(得分:10)
截至提交78071a14,像素格式已添加AV_
前缀,PIX_FMT_*
定义移至libavutil/old_pix_fmts.h
(原始{{1}包含}})。然后在下一个主要版本中删除此文件。
修复(如评论中所述)只是将此前缀添加到尚未更新的任何pixfmt.h
语句中。