TI中文支持网
TI专业的中文技术问题搜集分享网站

DM8168 DVRRDK4.0.0.3 H264编码 rtmp播放停顿问题

各位好!我使用的开发环境是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:

你好,

视频收到了。我内部问问看。

赞(0)
未经允许不得转载:TI中文支持网 » DM8168 DVRRDK4.0.0.3 H264编码 rtmp播放停顿问题
分享到: 更多 (0)