HISI VENC 实际输出帧率控制

6 篇文章 0 订阅
5 篇文章 1 订阅

平台:HI3516EV100

SDK : Hi3516CV300_SDK_V1.0.2.0

系统 : LiteOS

海思MPP文档里写的我就不多说了,不知道是我理解有问题还是什么,反正很多次都不能准确的控制实际的编码(VENC)输出帧率,就是  cat /proc/venc  能看到的通道输出帧率,今天特地花时间来研究下,发下有如下规律:

  • 海思的帧率控制无非就是如下这些地方涉及到:
  1. ISP  -----------------------------------------> HI_MPI_ISP_SetPubAttr
  2. VI  -----------------------------------------> HI_MPI_VI_SetChnAttr
  3. VPSS  -----------------------------------------> HI_MPI_VPSS_SetChnAttr
  4. VENC  -----------------------------------------> HI_MPI_VENC_SetChnAttr 主要修改RC(码率控制器)

    另外  :

         HI_MPI_VENC_CreateChn 创建通道也会设置帧率。

         HI_MPI_VENC_SetFrameRate 也能控制编码帧率

重点就在上边的4个步骤里边:

画了一张草图帮助理解

如上图: 

ISP处理为30帧/s   

VI处帧率不做控制(mpp文档推荐的,影响抓拍) ,其实应该就是ISP处的30帧/s

VPSS 设置src:30   dst:15 ,理解为VPSS接收到 ( VI ) 的帧,每src帧只处理dst帧

VENC 设置 src:15  dst : 15  , 理解为VENC 接收到 ( VPSS ) 的帧,每src帧只处理dst帧

这样理解就能清楚的多了,如此,比如要得到实际输出 12帧的帧率,只需要最后将VENC设置成src:15  dst : 12 就可以了。

 

 

相关接口参数设置:

 

 

  • HI_MPI_ISP_SetPubAttr

               stPubAttr.f32FrameRate = 30; 

  • HI_MPI_VI_SetChnAttr 此处不进行帧率控制:

              stChnAttr.s32SrcFrameRate = -1;

              stChnAttr.s32DstFrameRate = -1;

  • HI_MPI_VPSS_SetChnAttr;

              chnAttr.s32SrcFrameRate = 30;

              chnAttr.s32DstFrameRate = 15;

  • HI_MPI_VENC_SetChnAttr  主要修改RC(码率控制器)

             vencAtt0.stRcAttr.stAttrH264Vbr.fr32DstFrmRate = 15;

            vencAtt0.stRcAttr.stAttrH264Vbr.u32SrcFrmRate = 15;

 

 

自测按照该方法去设置能准确的控制实际编码输出帧率,

如果还发现帧率控制不准确,还可能是VI-VPSS的模式设置的离线模式,离线模式下会出现帧率控制不准的现象,或者是VPSS创建物理、扩展通道时设置了缓存深度导致的,

但在 VI-VPSS  在线 模式下基本是能准确控制输出帧率的。

结果截图:

cat /proc/rc

cat /proc/venc

 

-----------------------------20200724:

另外注意,夜视模式/白天模式切换时,VI,VENC的比值要位置不变,否则实际输出只能率将会产生误差:

25/15 ==(25/2)/(15/2)

 

 

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值