如何使用ffmpeg录制最高120fps的可变帧率(VFR)桌面录屏
FFmpeg 可变帧率桌面录制解决方案(上限120fps 自动适配设备性能)
原命令失效核心原因
当前使用的命令存在多个参数冲突,直接导致-vsync vfr的可变帧率逻辑无法生效:
- 输出侧强制添加了
-r 120参数,该参数优先级高于可变帧率设置,会强制输出固定120fps,性能不足时会强行插帧而非自动降帧 - 同时配置了
-use_wallclock_as_timestamps 1和重复的-fflags +genpts参数,时间戳计算逻辑混乱,无法正确识别实际输入的帧间隔 - 添加了
-re参数限制输入读取速度,反而会强制对齐预设帧率,干扰自适应降帧逻辑
修正后可用命令
ffmpeg -thread_queue_size 1024 -rtbufsize 1024 -indexmem 1024 -probesize 32 -analyzeduration 0 -framerate 120 -f rawvideo -pix_fmt rgb32 -video_size 1366x768 -i \\.\pipe\testscreen-4c0b1a88-d4d0-4f6a-55a6-c4587a0ccb7c3 -async 1 -thread_queue_size 1024 -rtbufsize 1024 -indexmem 1024 -probesize 32 -f s16le -acodec pcm_s16le -ar 44100 -ac 2 -i \\.\pipe\testscreen-d185c2a9-ac89-4966-b8d7-cec897848790 -fflags nobuffer -vsync vfr -vcodec libx264 -crf 21 -pix_fmt yuv420p -preset ultrafast -b:v 0 -maxrate 0 -bf 0 -profile:v high -x264opts "keyint=300:bframes=0:sliced_threads=1:slices=4:lookahead_threads=4:threads=4" -tune zerolatency -movflags +faststart -y -c:a aac -b:a 128k "C:\2021-08-16_13-21-38-815.mp4"
关键调整说明
- 移除输出侧
-r 120参数,取消固定帧率限制,让可变帧率逻辑正常生效 - 删除冲突的
-use_wallclock_as_timestamps 1、-re和重复的-fflags +genpts参数,依赖输入侧-framerate 120设置帧率上限,ffmpeg会根据实际接收到的帧自动匹配输出帧率,性能足够时保持120fps,性能不足时自动降低到可承载的帧率 - 保留
-vsync vfr参数,开启可变帧率模式,不会强行插帧或者丢帧对齐固定帧率 - 移除过时的
-strict -2参数,新版FFmpeg的AAC编码器已经不需要该配置
内容的提问来源于stack exchange,提问作者AJ Dev
相关产品推荐
相关产品推荐

