gpt4 book ai didi

ffmpeg - 如何在不指定像素格式的情况下从 AVFrame.data[] 和 AVFrame.linesize[] 获取原始帧数据?

转载 作者:行者123 更新时间:2023-12-04 01:02:34 28 4
gpt4 key购买 nike

我的总体想法是 frame.data[]根据视频的像素格式(RGB 或 YUV)来解释。但是有什么通用的方法可以从帧中获取所有像素数据吗?我只想计算帧数据的哈希值,而不是解释它来显示图像。

根据 AVFrame.h:

uint8_t* AVFrame::data[AV_NUM_DATA_POINTERS]

指向图片/ channel 平面的指针。
int AVFrame::linesize[AV_NUM_DATA_POINTERS]

对于视频,每个图片行的大小(以字节为单位)。

这是否意味着如果我只是从 data[i] 中提取对于 linesize[i]字节然后我得到关于帧的完整像素信息?

最佳答案

linesize[i]包含 i 的步幅-第平面。

要获取整个缓冲区,请使用 avcodec.h 中的函数

/**
* Copy pixel data from an AVPicture into a buffer, always assume a
* linesize alignment of 1. */
int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt,
int width, int height,
unsigned char *dest, int dest_size);

利用
int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);

计算所需的缓冲区大小。

关于ffmpeg - 如何在不指定像素格式的情况下从 AVFrame.data[] 和 AVFrame.linesize[] 获取原始帧数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19377938/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com