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的時候會正常顯示,設置其他寬高顯示就會有問題。

如果大家在顯示視頻的過程中遇到了這種顯示爲條紋狀畫面的問題,可以從輸出圖像的寬高和輸出圖像的格式這兩個方面去排查。具體爲什麼會這樣,我還在查資料,希望有高手可以指教一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章