c++ - ffmpeg:将 AVPixelFormat 视为 Int?

标签 c++ c ffmpeg

我想使用函数 ff_load_image

program.c

#include "../ffmpeg/libavfilter/lavfutils.h"

int main ()
{
  uint8_t* data;

  int linesize, width, height, log_ctx;

  int i = ff_load_image(&data, &linesize, &width, &height, AV_PIX_FMT_RGB24, "blue.jpg", &log_ctx);
}

这会编译,但会给出警告。

program.c: In function 'main':
program.c:11: warning: passing argument 5 of 'ff_load_image' makes pointer from integer without a cast
../ffmpeg/libavfilter/lavfutils.h:39: note: expected 'enum AVPixelFormat *' but argument is of type 'int'

当我运行程序时,它出现段错误。我想不出任何其他方式来指定像素格式。为什么 ffmpeg 认为 AV_PIX_FMT_RGB8 是一个整数?这显然是一个 AVPixelFormat

最佳答案

ff_load_image()需要一个 enum AVPixelFormat *ffmpeg 认为它是一个整数,因为它是 AVPixelFormat 的一个 enum 元素。 .而且,in C , 枚举常量的类型为 int

你应该使用:

enum AVPixelFormat pix_fmt = AV_PIX_FMT_RGB24;
int i = ff_load_image(&data, &linesize, &width, &height
                           , &pix_fmt, "blue.jpg", &log_ctx);

关于c++ - ffmpeg:将 AVPixelFormat 视为 Int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22433055/

相关文章:

c++ - 类富;在头文件中

c++ - 继承情况下静态函数的重新定义

video - 使用 ffprobe 检查文件是仅音频还是视频

python - Pydub 无法定位 ffprobe

c++ - 我可以在 Apache 模块中安全地使用 Boost 和/或 C++ 库吗?

c++ - 检查 OSX 是否采用 24 小时制

c - 或者 glibc 检测到 free() : invalid next size (fast)

C++ 作用域?将数组传递给函数时出现问题

c - 这个递归 GCD 函数正确吗?

php - FFMPEG 将视频文件从 FLV 转换为 MP4 不在浏览器上运行