FFmepg sws_scale()转换YUV为RGBA显示出现条纹状画面

最近在做tutk音视频相关的项目,在接收视频显示的时候出现了一个很奇怪的问题,就是转换后显示的图像画面是条纹状的,如下图:

我接收到的图像宽高是852*480,宽高比例约等于16/9,转换后的格式为RGBA,用sws_scale()转换代码如下:

vctx = sws_getCachedContext(vctx,
                            frame->width,
                            frame->height,
                            (AVPixelFormat) frame->format,
                             outWidth,
                             outHeight,
                             AV_PIX_FMT_RGBA,
                             SWS_FAST_BILINEAR,
                             0, 0, 0);
int h = sws_scale(vctx,
                  frame->data,
                  frame->linesize, 0,
                  frame->height,
                  data, lines);

其中,最开始的时候outWidth,outHeight都是设置为frame->width,frame->height的,但是这样出现的画面就是上图的条纹状画面,经过调试后发现,当我把输出宽高设置16/9并以4的倍数放大的时候,视频就会正常显示。

比如将输出宽高设置成640*360,1280*720,1920*1080的时候会正常显示,设置其他宽高显示就会有问题。

如果大家在显示视频的过程中遇到了这种显示为条纹状画面的问题,可以从输出图像的宽高和输出图像的格式这两个方面去排查。具体为什么会这样,我还在查资料,希望有高手可以指教一下。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值