我得到的一般想法frame.data[]是根据视频(RGB或YUV)的像素格式进行解释.但是有没有通用的方法从帧中获取所有像素数据?我只是想计算帧数据的哈希值,而不是解释它来显示图像.
根据AVFrame.h:
uint8_t* AVFrame::data[AV_NUM_DATA_POINTERS]
Run Code Online (Sandbox Code Playgroud)
指向图片/通道平面的指针.
int AVFrame::linesize[AV_NUM_DATA_POINTERS]
Run Code Online (Sandbox Code Playgroud)
对于视频,每个图片行的字节大小.
这是否意味着,如果我只是从提取data[i]的linesize[i]字节,然后我得到的帧的全像素的信息?
pog*_*kiy 11
linesize[i]包含i第-th个飞机的步幅.
要获取整个缓冲区,请使用from中的函数 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);
Run Code Online (Sandbox Code Playgroud)
使用
int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);
Run Code Online (Sandbox Code Playgroud)
计算所需的缓冲区大小.
| 归档时间: |
|
| 查看次数: |
9517 次 |
| 最近记录: |