我在使用Cisco提供的预编译OpenH264二进制文件时遇到帧被丢弃的问题。但是,如果我自己在不修改源代码的情况下编译库,我就不会有这个问题。
我需要使用思科的预编译二进制文件,因为我将其用于商业应用程序,并且不能使用开源BSD许可证。我使用的是ISVCEncoder的InitializeExt()调用,参数bEnableFrameSkip设置为False。
//My full configuration is as follows:
encoder_->GetDefaultParams (¶m);
param.iUsageType = SCREEN_CONTENT_REAL_TIME;
param.iRCMode = RC_BITRATE_MODE;
param.fMaxFrameRate = framerate;
param.iPicWidth = width;
param.iPicHeight = height;
param.iTargetBitrate = bitrate;
param.bEnableDenoise = 0;
param.bEnableFrameSkip = 0;
param.iSpatialLayerNum = 1;
SliceModeEnum sliceMode = SM_SINGLE_SLICE;
其他人也遇到过类似的问题吗?有人知道为什么会发生这种事吗?
提前感谢
我们必须设置标志bEnableFrameSkip=false。
只需设置param.bEnableFrameSkip = false;
即可解决跳帧问题。如果要使用RC_BITRATE_MODE
,则必须设置param.bEnableFrameSkip = true;
,因为OpenH264
在帧跳过禁用模式下不支持RC_BITRATE_MODE
。