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,代码运行不能出现作者 ...
随机推荐
- ffmpeg奇数分辨率转码失败
偶然遇到将目的分辨率设置成奇数(例如:854x481)导致ffmpeg转码失败(错误:width not divisible by 2 (854x481)) 于是去查了一下原因:由于转码后的pix_f ...
- ionic3 对android包进行签名
在已经生成签名文件的前提下 对android包进行签名 如果还未生成签名文件 请参考链接 https://jingyan.baidu.com/article/642c9d34eaeeda644a46f ...
- JavaScript 之默认行为 DOM2级,事件委托机制
1. 事件默认行为及阻止方式 1.1 浏览器的默认行为 JavaScript事件本身所具有的属性,例如a标签的跳转,Submit按钮的提交,右键菜单,文本框的输入等. 1.2 ...
- 利用div+css实现九宫格,然后用js实现点击每个格子可以随机更改格子(div)的背景颜色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ViewBag赋值Html格式值
今天再给自己总结一下,关于ViewBag赋值Html格式值,但是在web页显示不正常; 例如,ViewBag.Content = "<p>你好,我现在测试一个东西.</p& ...
- re模块基本用法和字符集
import re # . 能够替代任意字符 r= re.findall("a..c","abbcsd") print(r) # ^ 找最前面的 r_1 = r ...
- C++入门程序作业1
将一个int A[]={ , , ,}定义的可能重复的数字去掉重复的元素. 了解向量,容器如何使用,size,地址的关系,理解unique erase函数的返回值是什么参数 结果:将1,1,1,2 ...
- iptables-save命令
[root@localhost ~]# iptables-save -t filter > iptables.bak [root@localhost ~]# cat iptables.bak # ...
- Python 锁 同步 互斥锁
import time from threading import Lock,Thread num = 100 def f1(loc): loc.acquire() global num tmp = ...
- select默认显示
select默认显示第一个option,但大部分需求都是显示一个请选择,点击后在显示option的内容. 就像上图一样 但如果正常写的话会是像下面这样显示 请选择也会显示在下拉款里面,这样就很不友好 ...