定时器_Qt定时器小坑

今天在做音视频合成功能,由于Qt的定时器精度问题,导致视频合成有问题。

  视频合成是采用FFmpeg实现的,将h264视频和aac视频合成到mp4容器中。音频写入到mp4容器验证过是正常的,但视频写入到mp4容器中,播放出来总是过快。查看了些资料,一般说是pts的问题,也按着官方文档去做,还是不行。

  使用ffprobe工具统计总帧数却意外发现与预计帧数不一致。10秒的视频设置每秒15帧,共150帧。实际视频只有120帧,就纳闷了输入15帧/秒最后视频合成达不到15帧/秒。

  最后定位到是QTimer的精度问题,视频的输入是通过定时器定时往队列里面拿的,比如设置20帧/秒,那么定时器就会每50ms触发一次。看了QTimer文档发现,该定时器的默认精度会有5%左右的误差。另外发现视频编解码与合成操作在主线程中负载较高,进一步放大定时器的误差。

定时器官方文档介绍:aac9ae57b078d9b7cc6d999869fda5a9.png

e59f60f6b9384e0a54215a93b1336934.png


有关更多QTimer的内容请看往期推文《Qt多种定时器》。

最后的解决方法是:

  1. 独立线程编解码合成;
  2. 设置QTimer定时器为高精度定时器(setTimerType(Qt::PreciseTimer))。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559227.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

形容人的内核是什么意思_识人核心是什么?

视其所以,观其所由,察其所安,人焉廋哉?人焉廋哉!这是《论语》中为政篇的一句,就是识人的核心所在。下面引用南怀瑾先生在《论语别裁》中的讲解:这是孔子观察人的道理。讲到观察人的道理&#xf…

php的Apa红灯_macos – 使用自制软件更新php和mysql后的apa...

好的,所以我找到了罪魁祸首.令人惊讶的是,在控制台或错误日志中没有显示任何错误消息,但我找到了一个帮助了我很多的网站.在该帖子中,作者Josh建议使用以下命令重新启动apache:sudo bash -x /usr/sbin / apachectl -k start此命令提供了一些错误信息,并克服了Apache…

全系统各类型工程水土保持方案编制实践技术

内容涵盖八大专题:点型项目、市政工程、线型工程、矿山工程、水利工程、取土场/弃渣场、补报项目、水土保持监测验收 课程一:点型水土保持方案编制方法及案例分析实践 课程二:市政工程水土保持方案编制方法及案例分析实践课程三:…

altium导出钻孔文件_[Altium Designer 学习]怎样输出Gerber文件和钻孔文件

为了资料保密和传输方便,交给PCB厂商打样的资料一般以Gerber和钻孔文件为主,换句话说,只要有前面说的两种文件,就能制作出你想要的PCB了。一般来说,交给PCB厂商的Gerber有以下几层:GTO(Top Overlay&#xf…

apk提取加密素材_从apk包中提取unity资源

使用本方法来提取资源有个前提就是资源没有被加密,这个问题会在后面进行研究。而且这个方式目前是在Windows平台下使用的。以青蛙旅行这款游戏为例,先准备好其apk包,然后对其进行解压。这里有两种方式,一种是修改apk包后缀为zip然…

python oracle blob_如何用python在oracle中插入blob?

我正在尝试使用cx_oracle 6.3在oracle 12中插入许多blob(每个2到20 MB)。经过大量的搜索和实验,我得到了以下代码工作。我是python新手,想知道:这种方法有效吗?有更快的方法吗?#!/usr/local/bin/python3import ioimport osimport cx_Oraclepdf open(hello.pdf, rb)mem_file …

测量怎么显示坐标_全站仪坐标放样究竟如何操作?

全站仪是一种高技术测量仪器,集合了电,机,光为一体,它的出现让测量更为精准化,操作也更为简单便捷,也正是因为这些优势,让全站仪在工程测量中得到了非常广泛的应用。而全站仪坐标放样就是根据已…

c语言如何输入矩阵_如何在 COMSOL 软件中调试外部材料

问题描述我实现了一种用于“结构力学”的外部材料,但我的模型无法求解。解决方法外部材料一般通过 C 语言编码,然后被编译到共享库中,供 COMSOL Multiphysics 在运行时使用。如果您在编译外部材料代码时遇到问题,请参阅 COMSOL Mu…

lwip网络通信socket_lwIP在Socket模式下接口:BSD Socket API

http://home.eeworld.com.cn/my/space-uid-162102-blogid-52270.html2011原文:关于BSD Socket API在网上找到的两个网站,是关于BSD Sockets API的,这是与lwIP在Socket模式下兼容的。里面对API函数做了较为详细的介绍,先记下来&…

idal 创建springboot 项目_SpringBoot教程:Maven方式创建SpringBoot项目

一.Maven方式创建Spring Boot项目1.配置Maven环境在以maven方式创建Spring Boot项目之前,请先确保自己的Maven并配置好环境变量,并且在ideal中关联好maven环境。2.创建一个新的maven项目3.设置项目坐标信息到此为止,就已经成功的…

mysql xa_Mysql对XA的支持

mysql8.0文档:https://dev.mysql.com/doc/refman/8.0/en/xa-statements.html。13.3.8.1 XA Transaction SQL Syntax章节讲述了Mysql对于XA事务的语法。XA {START|BEGIN} xid [JOIN|RESUME] XA END xid [SUSPEND [FOR MIGRATE]] XA PREPARE xid XA COMMIT xid [ONE P…

mysql创建新的表_Mysql 创建表

Mysql 创建表1.首先打开终端输入如下命令:/usr/local/MySQL/bin/mysql -u root -p其中root为用户名。2.这时会出现如下命令:Enter password:此时如果你没有改密码,直接敲回车。否则,输入你的密码。这样就可以访问你的数据库服务器…

mysql gfs2_Mysql_HA+IP_SAN+Clvmd+GFS2

Mysql_HAIP_SANClvmdGFS2GFS:全局文件系统,支持DLM锁管理,支持并发写,Centos6不超过16个节点适用于HA集群使用的共享存储适用于LB集群RealServer使用的共享存储mysql高可用集群架构设计1、节点主机系统:Centos6.52、高…

mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题

问题复盘本次复盘会用一个很简单的订单表作为示例。数据准备订单表建表语句如下(这里偷懒了,使用了自增ID,实际开发中不建议使用自增ID作为订单ID)CREATE TABLE order (id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘订单ID‘,amount decimal(10,2) NOT…

mysql 视图 过程 函数_MySQL视图,函数,触发器,存储过程

1. 视图视图是一个虚拟表,它的本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。使用视图我们可以把查询过程中的临时表摘出来,用视图去实现&…

ubuntu安装mysql5.7.17_ubuntu 16.04安装mysql-server_5.7.17

在MySQL官网上下载最新版的Ubuntu Linux专用的MySQL。我这里下载的是:mysql-server_5.7.17-1ubuntu16.04_amd64.deb-bundle.tar也可从以下mirrors下载:解压文件 命令为:rootubuntu:/# tar -zxvf mysql-server_5.7.17-1ubuntu16.04_amd64.deb-…

socket抓包_64、抓包分析tcp与udp

从前面的两个案例,我们了解到了如何通过原生socket函数分别创建tcp和udp服务,以及通过相应的客户端进行连接测试。在本文中,我们将继续深入地去了解tcp和udp的差别,和思考它们两者如何应该多个客户端请求1、抓包分析这里采用tcpdu…

c#水晶报表连接mysql,如何将数据库绑定到水晶报表?

i have C# program, i have DataSet that i want to bind to crystal report.how to do it ?解决方案Create a Typed DataSet from the "Add New Item > DataSet and give the dataseta useful name.In Server Explorer, drag a view with the fields you want in the…

fw313r手机登录_迅捷(FAST)fw313r路由器手机设置教程

本文中,鸿哥主要给大家介绍,迅捷(FAST)fw313r路由器用手机设置的方法。一台新买回来的迅捷(FAST)fw313r路由器,要用手机来设置它连接Internet上网,需要以下几个步骤:1、正确连接FW313R路由器2、手机连接FW313R的信号3、…

mysql 5.6.21不能选择安装路径_mysql5.6.21服务器安装图解(选择安装和数据目录)

mysql安装图解(服务器上安装mysql,只安装mysql服务)1.3 mysql安装及配置版本:MySQL5.6.21 64位1.3.1 安装.net framework.exe 4.0注意:mysql5.6版本需要安装.net framwork.exe 4.0环境1.3.2 安装mysql数据库(1)打开安装程序后,…