各位好!我使用的开发环境是DM8168+DVRRDK_04.00.00.03的环境。现在遇到的问题是:
H264编码得到的数据+aac声音数据后publish到rtmp server后,用flash player播放,在每个IDR帧的时候画面都会停顿一下(flash player会提示丢掉了几帧)。保存成mp4后播放正常。
我的参数设置如下:
pChPrm->enableAnalyticinfo = 0;
pChPrm->enableWaterMarking = 0;
pChPrm->enableSVCExtensionFlag = VENC_IH264_SVC_EXTENSION_FLAG_DISABLE;
pChPrm->encodingPreset = VENC_XDM_USER_DEFINED;
pChPrm->maxBitRate = -1;
pChPrm->rcType = VENC_RATE_CTRL_CBR;
pChPrm->numTemporalLayer = VENC_TEMPORAL_LAYERS_1;
pDynPrm->frameRate = 30; // NOT USED
pDynPrm->targetBitRate = 2000 * 1000;
pDynPrm->intraFrameInterval = 30;
pDynPrm->inputFrameRate = pDynPrm->frameRate;
pDynPrm->rcAlg = pChPrm->rcType; // MUST be same as pChPrm->rcType
pDynPrm->qpMin = 10;
pDynPrm->qpMax = 40;
pDynPrm->qpInit = -1; // SHOULD BE SET to -1 ALWAYS
pDynPrm->vbrDuration = 8;
pDynPrm->vbrSensitivity = 0;
非常感谢!!!
Chris Meng:
lei wang18
用flash player播放,在每个IDR帧的时候画面都会停顿一下(flash player会提示丢掉了几帧)。
lei wang18:
回复 Chris Meng:
不会。我有另外的PC下使用IntelMediaSdk编码的相同配置的H264流,使用相同的播放器和rtmpserver,播放非常正常。另外,我把8168编码时的sps调整成和MediaSDK一样也未能解决问题。(FlashPlayer播放时提示丢掉的帧数是固定的)。同时我注意到PPS中的pic_order_present_flag设置为1,MediaSDK里的这个标志是0.另外还尝试过 encodingPreset = VENC_XDM_HIGH_SPEED模式,但这种模式的I帧不是IDR,不能直播,定时foreIDR的话问题依旧。
论坛里面有一个13年的帖子,里面说的应该也是这个问题。我现在DVRRDK的版本改成04.01.00.02。在另一个版本03.00.00.00问题一样。
Chris Meng:
回复 lei wang18:
你好,
请问你的qpI,qpP设置的是是多少?是-1么?如果是,能否不要设置为-1,而是其他确定的值,看看?
lei wang18:
回复 Chris Meng:
你好,感谢回复。
原始的qpI和qpP确实是-1,但调整成确定的值后(分别测试过20-20,10-30),问题依旧存在。
Chris Meng:
回复 lei wang18:
你好,
pic_order_present_flag=1这个在IVAHD的编码器里面是写死不能改的。
你能否再尝试设置 IH264ENC_Params::picOrderCountType = IH264_POC_TYPE_2 (2),看是否有改善?
lei wang18:
回复 Chris Meng:
你好,
这个已经修改过(encLink_h264.c),代码如下:
staticParams->picOrderCountType = 2;
staticParams->rateControlParams.allFrameSkip = 0;
staticParams->vuiCodingParams.aspectRatioInfoPresentFlag = 1;
staticParams->vuiCodingParams.aspectRatioIdc = 1;
staticParams->log2MaxFNumMinus4 = 4;
staticParams->rateControlParams.qpI = 20;
staticParams->rateControlParams.qpP = 30;
SPS相关的几个修改参数的组合分别测试过,基本没有改善。
Flash播放时,每遇到一个IDR帧,播放器会提示丢掉固定帧数,图像会停顿一下。。。
lei wang18:
回复 Chris Meng:
你好,
这个已经修改过(encLink_h264.c),代码如下:
staticParams->picOrderCountType = 2;
staticParams->rateControlParams.allFrameSkip = 0;
staticParams->vuiCodingParams.aspectRatioInfoPresentFlag = 1;
staticParams->vuiCodingParams.aspectRatioIdc = 1;
staticParams->log2MaxFNumMinus4 = 4;
staticParams->rateControlParams.qpI = 20;
staticParams->rateControlParams.qpP = 30;
SPS相关的几个修改参数的组合分别测试过,基本没有改善。
Flash播放时,每遇到一个IDR帧,播放器会提示丢掉固定帧数,图像会停顿一下。。。
(重复一次,从邮件直接连过来的,忘记使用“回复”)
Chris Meng:
回复 lei wang18:
你好,
能否提供你使用的flash的版本?提供一段flash可以正常播放的码流和一段用DM8168编码的码流(flash不能正常解码有掉帧)。
lei wang18:
回复 Chris Meng:
你好,
IE下flash版本11.3.300.270,chrome下flash版本15.0.0.236
码流使用附件提供?(40M左右)
Chris Meng:
回复 lei wang18:
你好,
视频收到了。我内部问问看。