在基於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:情境變換檢測,當檢測到情境發生變換時,會插入I幀
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