我试图找出AVFrame.linesize[]
的每个单元格的含义,但我没有找到。
据我所知,linesize[0]
是宽度,linesize[1]
是高度。
avcodec_decode_video2(codecCtxDecode, frameDecoded, &frameFinished, &packet);
后只有lineize [0]有值而其他单元格总是0?已更新
我认为AVFrame.data [i]和AVFrame.linesize [i]是行中特定颜色的数据和行的长度,我是否正确?
答案 0 :(得分:26)
对于平面数据,例如YUV420
,linesize[i]
包含i
- 平面的步幅。
例如,对于框架640x480
data[0]
包含指向Y
组件的指针,data[1]
和data[2]
包含指向U
和{{的指针1}}飞机。在这种情况下,V
,linesize[0] == 640
(因为linesize[1] == linesize[2] == 320
和U
平面小于V
平面的一半)
对于像素数据(Y
),只有一个平面(RGB24
)和data[0]
(linesize[0] == width * channels
640 * 3
)
答案 1 :(得分:11)
查看视频帧格式的描述:
您将看到格式分为两大类:打包和平面,具体取决于组件是单独保存还是交错保存。 Strides的含义略有不同,基本上它们是你需要跳过一行的字节数。