HISI VENC 实际输出帧率控制
https://blog.csdn.net/spy_007_/article/details/83688287
平台:HI3516EV100
SDK : Hi3516CV300_SDK_V1.0.2.0
系统 : LiteOS
海思MPP文档里写的我就不多说了,不知道是我理解有问题还是什么,反正很多次都不能准确的控制实际的编码(VENC)输出帧率,就是 cat /proc/venc 能看到的通道输出帧率,今天特地花时间来研究下,发下有如下规律:
- 海思的帧率控制无非就是如下这些地方涉及到:
- ISP -----------------------------------------> HI_MPI_ISP_SetPubAttr
- VI -----------------------------------------> HI_MPI_VI_SetChnAttr
- VPSS -----------------------------------------> HI_MPI_VPSS_SetChnAttr
- 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;
自测按照该方法去设置能准确的控制实际编码输出帧率,如有问题,希望各位不吝指正,万分感谢。
结果截图:
cat /proc/rc

cat /proc/venc

HISI VENC 实际输出帧率控制的更多相关文章
- .NET Core下的日志(3):如何将日志消息输出到控制台上
当我们利用LoggerFactory创建一个Logger对象并利用它来实现日志记录,这个过程会产生一个日志消息,日志消息的流向取决于注册到LoggerFactory之上的LoggerProvider. ...
- PHP flush sleep 输出缓存控制详解
1 2 3 4 5 6 ob_start,flush,ob_flush for($i=0;$i<</SPAN>10;$i++) { echo $i.''; flush(); slee ...
- PHP输出缓冲控制
说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会 向磁盘写入的,而是写到buffer中,当buffer写 ...
- PHP输出缓冲控制- Output Control 函数应用详解
说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffer写满 ...
- C++ 数据类型及相关问题 及输出精度控制
1.有哪些数据类型? 2.数据类型在不同的编译器会有不同的位宽,如何得知? 使用如下命令: cout<<sizeof(int)<<endl; cout<<sizeo ...
- PHP输出缓冲控制 - Output Control 函 应用详解
简介 说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffe ...
- PHP中的输出缓冲控制
在 PHP 中,我们直接进行 echo . 或者 print_r 的时候,输出的内容就会直接打印出来.但是,在某些情况下,我们并不想直接打印,这个时候就可以使用输出缓冲控制来进行输出打印的控制.当然, ...
- HTML输出 一 控制列背景颜色
#将需要读取的域名和端口列表保存在名为ports01.txt.ports02的文件中,文件与脚本位于相同目录下$CurrentPath = $MyInvocation.MyCommand.Path.s ...
- PHP 输出缓冲控制(Output Control) 学习
php 缓冲简介 其实我对php ob 系列印象还是很模糊,具体怎么玩的,还不是很了解,平时curd,确实对这些内容没有深入.作为phper 甚是惭愧.网上搜了一通,互相copy,代码运行不能出现作者 ...
随机推荐
- L1-035 情人节 (15 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805097018540032 以上是朋友圈中一奇葩贴:“2月14 ...
- [转载]一个高效简洁的Aseprite to Unity导入工具
原文链接 https://zhuanlan.zhihu.com/p/28644268 期待原作者上传至AssetStore. 今天,我的第一个 Unity 插件 MetaSprite 正式发布了它的 ...
- html横向滑动案例
<style type="text/css"> .outer-container,.content {width: 630px; height: 185px;paddi ...
- Jsoup获取全国地区数据(省市县镇村)
最近手头在做一些东西,需要一个全国各地的地域数据,从省市区到县镇乡街道的.各种度娘,各种谷歌,都没找到一个完整的数据.最后功夫不负有心人,总算找到一份相对来说比较完整的数据,但是这里的数据也只是精确到 ...
- goroutine和channel
近期在学习golang的goroutine和channel时候有一些疑惑: 带缓冲的channel和不带缓冲的channel有什么区别? goroutine和主进程的有哪些影响和关系? 多个gorou ...
- React 组件框架
- Python成长之路【第二篇】Python基础之数据类型
阅读目录 简介 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字(整形,长整形,浮点型 ...
- 运维route语法
Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或 ...
- Openflow协议详解
http://www.h3c.com/cn/d_201811/1131080_30005_0.htm# 1 OpenFlow背景 转发和控制分离是SDN网络的本质特点之一 .在SDN网络架构中,控制平 ...
- ajax如何渲染数据
染数据的方法 1).字符串拼接, 最常用的方法 优点:只进行一次dom回流 缺点:原有dom的事件都会丢失 原因:就在于innerHTML这个属性,这个属性是返回或设置dom中的内容,以字符串形式返 ...