如何将 AVFrame 转换为 PNG 图像

问题描述 投票:0回答:0

目前,我正在研究一个小的 Libav 示例,将一个小的 MP4 视频拆分成一个 PNG 序列。 到目前为止,这就是我现在所拥有的: https://github.com/xtingray/MP4toPNG/blob/main/cutter.c

如果您在 Unix 环境中克隆存储库,则可以通过运行 build.sh 脚本轻松测试示例。 大部分实施工作正常:我加载 MP4 输入文件,将视频拆分为 AVFrame 变量,然后使用 libpng 库创建 PNG 文件。 我唯一的问题是生成的图像是配置错误和灰色,就像这个: https://github.com/xtingray/MP4toPNG/blob/main/output/frame-1.png

我猜错误与我获取 AVFrame 数据并将其存储为 PNG 文件的方式有关,但我完全不确定:

  png_bytep *row_pointers = (png_bytep *) malloc(sizeof(png_bytep) * frame->height);
  for (int y = 0; y < frame->height; y++) {
     row_pointers[y] = (png_bytep) (frame->data[0] + y * frame->linesize[0]);
  }

任何提示?

mp4 libpng libav
© www.soinside.com 2019 - 2024. All rights reserved.