最近在做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的時候會正常顯示,設置其他寬高顯示就會有問題。
如果大家在顯示視頻的過程中遇到了這種顯示爲條紋狀畫面的問題,可以從輸出圖像的寬高和輸出圖像的格式這兩個方面去排查。具體爲什麼會這樣,我還在查資料,希望有高手可以指教一下。