Visual c++ 如何使用ffmpeg'将YUV422图像转换为JPEG;s图书馆?

Visual c++ 如何使用ffmpeg'将YUV422图像转换为JPEG;s图书馆?,visual-c++,ffmpeg,Visual C++,Ffmpeg,我正在尝试使用ffmpeg将YUV422图像(YUV422_8_UYVY,未签名,未打包,16bpp)转换为jpeg,我将遵循这一点 图像大小:2448x2050 原始YUV图像:无法上载,因为格式为YUV (原始图像通过ffmpeg命令提示符解码) 图片: 图像大小:2448x2050 重建图像: 因此,重建图像与原始图像不同 我的格式是UYVY,而支持的格式是AV\u PIX\u FMT\u YUVJ420P 那么UYVY输入图像的正确格式应该是什么 pCodecCtx->pix_fmt=A

我正在尝试使用ffmpeg将YUV422图像(YUV422_8_UYVY,未签名,未打包,16bpp)转换为jpeg,我将遵循这一点

图像大小:2448x2050 原始YUV图像:无法上载,因为格式为YUV

(原始图像通过ffmpeg命令提示符解码) 图片:

图像大小:2448x2050 重建图像:

因此,重建图像与原始图像不同

我的格式是UYVY,而支持的格式是AV\u PIX\u FMT\u YUVJ420P

那么UYVY输入图像的正确格式应该是什么

pCodecCtx->pix_fmt=AV_pix_fmt

如果我使用pCodecCtx->pix_fmt=AV_pix_fmt_UYVY422; 我收到一封欠费的信


[mjpeg@00c0b2a0]指定的像素格式uyvy422无效或不受支持

您说图像格式是“未打包的”(?),但同时您称它为
YUV422_8_UYVY
,这表明它是打包的(即不是平面的)。您得到的输出表明它已打包

FFmpeg的图像编码器通常不支持压缩输入。首先需要使其平面化。您有两个选择:

  • 将其转换为平面YUV-4:2:2(
    AV_PIX_FMT_YUVJ422P
    )并将其输入编码器
  • 将其转换为平面YUV-4:2:0(
    AV_PIX_FMT_YUVJ420P
    )并将其输入编码器
第一个将保留色度子采样(更好的质量),但第二个将有更好的下游支持(在其他应用中,解码图像)。要转换图像,请使用。转换后的输出图像可以输入FFmpeg编码器。

(AV_PIX_FMT_UYVY422)-->(AV_PIX_FMT_YUVJ422P)生成的输出文件仍然是0 kb,在转换过程中,我在控制台1上收到以下消息。使用了不推荐的像素格式,请确保未正确设置范围2。警告:数据未对齐!这可能导致速度损失av_image_alloc(RawPic->data,RawPic->linesize,in_width,in_height,src_pix_fmt,16);av_image_alloc(ScalePic->data,ScalePic->linesize,out_width,out_height,dst_pix_fmt,1);