恒定帧率30帧以上录制掉帧问题分析

本文分析了在录制30帧以上游戏画面时出现的掉帧问题,探讨了ffmpeg的补帧逻辑,并尝试从采集和编码两个角度寻找解决办法。最终发现,通过设置ffmpeg编码速度,可以有效解决恒定60帧录制的音画不同步和掉帧问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

录制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
命令行:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值