openH264引數總結
在基於webrtc專案中用到了openH264編碼器,在實際應用中對編碼器的關鍵引數優化給出一些總結和建議:
1.iRCMode:位元速率控制模式:
0值對應quality mode(RC_QUALITY_MODE)更側重保證視訊質量,位元速率穩定性控制稍差;1值對應bitrate mode (RC_BITRATE_MODE),更側重保證位元速率的穩定性。 建議該引數設定為1:iRCMode =1;
2. iTemporalLayerNum:時域SVC的層數
openH264原始碼中在FillDefault (SEncParamExt& param)中設定的iTemporalLayerNum=1
但是建議該引數修改設定為2:iTemporalLayerNum=2;抗丟包能力強點
3. bEnableDenoise:降噪
這個屬於預處理過程,在編碼前會進行一個雙邊濾波降噪過程呼叫函式CWelsPreProcess::BilateralDenoising(),進行降噪處理,開啟該功能可以濾掉部分噪聲,但是對編碼質量也會有些失真,具體的編碼效能效果引數還未測試。
建議pc端可以開,移動端可以關
4. bEnableBackgroundDetection:背景檢測,主要用於VaaCalculation和CalculateBGD,用於BGD control,統計分析影象複雜度
bEnableSceneChangeDetect
bEnableAdaptiveQuant:自適應質量控制,
這三個引數對應的演算法都是預處理過程,在編碼前對視訊幀進行一些檢測,並利用檢測演算法得到的特徵調控編碼器的演算法,影響編碼效能。該演算法會增加複雜度,但是也會改善編碼效能,預設都是開啟,建議該引數值都修改設定為預設引數1:
建議bEnableBackgroundDetection=1; bEnableSceneChangeDetect = 1; bEnableAdaptiveQuant= 0;
5. iLoopFilterDisableIdc = 0 (offset(alpha/beta):
去塊濾波引數,iLoopFilterDisableIdc = 0表示開啟去塊濾波功能,主要濾除方塊效應。但是offset(alpha/beta)引數影響去塊濾波效果,不過影響也不明顯,預設一般設定為0,建議該引數可以修改設定為0。建議 offset(alpha/beta):-0,-0;
6. iMaxQp = 51;iMinQp = 0
該引數主要影響位元速率控制時調控的QP範圍,可支援的範圍是[0, 51],但是編碼QP值太小或者太大,都會對影象質量和位元速率帶來很大影響,為了防止極端影象質量情況的出現,一般設定為範圍為[16,40],因此可以將引數修改設定為:
iMaxQp = 40; iMinQp = 16