文档说 AV_PIX_FMT_NV12 平面 YUV 4:2:0, 12bpp, Y 的 1 个平面和 UV 分量的 1 个平面,它们是交错的(第一个字节 U 和后面的字节 V)
linesize[1] 和 linesize[0] 也是 1920,但如果我 strlen(data[1]) (UV 分量)
我得到 1044587 这个除以 frame->heigth 给我 967,21 ......所以 linesize 是错误的?
最佳答案
每个 channel 8 位,所以 uint8_t 是正确的。
“每像素 12 位”来自 8 位 Y + 2 位 U(每 4 个像素 8 位)+ 2 位 V(每 4 个像素 8 位)= 平均每像素 12 位。这也是为什么 UV 平面的位数是 Y 平面的一半的原因;它是 U+V 数据,但仅适用于 1/4 的像素。
关于c - AV_PIX_FMT_NV12 表示它具有 12bpp 位像素颜色,但数据是 uint8_t 我如何修改帧中的像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68506645/