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

如何用FFmpeg同时录屏并快速生成指定时长的MP4剪辑片段?

可行实现方案

核心思路

通过FFmpeg将屏幕录制拆分为固定时长的小分段文件(如每10秒1个),点击触发按钮时,直接拼接目标时间段对应的分段文件并快速转码为MP4。这种方式避免了对大体积录屏文件的实时剪辑,能做到数秒内完成操作,同时满足时间偏差要求。

具体实现步骤

1. 启动FFmpeg实时录屏并分段

根据操作系统选择对应的屏幕抓取源,录制时直接生成分段文件,推荐使用MKV/FLV作为中间容器(支持快速分段、无需重新编码即可拼接):

Windows平台命令

ffmpeg -f gdigrab -framerate 30 -i desktop -c:v libx264 -preset ultrafast -crf 23 -f segment -segment_time 10 -reset_timestamps 1 screen_%03d.mkv

参数说明:

  • -f gdigrab:Windows屏幕抓取输入格式
  • -framerate 30:设置录屏帧率(可根据需求调整)
  • -c:v libx264 -preset ultrafast:用最快的H.264编码预设,保证录屏流畅
  • -segment_time 10:每10秒生成一个分段文件
  • -reset_timestamps 1:每个分段文件的时间轴从0开始,方便后续拼接

Linux平台命令

ffmpeg -f x11grab -framerate 30 -i :0.0 -c:v libx264 -preset ultrafast -crf 23 -f segment -segment_time 10 -reset_timestamps 1 screen_%03d.mkv

参数说明:-i :0.0表示抓取主显示器(若有多个显示器,可改为:0.1等)

macOS平台命令

ffmpeg -f avfoundation -framerate 30 -i 1 -c:v libx264 -preset ultrafast -crf 23 -f segment -segment_time 10 -reset_timestamps 1 screen_%03d.mkv

参数说明:-i 1表示抓取屏幕(可通过ffmpeg -f avfoundation -list_devices true -i ""查看设备编号)

2. 触发剪辑的逻辑实现

点击按钮时,执行以下操作:

  • 计算目标分段:记录录屏启动的系统时间戳,点击时计算已录制时长T(秒),目标时间段为[T-20, T],对应分段文件为从floor((T-20)/10)到floor(T/10)的编号(例如T=80时,对应screen_006.mkv(60-70秒)和screen_007.mkv(70-80秒))
  • 生成拼接列表:创建临时文本文件(如list.txt),内容格式如下:
    file 'screen_006.mkv'
    file 'screen_007.mkv'
    
  • 快速拼接转MP4:执行FFmpeg命令直接复制流拼接,无需重新编码,速度极快:
    ffmpeg -f concat -safe 0 -i list.txt -c copy -t 20 output_$(date +%Y%m%d%H%M%S).mp4
    
    参数说明:
    • -c copy:直接复制视频流,无转码耗时
    • -t 20:确保输出文件恰好20秒,避免最后一个分段不满10秒的情况
    • 文件名中的时间戳用于区分不同剪辑片段

关键优化与偏差控制

  • 时间偏差调整:若觉得10秒分段的偏差过大,可将-segment_time改为5秒,此时最大偏差不超过5秒,完全符合需求
  • 磁盘空间管理:定时清理超过指定时长的旧分段文件(如只保留最近5分钟的片段),避免磁盘占用过高
  • 流畅性保障:使用ultrafast预设编码时,若出现卡顿,可适当降低帧率或提高crf值(数值越大,文件越小,画质略降)

内容的提问来源于stack exchange,提问作者Noisy-JohnSmith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:52:39