解决方案 »

  1.   

    memcpy(Image->imageData, buffer这块的拷贝数量,换成逐行拷贝试试,图像的每一行字节长度必须是4的倍数,不是的话需要在最后补齐,你计算拷贝数量的地方可能会出错
    如果是颜色不一样的话,可以看看是不是解码的数据率中RGB三个颜色分量的位置是不是不一致,opencv里面的顺序的GBR,不清楚FFmpeg里面解码出来是什么顺序
      

  2.   


    pFrame->data[0] += pFrame->linesize[0]*(pCodecCtx->height-1);
    pFrame->linesize[0] *= -1;
    pFrame->data[1] += pFrame->linesize[1]*(pCodecCtx->height/2-1);
    pFrame->linesize[1] *= -1;
    pFrame->data[2] += pFrame->linesize[2]*(pCodecCtx->height/2-1);
    pFrame->linesize[2] *= -1;
     sws_scale(img_convert_ctx,
                            pFrame->data, pFrame->linesize, 0, pCodecCtx->height,
                            pFrameRGB->data, pFrameRGB->linesize);
      

  3.   

    上面是颜色图像倒置说错了
    加这个试试
    static uchar *p = NULL; p = pFrame->data[1];
    pFrame->data[1] = pFrame->data[2];
    pFrame->data[2] = p;
      sws_scale(img_convert_ctx,
                            pFrame->data, pFrame->linesize, 0, pCodecCtx->height,
                            pFrameRGB->data, pFrameRGB->linesize);