You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS 14.5 下使用 FFmpeg 7.0.1 录制屏幕时,如何正确限制帧率?

macOS 14.5 下使用 FFmpeg 7.0.1 录制屏幕时,如何正确限制帧率?

我太懂你遇到的糟心情况了——用默认命令录屏时帧率直接拉满,按q停止后FFmpeg要吭哧吭哧处理堆积的帧,电脑风扇狂转半天才能退出。你试过在输出端加-r 24能解决,但听说用输入端的-framerate更规范却没效果,对吧?

先给你掰扯清楚这两个参数的本质区别:

  • 把-r 24放在输出端,相当于让FFmpeg先以设备默认帧率狂抓所有帧,再强行把输出视频“裁剪”成24fps——过程中会丢帧或者补帧,捕获阶段其实还是高负荷运行,只是最后输出看起来帧率正常了。
  • 把-framerate 24放在输入端,是直接给avfoundation捕获设备发指令:“你就按24fps的速度采集屏幕画面”,从源头控制帧率,不需要后期额外处理,理论上更高效。

那为什么你用-framerate没效果?大概率是这两个原因:

  1. FFmpeg默认用软件编码,处理速度跟不上:哪怕你限制了输入帧率,软件编码还是会积压一堆未处理的帧,停止时要一次性清完,自然卡顿又吵。
  2. macOS 14.5的avfoundation对-framerate的兼容性小问题:部分系统版本下,单独指定-framerate可能无法被avfoundation正确识别,得配合其他参数才行。

给你几个实测有效的解决方案,按优先级尝试:

方案1:输入帧率+硬件编码(最推荐)

直接用Mac的硬件编码加速,让FFmpeg能实时处理帧,不会堆积缓存。命令如下:

ffmpeg -f avfoundation -framerate 24 -i 1 -c:v h264_videotoolbox output.mp4

h264_videotoolbox是Mac原生的硬件编码器,效率比软件编码高一大截,能彻底避免停止时的卡顿。如果你的Mac支持HEVC,也可以换成hevc_videotoolbox。

方案2:输入帧率+输出帧率双重保险

如果方案1还是不行,就同时指定输入和输出帧率,确保两端一致,减少FFmpeg的额外处理:

ffmpeg -f avfoundation -framerate 24 -i 1 -r 24 -c:v h264_videotoolbox output.mp4

这里的-r 24只是确保输出帧率和输入一致,不会像单独用输出-r那样做大量帧裁剪,核心还是靠-framerate控制捕获帧率。

方案3:降低捕获分辨率(辅助优化)

如果你的屏幕是高分辨率(比如4K/6K),哪怕24fps也会产生海量数据,加重处理负担。可以在输入端指定捕获分辨率,进一步降低压力:

ffmpeg -f avfoundation -framerate 24 -s 1920x1080 -i 1 -c:v h264_videotoolbox output.mp4

-s 1920x1080是指定捕获1080P分辨率,你可以根据需求换成其他合适的分辨率。

最后再提个小细节:先确认你的屏幕设备编号是否正确,用这个命令可以列出所有avfoundation设备:

ffmpeg -f avfoundation -list_devices true -i ""

确保你用的1是对应屏幕的设备编号,别选错设备导致参数白加了。

备注:内容来源于stack exchange,提问作者jsx97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:27:59