一、背景

录制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帧以上录制掉帧问题分析相关推荐

  1. android10系统打王者掉帧,再也不怕掉帧卡顿 教你如何自己优化《王者荣耀》流畅度 - 非凡软件站...

    最近有许多玩家给小编说,王者荣耀更新到某个版本后,游戏出现了卡顿掉帧情况,这其实是游戏自己"优化"所导致.对于不同机型的手机,,<王者荣耀>会使用不同的图形API.不同 ...

  2. Android卡顿掉帧问题分析之工具篇

    Android卡顿掉帧问题分析之原理篇 Android卡顿掉帧问题分析之工具篇 Android卡顿掉帧问题分析之实战篇 Android卡顿掉帧问题分析之原理篇 公众号:Android技术之家Andro ...

  3. Camera 录制视频 掉帧、退帧

    录制出来的视频帧率有问题 30帧录制出来的不够,出现丢帧. 退帧的问题 1. 录制出来的掉帧 .预览不容易看出 (预览看不出来,因为预览绘制实际是 来什么我绘制什么,但是编码器不一样) 1.1 视频模 ...

  4. ov5640帧率配置_玩《和平精英》为什么要开高帧数?90帧的游戏射速你体验过吗?...

    玩手游特别是玩<和平精英>.<cf手游>.<使命召唤>之类的FPS射击游戏,不同配置的手机游戏体验是完全不一样的.除了画面方面的差别,最主要是最高帧率严重影响游戏射 ...

  5. 深入分析Android“卡顿掉帧”问题

    前言 全球手机市场中,安卓和iOS一直占着主流市场,iPhone手机给人的感觉就是流畅,而安卓手机却一直是卡顿的代名词 其实,安卓机刚上手时还是速度飞快的,并且基于它开放性的原则,受到多数用户的喜爱, ...

  6. OCam 录制,可变帧率、码率及恒定帧率、码率详解

    一.OCam 录制使用,编码器设置 1.选择好录制区域,点击录制即可录制 2.如需更改编码设置,点击编码. 选择H.264编码格式或者其他格式 3.如需详细设置 点击菜单-选项 在录制界面设置参数,视 ...

  7. 电脑录屏卡顿掉帧是什么原因 电脑录屏卡顿掉帧怎么解决

    很多人在用电脑录屏时会遇到卡顿或掉帧的情况,这些问题会严重影响录制视频的效果,观看体验变差.原视频画面没有问题,但是为什么录制时会出现这样的问题呢?今天就来探讨一下电脑录屏卡顿掉帧是什么原因,电脑录屏 ...

  8. openpnp - camera - FPS掉帧的解决思路

    文章目录 openpnp - camera - FPS掉帧的解决思路 概述 笔记 官方测速软件的下载和安装 先将参数按照openpnp的提示, 设置成默认值 将参数和官方测速软件不同的值, 改成官方测 ...

  9. 百人项目组unity2d游戏手机端发烫帧率低优化从10帧优化到60帧

    项目组排查及优化: 1.http://zh.esotericsoftware.com/forum/Skeleton-Unity-16481 此外,请务必在实际设备上测试 Release 版本的性能,因 ...

最新文章

  1. web在线阅读日志文件,response.getOutputStream().write中文乱码原因
  2. Linux System Programming -- Appendix
  3. UVA11462年龄排序
  4. dgi数据治理_荐书 | 5G时代组织急需数据体检
  5. STARTUPINFO结构
  6. Ref and Out
  7. OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()
  8. 贪心法——部分背包问题
  9. 吴恩达深度学习神经网络基础编程作业Building your Deep Neural Network Step by Step
  10. HTML编程之利用jquery制作长图动画的方法
  11. python动态爱心代码_python 动态绘制爱心的示例
  12. Windows修改远程端口号
  13. 北京大学生物信息学学习(3动态规划进行2序列比对的原理 )
  14. 黑马程序员 HTML基础
  15. k8s1.18-kubeadm安装手册
  16. 上网本的最佳拍档——极通EWEBS
  17. java dagger2_Dagger2用法整理
  18. CPU 是怎么认识代码的?
  19. 利用jdk使用WebService
  20. 陆奇最新演讲高清PPT下载;AI 绘画20+工具体验汇总;我愿称MOSS为全球开源界最强;思否AIGC黑客马拉松北京站 | ShowMeAI日报

热门文章

  1. Python图像处理之识别图像中的文字
  2. 8、智慧交通项目(1)
  3. vant表单checkbox验证问题
  4. osrmt(开源的需求管理工具)的截图
  5. 一文带你了解什么是IP地址
  6. Python.openpyxl操作Excel
  7. 日语学习之——五十音图、浊音半浊音、拗音、长音促音
  8. 传奇人物--马克·扎克伯格
  9. ubuntu下安装摄像头应用程序xawtv
  10. web 前台页面内弹出框(一)