最近,我们开启了面向企业的 Vide Coding 在线直播培训,每次课程 6 小时,并且为了方便客户回放,我们会将在线会议录像剪辑成“精华版”,去掉了互动和回顾。
经常做剪辑的小伙伴都知道,视频剪辑是非常耗时的任务,尤其是面对每次 6 小时时长的课程,每次剪辑一次都要花 3 天左右的时间,而且大部分的剪辑任务都是纯体力活,不断重复着打时间轴 —> 断句 —> 剪掉口误、磕绊、口癖、纠错等重复性任务,一次剪辑常常要花费好几倍视频时长的时间。
既然我们已经在用 AI 写代码了,很自然地我也就动了让 AI 剪辑的念想,试试这些任务能不能让 AI 完成,能完成到什么程度?我来做最终把关即可。
说干就干,于是我就开始做技术调研了。
准备工作
我们最近的课程正好就是以 Claude Code 为主的课程,所以我就直接用 Claude Code 来做剪辑了,看看能不能搭配各种 Skill 来完成。
我期望可以交给 AI 视频,让 AI 能分析出讲师的讲解内容,自动剪辑掉中间的停顿、口误、以及一些无关的内容,为了方便检查与二次编辑,我期望它输出非编软件的工程文件,而不是视频成品。
所以我就按照这个方向做技术探索。
首先找到的一个 Skill 是 videocut-skills ( https://github.com/Ceeon/videocut-skills ),这个 Skill 直接提供了剪口播的功能。我大致看了下 Skill 的内容,发现它的剪辑功能主要是基于音频的分析来实现的,它使用 FFmpeg 提取音频,使用火山引擎的转录 API 生成转录字幕,然后在 Agent 中识别口误部分并生成剪辑后的时间轴,最终使用 FFmpeg 渲染生成最终的视频成品。
这个不完全符合我的需求,因为我需要的是一个非编软件的工程文件,方便我进行二次编辑和审查。所以我需要一个后续步骤完善这个 Skill 的方案。而且它使用第三方转录 API,会带来额外的费用,不能完全本地化运行,所以还想进一步探索。
接下来探索的方向是如何生成非编的工程文件,经过一翻探索之后,找到了这个工程 CLI-Anything ( https://github.com/HKUDS/CLI-Anything ),它允许使用 CLI 的方式和某些 GUI 程序交互,刚好里面就带有一个 cli-anything-kdenlive ( https://github.com/HKUDS/CLI-Anything/tree/main/kdenlive/agent-harness/cli_anything/kdenlive ) 这个 CLI,并配套提供了一个 SKILL.md,可以直接交给 AI 使用,这下万事俱备了。
不过经过初步测试发现,最初的 cli-anything-kdenlive 有 BUG,生成的工程文件无法在 Kdenlive 中打开,经过一翻 Vibe Coding 之后,这个问题已经被我解决了,并且合并到了官方仓库 ( PR: https://github.com/HKUDS/CLI-Anything/pull/216 ),感兴趣的小伙伴可以直接通过以下命令安装体验:
uv tool add git+https://github.com/HKUDS/CLI-Anything.git#subdirectory=kdenlive/agent-harness
# 或
pipx install git+https://github.com/HKUDS/CLI-Anything.git#subdirectory=kdenlive/agent-harness
整个路子已经打通了,接下来就是实操了。
Claude Code 自动剪辑实录
在 Claude Code 中添加了 videocuts 和 cli-anything-kdenlive 两个 Skill 之后,让 AI 分析这两个 Skill,并提供一个结合的方案,并且最好能绕过火山引擎 API 的配置。
于是 AI 设计了一个完全基于本地化的方案:
- 使用
faster-whisper来替代火山引擎的转录 API,直接在本地进行音频转录,生成带时间轴的字幕文件 - 结合
videocuts:剪口播的要求,生成剪辑后的时间轴 - 使用
cli-anything-kdenlive来生成非编工程文件
这期间还要经过一翻斗智斗勇,因为本地的机器配置不够,不能使用 faster-whisper 的 large-v3 规格,改为降低为 small 规格,精度调整为 int8 降低内存消耗,并且采用切分多个音频 chunk 并行转录的方式提供整体效率,最终成功将 6 小时的音频文件成功转录,最终得到了一份可打开的 Kdenlive 工程文件。
这个相当于粗剪辑完成了,已经完成最耗时的打时间轴任务。我再打开 Kdenlive 进行二次编辑,经过一翻精修,最终完成了课程视频的剪辑工作。
后记
这次是第一次尝试自动剪辑,依然存在很多可优化的地方,比如:
- 剪辑产生的 Clips 过多,导致 Kdenlive 打开特别卡,大部分是无意义的剪辑,打算后续增加合并时间轴的步骤
- faster-whisper 的转录精度不够,导致剪辑的时间轴不够准确,后续可能需要优化转录参数,在尽可能保证精度的情况下跑起来,不止于 OOM
- 虽然很多磕绊、长时间停顿的地方被剪掉了,但是依然有很多口误、冗余、纠错等内容并没有完全处理掉,依然靠人工花大力气完成,这里后续考虑通过更好的 Prompt 完成
即使是这样,也为我节省了大量的时间,原本 3 天完成的工作,现在差不多 1 天多就可以完成了,最耗时间的部分 AI 已经帮我做好了,剩下的只是完整听一遍剪辑并精修的部分。
总之,虽然整体磕磕绊绊,但这次的尝试让我看到了 AI 自动化工具的巨大潜力,不要只把 Claude Code 当作是 AI 编程工具,它的更多玩法完全取决于你的想象力,未来我也会继续探索更多有趣的应用场景,敬请期待!