大家好:
我在用dm8168的 dvrrdk 0.4 进行h264视频压缩时,视频源是一帧灰度图(4096 * 1568 的yuv文件,其中Y是0到255递增的,U, V 都是 0x80)
进行10, 20, 50 倍的压缩 ,共编码500帧, 编码的结果是 10,20倍压缩的文件大小是1836KB 50倍压缩的文件大小是 1886KB(我的压缩配置测试过正常的视频是没有问题的) 为什么50倍压缩文件还要大些?
我的配置参数如下:
#define ENCODE_BITE_RATE_10 (1000 * 1000 * 130) /* 10倍压缩对应的比特率 */
#define ENCODE_BITE_RATE_20 (1000 * 1000 * 92) /* 20倍压缩对应的比特率 */
#define ENCODE_BITE_RATE_50 (1000 * 1000 * 25) /* 50倍压缩对应的比特率 */
chCreatePrm = &(encPrm.chCreateParams[0]);
chCreatePrm->format = IVIDEO_H264HP;
chCreatePrm->profile = IH264_HIGH_PROFILE; /* 使用高配置文件 */
chCreatePrm->dataLayout = IVIDEO_FIELD_SEPARATED; /* ? */
chCreatePrm->fieldMergeEncodeEnable = FALSE; /* 区域合并编码关闭 */
chCreatePrm->maxBitRate = -1; /* 没限制 */
chCreatePrm->enableHighSpeed = FALSE;
chCreatePrm->rateControlPreset = IVIDEO_STORAGE; /* 速度管理预测 */
chCreatePrm->encodingPreset = XDM_USER_DEFINED; /* 编码预测 高质量,高速, */
chCreatePrm->enableAnalyticinfo = FALSE; /* 向视频流添加MV数据 */
chCreatePrm->enableWaterMarking = FALSE; /* 给视频增加水印 */
chCreatePrm->defaultDynamicParams.intraFrameInterval = 1;
chCreatePrm->defaultDynamicParams.inputFrameRate = 20;
chCreatePrm->defaultDynamicParams.targetFrameRate = 20;
chCreatePrm->defaultDynamicParams.targetBitRate = videoObj->bitRate;
chCreatePrm->defaultDynamicParams.interFrameInterval = 1;
chCreatePrm->defaultDynamicParams.mvAccuracy = IVIDENC2_MOTIONVECTOR_PIXEL;
chCreatePrm->defaultDynamicParams.rcAlg = 0 ;
chCreatePrm->defaultDynamicParams.qpMin = 5;
chCreatePrm->defaultDynamicParams.qpMax = 35;
chCreatePrm->defaultDynamicParams.qpInit = -1;
chCreatePrm->defaultDynamicParams.vbrDuration = 8;
chCreatePrm->defaultDynamicParams.vbrSensitivity = 0;
encPrm.inQueParams.prevLinkId = IPCFrameInVideoID;
encPrm.inQueParams.prevLinkQueId= 0;
encPrm.outQueParams.nextLink = IPCBitOutVideoID;
encPrm.numBufPerCh[0] = 6;
encPrm.numBufPerCh[1] = 6;
encPrm.numBufPerCh[2] = 6;
encPrm.numBufPerCh[3] = 6;