FFMPEG: ' PIX_FMT_BGR24 '没有在此范围内声明
FFMPEG: ‘PIX_FMT_BGR24’ was not declared in this scope
我正在使用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 - lswsample -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"
有什么我可能错过的吗?
许多谢谢。在提交78071a14时,像素格式已经以AV_
为前缀,并且PIX_FMT_*
定义被移动到libavutil/old_pix_fmts.h
(由原始pixfmt.h
包含)。然后在下一个主要版本中删除该文件。
修复(如评论中所述)只是将此前缀添加到尚未更新的任何PIX_FMT_*
语句中。
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 如何找到在本地范围内声明的变量的地址?
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 错误:"SHGetKnownFolderPath"未在此范围内声明
- 错误:'Sprite'未在此范围内声明