弄了好久都没解决,试了很多方法,终于在http://libav-users.943685.n4.nabble.com/yuv420-to-rgb24-NOT-using-libswscale-td1434694.html看到了解决方法,
void yuv2rgb(AVPicture *src, PixelFormat src_pix_fmt, AVPicture *dst,
PixelFormat dst_pix_fmt, int width, int height)
{
unsigned char y, u,v;
char *rgb = dst->data[0];
unsigned char *yptr = src->data[0];
unsigned char *uptr = src->data[1];
unsigned char *vptr = src->data[2];
int i =0;
for (int py=0; py < height; py++)
{
for (int px =0; px < width; px++, i+= 3)
{
y = yptr[py*src->linesize[0]+px];
u = uptr[py/2*src->linesize[1]+px/2];
v = vptr[py/2*src->linesize[2]+px/2];
rgb[ i ] = y + 1.402* (v-128);
rgb[ i + 1 ] = y - 0.34414* (u-128) - 0.71414 *(v-128);
rgb[ i + 2] = y + 1.772 *(u-128);
}
}
}
如果相关问题的同仁可以联系我,共同研究!