Shot Master: FFmpeg-Based Video Shot Segmentation and Keyframe Extraction

前言

做拉片分析或视频剪辑前期准备时,常见路径是手工拖进度条找切点、截屏存关键帧、再逐个登记时间码。这类工作重复、容易漏切点,时间码写法也不统一。另一种做法是写一套临时脚本调 ffmpeg,但阈值、抽帧策略、输出格式每次都要重调。

镜头大师 Shot Master 把这套流程固化成一个可复用的 Skill:用 ffmpeg 做镜头切分与取帧,输出带统一时间码的分镜表和故事板,并在每个镜头上附带质量指标和类型推断结果。

这是什么

镜头大师 Shot Master(坐标 @user_a541be91/shotmaster-capmom)是一个社区来源的通用 SKILL.md 格式 Skill,发布者 user_a541be91,当前版本 2.13.0,分类 design-media,发布在 SkillHub。

它解决的问题是:把一段视频变成结构化的镜头清单——每个镜头有时间码、代表帧、质量指标、推断类型,并能进一步导出成剪辑软件可用的时间线格式,或对接混剪工作流。

官方地址:https://api.skillhub.cn/user_a541be91/shotmaster-capmom
SkillHub 页面:https://www.skillhub.cn/skills/user_a541be91/shotmaster-capmom

根据抓取资料,当前页面评分 100000,下载 1209,安装 0,标签 requires_api_key=false(不需要 API Key)。

核心能力

下面按功能分节说明。各能力的描述依据 Skill 的官方简介,具体命令行参数请以 SkillHub 页面为准。

镜头切分与取帧

  • 基于 ffmpeg 做快速、精细、准确的镜头切分。
  • 可选 PySceneDetect 作为高精度镜头检测后端。
  • bestframe 模式在每个镜头内选最清晰代表帧,并支持并行加速。

分镜表与故事板输出

  • 输出带 HH:MM:SS.mmm 时间码的分镜表,格式为 manifest 或 CSV。
  • 同时输出故事板(contact sheet),便于一眼浏览整段视频的镜头分布。
  • 用途是拉片分析剧情和视频剪辑前期准备。

质量护照三件套

每个镜头自带质量报告,包含三个指标:

  • cut_confidence:切换置信度。
  • sharpness:代表帧清晰度。
  • motion_level:镜头运动量。

scene_type 镜头类型自动推断

在质量报告之上,Skill 会自动推断镜头类型,取值包括:名场面、动、大场面、近特、台词、哭、笑、空镜。这层推断让分镜表不只是时间码列表,还能直接用于按类型筛选素材。

分类标签导入与混剪素材体系对接

  • 支持导入镜头分类标签:动、大场面、近特、台词、哭、笑、空镜、名场面。
  • 对接混剪大师 anime-mashup-editing 的素材分类体系。
  • 可按分类自动归档帧图。

时间线格式导出

支持三种时间线格式导出:

  • EDL
  • FCP XML
  • OTTO

另外提供混剪专用的 cut_timeline 子命令,生成含 hook_candidates / static_candidates 字段的时间线 JSON,供混剪流程直接消费。

shot_to_timeline 混剪工作流集成

支持 shot_to_timeline 工作流:输入视频加 BGM,输出带节拍对齐的混剪时间线 JSON。这条路径把「分镜」和「混剪」串起来,不必在两个工具之间手工搬运时间码。

性能与测试

  • sharpness 计算用 numpy 向量化,官方称约 11x 加速。
  • bestframe 的清晰度缓存会在流程中传递,避免重复计算。
  • 内置 28 项测试用例,覆盖所有模式与导出格式。

安装与启用

本文未抓取到官方安装命令与 SKILL.md 目录结构,因此不在此给出具体安装命令,避免编造。启用方式以 SkillHub 页面说明为准:

  • 官方地址:https://api.skillhub.cn/user_a541be91/shotmaster-capmom
  • SkillHub 页面:https://www.skillhub.cn/skills/user_a541be91/shotmaster-capmom

可确认的前置条件:requires_api_key=false,不需要 API Key。运行依赖 ffmpeg;可选 PySceneDetect 后端需要单独安装。

Cursor、Codex CLI、Claude Code 的安装方式差异,在本次抓取资料中没有对应说明,本文不作区分。

典型流程

以下流程基于官方简介中的子命令与输出物描述,命令行写法请以 SkillHub 页面为准。

1、输入一段视频,用默认的 ffmpeg 后端做镜头切分,得到带 HH:MM:SS.mmm 时间码的 manifest 或 CSV 分镜表。

2、需要更细的切分时,切换到 PySceneDetect 后端重跑,对比 cut_confidence 判断哪些切点置信度低、需要人工复核。

3、开启 bestframe,让每个镜头选出最清晰的代表帧;这一步会写入 sharpness 指标,并生成 contact sheet 故事板。

4、如果目标不是拉片而是混剪素材准备,用分类标签导入功能把镜头打上 动 / 大场面 / 近特 / 台词 / 哭 / 笑 / 空镜 / 名场面 标签,帧图按分类归档。

5、需要进剪辑软件时,导出 EDL、FCP XML 或 OTTO 中的一种。

6、如果下游是混剪流程,改用 cut_timeline 子命令,产出含 hook_candidates / static_candidates 的时间线 JSON;或者走 shot_to_timeline,把视频加 BGM 一起输入,直接得到带节拍对齐的混剪时间线 JSON。

适用场景与注意

适合的场景:

  • 拉片分析剧情结构,需要一份可检索的镜头清单。
  • 视频剪辑前期准备,要把素材按镜头类型和质量筛一遍。
  • 混剪素材分类与归档,尤其是已经使用 anime-mashup-editing 分类体系的团队。
  • 需要把镜头信息转成 EDL / FCP XML / OTTO 进时间线的场景。

需要注意的地方:

  • ffmpeg 后端与 PySceneDetect 后端的切分精度不同,同一视频两种后端的结果可能有差异,建议以 cut_confidence 作为复核依据。
  • scene_type 是自动推断结果,适合做筛选和粗分类,不能当作人工标注的替代。
  • bestframe 的清晰度比较依赖帧图像质量,压缩严重的视频上指标区分度会下降。
  • cut_timeline 产出的 hook_candidates / static_candidates 是给混剪流程用的候选标记,不等于最终成片决策。
  • 本文写作时未能打开官方页面抓取安装命令与参数表,使用前请以 SkillHub 页面为准核对。

结尾

镜头大师 Shot Master 的价值在于把「切镜头、抽关键帧、登记时间码、写质量报告」这一整套重复劳动固化下来,输出格式对下游剪辑和混剪流程友好。对需要批量处理视频素材的人来说,它省掉的是从 ffmpeg 命令行到分镜表之间的手工整理工作。

官方地址:https://api.skillhub.cn/user_a541be91/shotmaster-capmom

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye