大家好:
我在用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;
Chris Meng:
Qin Ruimin,
请尝试设置下面的静态和动态参数值为51看看。
rateControlParams -> qpMaxI : 51rateControlParams -> qpMaxP : 51
ruimin qin:
回复 Chris Meng:
你好!
谢谢你的回答, 不好意思, 其实我是想问这种现象是正常的还是不正常的? 如果是正常的那怎么解释这种现象?
还有我的这些压缩配置在对视频源比复杂时10,20 ,50 压缩的 文件大小和PSNR的测试结果都基本正常的
压缩比 文件大小 PSNR
10 338M 39
20 180M 35
50 60M 31
如果压缩的视频源比效简单(不是很复杂)时压缩出的文件和PSNR值如下
压缩比 文件大小 PSNR
10 260M 45.5
20 170M 44.9
50 100M 444.3
是不是视频越复杂 10, 20, 50 倍压缩的文件的差距越大, PSNR值差得越大?
这是不是正常的?
Chris Meng:
回复 ruimin qin:
Qin Ruimin,
压缩率,最终反映到编码的设置就是目标码率,如果采用VBR,设置Qpmax为51,qpmin为1,只有运动不是太剧烈,应该是可以达到设定的目标码率的。
PSNR是信噪比,其实是不能够完全反映图像质量的。
ruimin qin:
回复 Chris Meng:
Chris Meng,
我当前的项目是要对视频进行10, 20, 50 倍的视频压缩 ,视频是4096 * 1568 20帧的视频。
如果 设置
qpmax = 51
qpmin = 1,
intraFrameInterval = 20;
10倍压缩码率设置成 targetBitRate = 1000 * 1000 * 160, 结果是码率只有 80Mbps 码流上不去
还有我想问一下,我现在的配置参数对于视频源越简单编码后输出的码率就会越低, 是不是我的码率根本没控制了?
TI中文支持网
