恒定帧率30帧以上录制掉帧问题分析
一、背景
录制30帧以上游戏画面,输出恒定帧率60帧视频文件出现掉帧
二、分析
经测试,ffmpeg动态帧率转恒定帧率不会有问题,因此,可能可以把ffmpeg的插帧逻辑移植过来。
1、 ffmpeg补帧逻辑
获取解码后的pkt -----> 拿到pkt_duration和编码时间差计算出nb_frames -------->循环nb_frames次对当前帧重复编码
2、录制补帧逻辑
3、录制采集逻辑
start—>获取绝对时间—>gdi截图—>设置pts—>frame入队—>sleep()—>start
gid截图过程平均耗时为30ms一张图,第一张图片的截取时间比较长,需要200多ms。因此采集的速度根本达不到60帧
三、解决过程
1、移植ffmpeg补帧逻辑
录制的采集过程不同于ffmpeg解码,拿不到pkt_duration
,因此不能移植ffmpeg的插帧过程
2、移植ffmpeg原生的录制demo
命令行:
-f gdigrab -t 10 -framerate 60 -i desktop -f dshow -i audio="<audiodevicename>" -b:v 3M -pixel_format yuv420p -vcodec libx264 -s 1920x1080 -y test.mp4
经测试,60录制的效果更差,放弃
3、从采集入手
在采集到的每两帧中间插入一帧,可以保证采集的速率大概在每秒60帧左右。但是由于编码速度只有每秒30帧,还是很容易出现音画不同步,进而引发掉帧。由于采集帧队列始终有数据供编码使用,因此单纯提升采集速率,意义不是很大
4、从编码入手
测试ffmpeg原生demo,单帧编码时间平均只有10ms,而且,采集帧队列始终有数据,因此从编码入手或许能解决该问题。命令行如下:
-i "vfr.mp4" -vsync cfr -r 60 o.mp4 -y
于是有以下方法:
a.强制写packet,即把上一帧编码后的packet原封不动写入文件,但是ffmpeg不支持这样做,会导致写入的packet最终合成为了一帧
b.设置preset和tune,设置到最快编码速度时,差不多10ms编码一帧,可以达到恒定60帧的要求,但是音频pts没有设置好,仍然会有点轻微掉帧。最后,在该方法下静音录制60帧,得到了比较好的效果
四、结论
从提高编码速度入手,即可解决掉帧问题
恒定帧率30帧以上录制掉帧问题分析相关推荐
- android10系统打王者掉帧,再也不怕掉帧卡顿 教你如何自己优化《王者荣耀》流畅度 - 非凡软件站...
最近有许多玩家给小编说,王者荣耀更新到某个版本后,游戏出现了卡顿掉帧情况,这其实是游戏自己"优化"所导致.对于不同机型的手机,,<王者荣耀>会使用不同的图形API.不同 ...
- Android卡顿掉帧问题分析之工具篇
Android卡顿掉帧问题分析之原理篇 Android卡顿掉帧问题分析之工具篇 Android卡顿掉帧问题分析之实战篇 Android卡顿掉帧问题分析之原理篇 公众号:Android技术之家Andro ...
- Camera 录制视频 掉帧、退帧
录制出来的视频帧率有问题 30帧录制出来的不够,出现丢帧. 退帧的问题 1. 录制出来的掉帧 .预览不容易看出 (预览看不出来,因为预览绘制实际是 来什么我绘制什么,但是编码器不一样) 1.1 视频模 ...
- ov5640帧率配置_玩《和平精英》为什么要开高帧数?90帧的游戏射速你体验过吗?...
玩手游特别是玩<和平精英>.<cf手游>.<使命召唤>之类的FPS射击游戏,不同配置的手机游戏体验是完全不一样的.除了画面方面的差别,最主要是最高帧率严重影响游戏射 ...
- 深入分析Android“卡顿掉帧”问题
前言 全球手机市场中,安卓和iOS一直占着主流市场,iPhone手机给人的感觉就是流畅,而安卓手机却一直是卡顿的代名词 其实,安卓机刚上手时还是速度飞快的,并且基于它开放性的原则,受到多数用户的喜爱, ...
- OCam 录制,可变帧率、码率及恒定帧率、码率详解
一.OCam 录制使用,编码器设置 1.选择好录制区域,点击录制即可录制 2.如需更改编码设置,点击编码. 选择H.264编码格式或者其他格式 3.如需详细设置 点击菜单-选项 在录制界面设置参数,视 ...
- 电脑录屏卡顿掉帧是什么原因 电脑录屏卡顿掉帧怎么解决
很多人在用电脑录屏时会遇到卡顿或掉帧的情况,这些问题会严重影响录制视频的效果,观看体验变差.原视频画面没有问题,但是为什么录制时会出现这样的问题呢?今天就来探讨一下电脑录屏卡顿掉帧是什么原因,电脑录屏 ...
- openpnp - camera - FPS掉帧的解决思路
文章目录 openpnp - camera - FPS掉帧的解决思路 概述 笔记 官方测速软件的下载和安装 先将参数按照openpnp的提示, 设置成默认值 将参数和官方测速软件不同的值, 改成官方测 ...
- 百人项目组unity2d游戏手机端发烫帧率低优化从10帧优化到60帧
项目组排查及优化: 1.http://zh.esotericsoftware.com/forum/Skeleton-Unity-16481 此外,请务必在实际设备上测试 Release 版本的性能,因 ...
最新文章
- web在线阅读日志文件,response.getOutputStream().write中文乱码原因
- Linux System Programming -- Appendix
- UVA11462年龄排序
- dgi数据治理_荐书 | 5G时代组织急需数据体检
- STARTUPINFO结构
- Ref and Out
- OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()
- 贪心法——部分背包问题
- 吴恩达深度学习神经网络基础编程作业Building your Deep Neural Network Step by Step
- HTML编程之利用jquery制作长图动画的方法
- python动态爱心代码_python 动态绘制爱心的示例
- Windows修改远程端口号
- 北京大学生物信息学学习(3动态规划进行2序列比对的原理 )
- 黑马程序员 HTML基础
- k8s1.18-kubeadm安装手册
- 上网本的最佳拍档——极通EWEBS
- java dagger2_Dagger2用法整理
- CPU 是怎么认识代码的?
- 利用jdk使用WebService
- 陆奇最新演讲高清PPT下载;AI 绘画20+工具体验汇总;我愿称MOSS为全球开源界最强;思否AIGC黑客马拉松北京站 | ShowMeAI日报