目前,我正在研究一个小的 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]);
}
任何提示?