批量剪辑视频不再靠手点:AutoCut 字幕编辑与脚本自动化完整教程
【免费下载链接】autocut用文本编辑器剪视频项目地址: https://gitcode.com/GitHub_Trending/au/autocut
周五 18:00,共享目录里又躺进 87 条直播回放,要求周一上午交切片成品。人工逐条播放、拖进度条、记时间点,一天根本做不完。AutoCut 就是为这类"重复劳动"准备的开源工具:它先自动把视频转成带时间戳的字幕,你在文本里勾选要保留的句子,它再按字幕时间戳裁出对应片段并合并成片——批量剪辑视频这件事,从此可以交给脚本。本文带你从零搭起一条"转录 → 勾选 → 裁剪 → 合并"的自动化流水线。
AutoCut 能替你干什么:一张表看懂核心能力
先别急着写代码,花 2 分钟理清 AutoCut 的分工。整个项目代码量很小,核心逻辑就分布在几个模块里:
| 模块 | 职责 | 对应命令行动作 |
|---|---|---|
| autocut/main.py | 命令行入口,解析参数并分发任务 | -t转录 /-c裁剪 /-d守护 /-m字幕转 Markdown /-s紧凑化字幕 |
| autocut/transcribe.py | VAD 人声检测 + Whisper 语音识别,产出.srt和.md | autocut -t 视频.mp4 |
| autocut/cut.py | Cutter按勾选项裁切视频;Merger把多个成片拼接 | autocut -c 视频 字幕.md |
| autocut/daemon.py | 持续监听文件夹:新视频自动转录,编辑完成的自动裁剪合并 | autocut -d 目录 |
| autocut/utils.py | Markdown 任务解析、音频读取、文件扩展名处理等公共工具 | —— |
几个关键参数值得先记住:
--whisper-model:识别模型,可选tiny / base / small / medium / large,默认small;--bitrate:导出码率,默认10m,可按需调成2m、500k等;--force:输出文件已存在时强制覆盖,否则直接跳过;--device:强制cpu或cuda,默认有 GPU 就用 GPU;--encoding:字幕文件编码,默认utf-8。
它的定位不是专业剪辑软件,而是"用文本驱动剪辑"的胶水层:裁切靠 ffmpeg 和 moviepy 完成,智能识别靠 Whisper 完成,人只需要做"哪些句子留下"这一个决定。
环境准备:安装 AutoCut 与配置依赖
AutoCut 依赖两个外部条件:Python 环境和 ffmpeg。
1. 安装 ffmpeg(音频抽取和导出都靠它)
sudo apt install ffmpeg # Debian / Ubuntu brew install ffmpeg # macOS2. 安装 AutoCut
git clone https://gitcode.com/GitHub_Trending/au/autocut cd autocut pip install . # 本地 Whisper,日常够用 pip install '.[all]' # 需要 faster-whisper 或 OpenAI API 时改用这行项目也发布为autocut-sub,可以直接pip install autocut-sub。有 NVIDIA 显卡时建议先装好对应版本的 PyTorch,再安装 AutoCut,转录会自动走 GPU。验证方法:
python -c "import torch; print(torch.cuda.is_available())" # True 即 GPU 可用3. 准备一个素材目录,例如./inbox/,把待处理的视频(mp4 / mov / mkv / flv 等)丢进去。注意:AutoCut 是 Python 包,安装后代码会进入你的虚拟环境,改了本地源码需要重新pip install .才生效。
链路拆解:视频是怎么被"改文字"剪掉的
AutoCut 的工作流可以拆成四个环节,每个环节都有明确的文件产物:
| 阶段 | 输入 | 发生了什么 | 产物 |
|---|---|---|---|
| ① 转录 | 视频文件 | ffmpeg 抽出 16kHz 单声道音频 → Silero VAD 标出人声区间 → Whisper 逐段识别 | 同名.srt+.md |
| ② 标记 | .md文件 | 每句字幕是一行任务:- [ ] [序号,分:秒] 句子内容,勾选- [x]即"这句保留" | 勾选项的.md |
| ③ 裁剪 | 视频 +.srt+.md | 按勾选序号过滤字幕,相邻短句(间隔小于 0.5 秒)合并成段,moviepy 切片导出 | xxx_cut.mp4 |
| ④ 合并(可选) | 多个成片 | 在自动生成的autocut.md里勾选要拼接的视频 | autocut_merged.mp4 |
生成的.md长这样(取自项目测试样例):
- [x] <-- Mark if you are done editing. - [ ] [1,00:00] 大家好,我的名字是AutoCut。这是一条用于测试的视频。 - [x] [2,00:05] Hello, my name is AutoCut. This is a video for testing.有两行规则是整条链路的关键:
- 每句前面的
[序号,时间]是它和.srt字幕的对应关系,裁剪时只认序号; - 顶部那行"Mark if you are done editing"必须勾上,AutoCut 才认为你编辑完毕,否则裁剪环节会直接跳过——这也是后面批量脚本必须处理的地方。
动手实操:搭建最小可用的批量剪辑流水线
👉 先跑通单条视频的最小闭环,再谈批量。
单条闭环(3 条命令)
# 转录:生成 demo.srt 和 demo.md autocut -t demo.mp4 # 编辑 demo.md:勾选要保留的句子,并把"done editing"一行勾上 # 裁剪:输出 demo_cut.mp4 autocut -c demo.mp4 demo.srt demo.md编辑.md用 Typora、VS Code 这类支持任务列表勾选的 Markdown 编辑器都很顺手,勾选一个句子就代表保留对应片段:
批量转录:不用 Python 循环,一行 shell 就够了,已有的.md会自动跳过:
for f in ./inbox/*.mp4; do autocut -t "$f"; done批量裁剪:逐句人工勾选是"编辑"环节,但"哪些句子值得留"如果有明确规则(比如包含某些关键词),完全可以脚本代劳。下面这段利用 autocut/utils.py 的MD类,自动勾选含关键词的句子并声明编辑完成:
import glob from autocut.utils import MD KEYS = ("核心", "注意", "总结") # 命中任一关键词即保留该句 for md_path in glob.glob("./inbox/*.md"): md = MD(md_path, "utf-8") for i, line in enumerate(md.lines): if any(k in line for k in KEYS): md.lines[i] = line.replace("- [ ]", "- [x]") # 勾掉"编辑完成"标记,裁剪环节才会执行 for i, line in enumerate(md.lines): if "Mark if you are done editing" in line: md.lines[i] = line.replace("- [ ]", "- [x]") md.write()脚本跑完,再对每个视频执行autocut -c 视频.srt对应的三件套(或直接用守护模式,见下)。
可选扩展,按需取用:
- 免值守模式:
autocut -d ./inbox会常驻监听目录——新视频落盘自动转录;某个.md被勾选完成就自动裁剪,并刷新autocut.md,你在里面勾选要拼的片子,最终输出autocut_merged.mp4。直播录屏场景下,可以把 OBS 按日期命名文件夹,一天结束直接挂着跑。 - 只要 srt 也能剪:不习惯 Markdown 时,直接在
.srt里删掉不要的句子,然后autocut -c demo.mp4 demo.srt(不传.md即可)。反过来,已有字幕想转成 Markdown 编辑:autocut -m demo.srt demo.mp4。 - 成片码率控制:默认
10m偏大,小屏幕内容用--bitrate 2m能省一半空间。 - Python API 二次开发:
from autocut import Transcribe, load_audio可以把"读音频 → VAD → 转录"嵌入你自己的程序,做更定制化的批量任务。
避坑指南:这些坑先踩过再批量跑
⚠️ 批量场景下,单条失败会被复制成一百次失败,下面四个点是最常见的翻车位置。
坑 1:字幕乱码,几乎全是编码问题
AutoCut 默认读写utf-8。如果你的编辑器按gbk保存了.md,或者用 Typora 打开后它悄悄转了码,裁剪时就会报"编码不支持"。对策:转录和裁剪两步用同一个--encoding=gbk,并且生成字幕和剪辑时的编码必须一致。另外 Typora 有自动转码行为,非 utf-8 工作流建议改用 VS Code 显式指定编码保存。
坑 2:大模型跑不动,或显存直接爆
large模型质量最好但吃显存,普通显卡容易 OOM。三个选项:降一档用small;或者保留大模型但--device cpu强制 CPU(慢但不爆);再或者pip install '.[all]'后用--whisper-mode=faster换 faster-whisper 推理,速度更快。先用torch.cuda.is_available()确认 GPU 真的被识别到,否则 PyTorch 版本大概率不匹配。
坑 3:"已存在,跳过"让你误以为在跑
两个静默跳过机制:输出文件已存在时直接跳过(要覆盖得加--force);.md里"编辑完成"没勾上时,裁剪直接不执行。批量脚本里如果忘记勾那行标记,你会发现跑完全程、一个_cut.mp4都没生成——写脚本时务必检查这一步是否生效。
坑 4:字幕时间戳偏差、识别出"no speech"
Whisper 的质量取决于人声清晰度:口齿流利、背景干净的音频效果好,嘈杂环境会出现漏句或占位文本。实用补救:对裁出来的片子再转录一次、再粗选一遍(二剪法);空行太多的.srt可以用autocut -s demo.srt生成紧凑版demo_compact.srt方便编辑,改完再执行一次autocut -s转回标准格式。
常见问题 FAQ
Q:只有音频文件(mp3/wav)能处理吗?能。-t转录音频后,-c会输出.mp3而不是.mp4,本质是"文本剪音频"。
Q:英文视频转录中文,或者反过来,怎么指定语言?用--lang指定,默认zh。例如英文素材:autocut -t en.mp4 --lang en。除中、英外还支持日语、韩语、西语等数十种语言。
Q:怎么把多个剪辑结果拼成一个长视频?守护模式下 AutoCut 会自动维护autocut.md,列出目录里所有片子及其描述;你勾选要拼接的项并声明编辑完成,它输出autocut_merged.mp4和对应字幕。
Q:能不用本地模型,走 OpenAI API 转录吗?可以:export OPENAI_API_KEY=sk-xxx,然后autocut -t demo.mp4 --whisper-mode=openai --openai-rpm 3(免费额度 3 RPM,付费 50 RPM)。
Q:批量跑的时候重复执行会覆盖之前的结果吗?默认不会,输出存在就跳过;确实要重跑就加--force。
总结:把这条流水线接入你的日常
回顾一下关键点:AutoCut 把剪辑拆成"转录(机器)→ 勾选(人或脚本)→ 裁剪合并(机器)"三步;-t、-c、-d三条命令加一个MD类脚本,就能覆盖绝大多数批量场景;编码一致、模型匹配硬件、"编辑完成"标记这三处是批量任务最常见的翻车点。下一步建议:先用test/media目录里的几个样例视频把单条闭环跑通,再挑你真实工作中"留句规则最明确"的那类素材(如固定话术的课程、复盘会),把关键词脚本挂到定时任务里——批量剪辑的自动化收益,会从第一个文件夹开始显现。
【免费下载链接】autocut用文本编辑器剪视频项目地址: https://gitcode.com/GitHub_Trending/au/autocut
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考