我试图找到AVFrame.linesize[]的每个单元格的含义,但没有找到。

据我所知linesize[0]是宽度,linesize[1]是高度。

  • 如果我正确,其他单元格是什么意思?
  • 为什么在avcodec_decode_video2(codecCtxDecode, frameDecoded, &frameFinished, &packet);之后仅linesize [0]具有该值,而其他单元格始终为0?

  • 更新了

    我认为AVFrame.data [i]和AVFrame.linesize [i]是该行中特定颜色的数据和该行的长度,对吗?

    最佳答案

    对于诸如YUV420的平面数据,linesize[i]包含第i个平面的步幅。

    例如,对于帧640x480data[0]包含指向Y组件的指针,data[1]data[2]包含指向UV平面的指针。在这种情况下,linesize[0] == 640linesize[1] == linesize[2] == 320(因为UV平面小于Y平面的一半)

    对于像素数据(RGB24),只有一个平面(data[0])和linesize[0] == width * channels(640 * 3RGB24)

    10-08 12:31