OpenH264性能与编码数据大小(SEncParamExt) 我试图用opH264 C++库获得960X540视频每秒大约24帧。我尝试了SEncParamExt的不同参数,但我无法获得更好的编解码器性能,而不是更小的编码数据。我在电脑上的速度大约为16-20 fps

OpenH264性能与编码数据大小(SEncParamExt) 我试图用opH264 C++库获得960X540视频每秒大约24帧。我尝试了SEncParamExt的不同参数,但我无法获得更好的编解码器性能,而不是更小的编码数据。我在电脑上的速度大约为16-20 fps,c++,h.264,vp8,openh264,C++,H.264,Vp8,Openh264,这是我当前的配置 SEncParamExt param; m_pEncoder->GetDefaultParams(&param); param.fMaxFrameRate = 30; param.bEnableFrameSkip = false; param.iMinQp = 20; param.iMaxQp = 30; param.iPicWidth = m_frameFormat.GetWidth(); param.iPicHeight = m_frameFormat.G

这是我当前的配置

SEncParamExt param;
m_pEncoder->GetDefaultParams(&param);

param.fMaxFrameRate = 30;

param.bEnableFrameSkip = false;
param.iMinQp = 20;
param.iMaxQp = 30;
param.iPicWidth = m_frameFormat.GetWidth();
param.iPicHeight = m_frameFormat.GetHeight();
param.iTargetBitrate = 5000000;
param.bEnableDenoise = false;
param.iSpatialLayerNum = 1;
param.iTemporalLayerNum = 1;
param.bIsLosslessLink = false;
param.bEnableLongTermReference = true;
param.iEntropyCodingModeFlag = 0;
param.iMultipleThreadIdc = 2;
param.bUseLoadBalancing = true;

for (int i = 0; i < param.iSpatialLayerNum; i++)
{
    param.sSpatialLayers[i].iVideoWidth = m_frameFormat.GetWidth()  >> (param.iSpatialLayerNum - 1 - i);
    param.sSpatialLayers[i].iVideoHeight = m_frameFormat.GetHeight() >> (param.iSpatialLayerNum - 1 - i);
    param.sSpatialLayers[i].fFrameRate = 30;
    param.sSpatialLayers[i].iSpatialBitrate = param.iTargetBitrate;
    param.sSpatialLayers[i].sSliceArgument.uiSliceMode = SM_FIXEDSLCNUM_SLICE;
    param.sSpatialLayers[i].sSliceArgument.uiSliceNum = 2;
}

param.iTargetBitrate *= param.iSpatialLayerNum;
SEncParamExt参数;
m_pEncoder->GetDefaultParams(¶m);
param.fMaxFrameRate=30;
param.bEnableFrameSkip=false;
参数iMinQp=20;
参数iMaxQp=30;
param.iPicWidth=m_frameFormat.GetWidth();
param.iPicHeight=m_frameFormat.GetHeight();
param.iTargetBitrate=5000000;
参数bEnableDenoise=假;
参数ispatialayernum=1;
param.iTemporalLayerNum=1;
param.bIsLosslessLink=false;
param.bEnableLongTermReference=true;
param.iEntropyCodingModeFlag=0;
param.iMultipleThreadIdc=2;
param.buseloadbalancement=true;
对于(int i=0;i>(param.ispatialayernum-1-i);
param.sSpatialLayers[i].ivideohight=m_frameFormat.GetHeight()>>(param.iSpatialLayerNum-1-i);
参数sSpatialLayers[i].fFrameRate=30;
param.sSpatialLayers[i].iSpatialBitrate=param.iTargetBitrate;
参数.sSpatialLayers[i].sSliceArgument.uiSliceMode=SM\u FIXEDSLCNUM\u SLICE;
参数.sSpatialLayers[i].sSliceArgument.uiSliceNum=2;
}
param.iTargetBitrate*=param.ispatialayerNum;
我尝试了param.iComplexityModeparam.iRCMode的不同值,得到了必要的帧速率,但画质非常差。我还玩了量化级别,但没用

我也使用VP8编解码器。它很容易为同一视频每秒生成24帧。编码数据的大小更大(大约每秒500Kb,而OpenH264是每秒200Kb),但对我来说非常方便

我做错了什么?我应该如何提高OpenH264的性能