小编Sam*_*usu的帖子

sws_scale YUV - > RGB失真图像

我想将YUV420P图像(从H.264流中接收)转换为RGB,同时也调整大小,使用sws_scale.
原始图像的大小是480 × 800.只需转换相同的尺寸即可.
但是当我尝试更改尺寸时,我得到一个扭曲的图像,具有以下模式:

  • 改变为481 × 800将产生扭曲的B&W图像,看起来像是在中间切割
  • 482 × 800 将更加扭曲
  • 483 × 800 是扭曲但颜色
  • 484 × 800 没问题(缩放正确).

现在这个模式如下 - 如果除以4之间的差异,缩放将只能正常工作.

这是我解码和转换图像的方式的示例代码.所有方法都显示"成功".

int srcX = 480;
int srcY = 800;
int dstX = 481; // or 482, 483 etc
int dstY = 800;

AVFrame* avFrameYUV = avcodec_alloc_frame();
avpicture_fill((AVPicture *)avFrameYUV, decoded_yuv_frame, PIX_FMT_YUV420P, srcX , srcY);

AVFrame *avFrameRGB = avcodec_alloc_frame();

AVPacket avPacket;
av_init_packet(&avPacket);
avPacket.size = read; // size …
Run Code Online (Sandbox Code Playgroud)

c++ ffmpeg yuv libavcodec

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

ffmpeg ×1

libavcodec ×1

yuv ×1