本文的做法来自 Pieter Levels(@levelsio)2026 年 11 月在 X 上分享的实测,原帖:https://x.com/levelsio/status/2116959423117857026 。他补充说明工具链的回复:https://x.com/levelsio/status/2116961807315169718 。下面是我们对他这条分享的拆解和复刻说明。
Pieter Levels 把 DJI 拍的素材交给 Claude Code,让它剪成约 10 分钟的 vlog,自己只做了少量调整,事后才知道它具体用了什么工具。
这条值得拆开看,因为它把一个模糊的「AI 剪视频」落成了可复刻的工程流程。
它到底做了什么
整条链路的顺序是这样的:
- 转录:用 mlx-whisper 把音频转成带时间戳的文字
- 抽帧:按固定间隔截画面,拼成一张画面网格图
- 说话人分离:SpeechBrain 的 ECAPA 模型区分哪句话是谁说的
- 决策:Claude 同时读转录文本和画面网格,决定保留哪些时间段
- 输出:生成一份 JSON 剪辑清单,不是直接剪视频
- 渲染:按清单用 ffmpeg 切、拼
- 补充:OpenCV 配 YuNet 做人脸缩略图,Pillow 画开头字幕
关键在第 4、5 步。模型做的不是「剪视频」,是「读两份结构化数据,输出一份剪辑决策」。
为什么这个设计能跑通
直接把视频喂给模型行不行?技术上可以,但成本会失控。一小时的素材按帧算,token 数是天文数字。
这套流程做了两次压缩:
第一次压缩在音频侧。 一小时口播转成文字大约一万多字,模型读完很便宜。时间戳保留下来,所以它知道每句话在视频里的位置。
第二次压缩在画面侧。 定时抽帧拼成网格,一张图里能看到多个时间点的画面。模型看图判断「这段是不是在走路」「这段有没有风景」,不需要看连续帧。
两次压缩之后,原本几小时的素材变成了模型能一次读完的输入,决策成本降到可接受范围。
自己搭的话,顺序很重要
第一步:先把转录做好
音轨分离出来,转成带时间戳的文字。这一步的质量决定后面所有判断。
口播内容为主的 vlog,转录准不准直接影响模型能不能挑出「这段话讲完了」的边界。背景音嘈杂的素材,转录会丢字,模型据此切出来的段落容易断在半句。
第二步:设计好剪辑清单的格式
让模型输出的不是「保留 00:12 到 01:47」这种自然语言,是固定 schema 的 JSON:
{
"segments": [
{"start": 12.4, "end": 107.2, "reason": "到达民宿,介绍房间"},
{"start": 340.1, "end": 402.8, "reason": "海边日落延时"}
],
"total_duration": 596.1
}
有了固定格式,脚本就能直接消费,不用解析自然语言。字段里带上 reason,人复核时知道每段为什么留。
第三步:把渲染交给 ffmpeg
模型只输出决策,切和拼用 ffmpeg。这样每个环节都可以单独调试:剪辑决策不对就改提示词或换模型,画面不对就查 ffmpeg 参数。
一个最简的按清单切割再拼接:
# 按清单逐段切割
ffmpeg -ss 12.4 -to 107.2 -i input.mp4 -c copy seg_01.mp4
# 拼接
printf "file 'seg_01.mp4'\nfile 'seg_02.mp4'\n" > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy out.mp4
-c copy 不重新编码,速度快几个数量级。前提是各段编码参数一致,所以切割前先统一一次编码参数。
第四步:把决策交给模型
这一步接 HiAPI 就行。Claude Code 配置见 Claude Code 和 Codex 接 HiAPI,配上 Key 之后,Claude Code 里跑的推理就走 Opus 5.5(输入 $2.02、输出 $10.08 每百万 token)。
一条一小时素材,转录文本加几十张画面网格,输入大概两三万 token。按 Opus 5.5 的输入价,一次完整决策的成本在几分钱到一毛之间。对比人工剪一小时的工时,这个数量级不需要犹豫。
换场景就能复用
同一套结构,换个输入源就是另一个产品:
| 场景 | 输入 | 剪辑目标 |
|---|---|---|
| 播客切片 | 长音频 + 转写 | 挑出可独立成段的观点 |
| 会议回顾 | 录屏 + 转写 | 保留决议和待办 |
| 课程精剪 | 讲课视频 | 去掉停顿和重复 |
| 访谈集锦 | 多机位 | 按主题重组 |
每一类的提示词不同,但「转写 → 压缩 → 决策 → 渲染」这条骨架一样。
会踩的坑
时间戳偏移。 不同工具的转录时间戳基准可能差几十毫秒,切出来的段落开头会吞字。解法是先拿一段短素材校准。
模型倾向于保留太多。 第一次跑往往剪不够狠,输出比目标时长长。提示词里明确给目标时长,并说明超了要重新挑。
切割点落在语句中间。 只给模型时间戳,它可能切在半句。把转录的句子边界一起给它,让它按句子边界选。
重新编码耗时。 各段编码参数不一致时 -c copy 会失败,退化成重编码,一小时的素材要跑很久。统一参数这一步不能省。
常见问题
必须用 Claude Code 吗?
不一定。任何能读长文本、能按 schema 输出 JSON 的模型都能做这个决策环节。Claude Code 的优势是它自己会写脚本、跑 ffmpeg、看结果再调整,省掉你手动串流程的时间。
不用苹果芯片能跑 mlx-whisper 吗?
不能,mlx 是苹果的框架。非苹果机器换 faster-whisper 或 whisper.cpp,逻辑一样。
整段流程要多久?
素材转写占大头,一小时素材在 M 系列芯片上大约十几到几十分钟,取决于模型大小。决策环节几分钟。渲染用 -c copy 的话很快。
剪出来能直接用吗?
Levels 自己的说法是做了少量调整。自动流程解决的是「从几小时素材里挑出十分钟」这个最耗时的部分,细节的节奏和转场还是人调更快。
关键结论
这套流程能跑通的核心不是模型多聪明,是把视频变成了模型读得起的数据。转录压缩了音频,抽帧网格压缩了画面,模型只做选段决策,渲染交回给 ffmpeg。想复刻的话,从「把素材转成带时间戳的文本」这一步开始,剩下的都是工程活。
资料来源
- 原始分享:Pieter Levels(@levelsio),https://x.com/levelsio/status/2116959423117857026
- 工具链补充说明(作者回复):https://x.com/levelsio/status/2116961807315169718
- 本文的流程拆解、代码示例、注意事项为 HiAPI 侧整理,非原作者内容





