各位专家,
这是我的链:IssCaptrue -> Dup -> Vpe -> Encode -> Null
(顺便说一下,dup另一条link是display的链接,
不过目前的问题是encode,主要以encode这边的问题来提问)
情况是我录制了30秒(两个镜头)
并且其中一个镜头录制30秒是正常的(ChId[0])
- - - - - - - - - - - - - - - - - - - - - - -问题 - - - - - - - - - - - - - - - - - - - - -
但另一个镜头只记录了 22 秒 (ChId[1])
影片的内容是录制实际的时钟的秒针从0到30, 但是从这个22秒的影片中来看,确实记录到秒针从0到30
但是CHid[1]的镜头录的影的秒针像是在加速一样
这是我的encdoe H264参数设置
case CameraViewMgr_RecordFormat_H264: /* H264 */
pLinkChPrm->format = SYSTEM_IVIDEO_H264BP; //SYSTEM_IVIDEO_H264HP;
pLinkChPrm->profile = 100;
pLinkChPrm->dataLayout = VENC_FIELD_SEPARATED;
pLinkChPrm->fieldMergeEncodeEnable = FALSE;
pLinkChPrm->enableAnalyticinfo = 0;
pLinkChPrm->enableWaterMarking = 0;
pLinkChPrm->maxBitRate = -1;
pLinkChPrm->encodingPreset = SYSTEM_XDM_MED_SPEED_HIGH_QUALITY;
/* Set encodingPreset to SYSTEM_XDM_USER_DEFINED if SEI/meta data needs to be enabled */
/* pLinkChPrm->encodingPreset = SYSTEM_XDM_USER_DEFINED; */
pLinkChPrm->rateControlPreset = SYSTEM_IVIDEO_LOW_DELAY;
pLinkChPrm->enableHighSpeed = FALSE;
pLinkChPrm->enableSVCExtensionFlag = FALSE;
pLinkChPrm->numTemporalLayer = 0;
pLinkChPrm->overrideInputScanFormat= 0;
pLinkChPrm->fieldPicEncode = 0;:
pLinkChPrm->IDRFrameInterval = 1;
pLinkDynPrm->intraFrameInterval = 30;
pLinkDynPrm->targetBitRate = 10*1000*1000;
pLinkDynPrm->interFrameInterval = 1;
pLinkDynPrm->mvAccuracy = SYSTEM_IVIDENC2_MOTIONVECTOR_QUARTERPEL;
pLinkDynPrm->inputFrameRate = 30;
pLinkDynPrm->rcAlg = 1; //1 means cbr
pLinkDynPrm->qpMin = 0;
pLinkDynPrm->qpMax = 51;
pLinkDynPrm->qpInit = 25;
pLinkDynPrm->vbrDuration = 8;
pLinkDynPrm->vbrSensitivity = 0;
/* Set maxPicSizeRatioI to 1 for IDR or I-Frame only mode */
pLinkDynPrm->maxPicSizeRatioI = 640;
另外这是从NullLink_drvProcessFrames (输出h264的处理) 的Log印出的讯息
------------------------------------------------Log nullLink_tsk.c Func: NullLink_drvProcessFrames ----------------------------------------------------------
Id:[1] pkt->pts:0 pkt->dts:0 pkt->duration : 512
Id:[0] pkt->pts:0 pkt->dts:0 pkt->duration : 512
Id:[1] pkt->pts:512 pkt->dts:512 pkt->duration : 512
Id:[0] pkt->pts:512 pkt->dts:512 pkt->duration : 512
Id:[1] pkt->pts:1024 pkt->dts:1024 pkt->duration : 512
Id:[0] pkt->pts:1024 pkt->dts:1024 pkt->duration : 512
Id:[0] pkt->pts:1536 pkt->dts:1536 pkt->duration : 512
Id:[0] pkt->pts:2048 pkt->dts:2048 pkt->duration : 512
Id:[0] pkt->pts:2560 pkt->dts:2560 pkt->duration : 512
Id:[1] pkt->pts:1536 pkt->dts:1536 pkt->duration : 512
Id:[0] pkt->pts:3072 pkt->dts:3072 pkt->duration : 512
Id:[1] pkt->pts:2048 pkt->dts:2048 pkt->duration : 512
Id:[0] pkt->pts:3584 pkt->dts:3584 pkt->duration : 512
Id:[1] pkt->pts:2560 pkt->dts:2560 pkt->duration : 512
Id:[0] pkt->pts:4096 pkt->dts:4096 pkt->duration : 512
Id:[1] pkt->pts:3072 pkt->dts:3072 pkt->duration : 512
Id:[0] pkt->pts:4608 pkt->dts:4608 pkt->duration : 512
Id:[0] pkt->pts:5120 pkt->dts:5120 pkt->duration : 512
Id:[0] pkt->pts:5632 pkt->dts:5632 pkt->duration : 512
Id:[1] pkt->pts:3584 pkt->dts:3584 pkt->duration : 512
Id:[0] pkt->pts:6144 pkt->dts:6144 pkt->duration : 512
Id:[0] pkt->pts:6656 pkt->dts:6656 pkt->duration : 512
Id:[1] pkt->pts:4096 pkt->dts:4096 pkt->duration : 512
Id:[0] pkt->pts:7168 pkt->dts:7168 pkt->duration : 512
Id:[0] pkt->pts:7680 pkt->dts:7680 pkt->duration : 512
Id:[0] pkt->pts:8192 pkt->dts:8192 pkt->duration : 512
可以看出Channel[0]的镜头比Channel[1]镜头处理的多
------------------------------------------------------------------------------------------------------------------------------------------------
原本的预期是两个镜头录到的影片都是30fps
但是看起来只有CHID[0]的镜头有30fps
另外CHID[1]的镜头经过计算大概只有16.2fps
所以当以30 fps来解码播放影片时,才造成CHID[1]录制的影片有加速的感觉
所以问题就来了,因为镜头输入应该都是设定一样的参数,为什么两个镜头录到的影片fps会有差异呢?
要如何改善这个问题,让两个镜头都能encode 30fps的h264的影片档
再麻烦各位专家解惑以及帮忙了
非常谢谢 !!!