ffmpeg

使用 FFmpeg 从视频中提取 I 帧关键帧,支持多种格式和输出格式。

已扫描
适合谁
视频内容创作者、多媒体分析人员
不适合谁
无 FFmpeg 环境的用户、无需视频帧提取的普通用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @lnj22/mario-coin-counting-ffmpeg

Skill 说明

命令、参数、文件名以原文为准

FFmpeg 关键帧提取

使用 FFmpeg 命令行工具从视频文件中提取关键帧(I 帧)。

先决条件

  • 已安装 FFmpeg 并在系统 PATH 中可用
  • 输入视频文件(支持 MP4、MKV、AVI、MOV 等格式)

方法

方法 1:选择过滤器(控制更灵活)

ffmpeg -i <input_video> -vf "select='eq(pict_type,I)'" -vsync vfr <output_pattern>

方法 2:跳过非关键帧(更快)

ffmpeg -skip_frame nokey -i <input_video> -vsync vfr <output_pattern>

关键选项

选项说明
-i <file>输入视频文件
-vf "select='eq(pict_type,I)'"使用滤镜仅选择 I 帧
-skip_frame nokey跳过非关键帧的解码(提升性能)
-vsync vfr使用可变帧率输出,防止重复帧
-q:v <n>设置质量(1-31,数值越小质量越高,适用于 JPEG 格式)
-frame_pts 1在文件名中使用显示时间戳

输出格式模式

  • frame_%03d.png - PNG 序列(如:frame_001.png, frame_002.png...)
  • frame_%03d.jpg - JPEG 序列
  • frame_%d.bmp - BMP 序列

示例

基础 PNG 提取:

ffmpeg -i video.mp4 -vf "select='eq(pict_type,I)'" -vsync vfr keyframe_%03d.png

高质量 JPEG 提取:

ffmpeg -i video.mp4 -skip_frame nokey -vsync vfr -q:v 2 keyframe_%03d.jpg

带时间戳的输出:

ffmpeg -i video.mp4 -vf "select='eq(pict_type,I)'" -vsync vfr -frame_pts 1 keyframe_%d.png

输出到指定目录:

ffmpeg -i video.mp4 -vf "select='eq(pict_type,I)'" -vsync vfr ./output/keyframe_%03d.png

注意事项

  • 方法 2(-skip_frame nokey)速度更快,因为它跳过了非关键帧的解码过程
  • 方法 1 提供更多滤镜组合的灵活性(可与其他滤镜配合使用)
  • 关键帧的频率取决于视频编码时的设置
  • 使用 -vsync vfr 可避免输出中出现重复帧
L
@lnj22

已收录 6 个 Skill

相关推荐