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,代码运行不能出现作者 ...
随机推荐
- c# word interop encrypt with password protect with password
public static void EncryptWithPassword(string unEncryptedWordPath, string password) { Word.Applicati ...
- Intellij idea 2018的注册方式
激活方式:License Server 第一步: 将地址 http://active.chinapyg.com/ 或者 http://idea.toocruel.net 任意一个复制到License ...
- java虚拟机——监控工具
本篇记录本人在学习JDK监控工具的一些笔记.JDK是1.8 JPS:查看java的进程命令 左边的数字是进程ID,对应的是进程的名称. jstat:查看运行时状态信息. 1.-class:监控类装载, ...
- 前端开发【第三篇: JavaScript基础】
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...
- mysql5.5.25 中文问题 my.ini没有及配置问题 修改默认编码方式
1.当你向mysql输入中文后,用select查询结果中文变成了问号,那你就往下看. 2.打开cmd,进入mysql,输入show variables like"%char%";可 ...
- Linux:Red Hat系统的安装
今天高兴,所以我写这一期,这一期写的是Red Hat系统的安装,这个开发系统也是红帽企业制作出来的,关于这款系统的相关资料就自行百度吧!话不多说,直接进入这期的内容吧! 安装Red Hat系统 系统下 ...
- soapui 测试 带hear 验证的写法
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web=& ...
- maven源码打包
1.打包时附加外部Jar包 <!--编译+外部 Jar打包--> <plugin> <artifactId>maven-co ...
- .net下的缓存技术
1.为什么要缓存?缓存能解决的问题 1.1稳定性 同一个应用中,对同一数据.逻辑功能和用户界面的多次请求时经常发生的.当用户基数很大时,如果每次请求都进行处理,消耗的资源是很大的浪费,也同时造成系统的 ...
- JSON的介绍与细节
一.关于JSON JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构 ...