安全风险
OpenViking
基于OpenViking的RAG系统,支持文档查询、知识管理与向量检索。
下载 196
基于AI与规则的视频自动粗剪工具,支持单视频最佳片段提取与批量去重拼接。
openclaw skills install @gilbertwuu/video-aroll-auto-editor命令、参数、文件名以原文为准
基于规则与 AI 的自动化视频粗剪工具,可自动从原始素材中识别最佳片段并完成剪辑拼接。
适用场景:单人出镜(A'Roll)内容 —— 个人日志、教程、播客、知识分享独白。不适用于多人对话、采访或以音乐/B-roll 为主的视频内容。
| ✅ 适用场景 | ❌ 不适用场景 |
|---|---|
| 单人面对镜头讲话(A'Roll) | 多人对话、访谈类内容 |
| 日常视频、教学视频、播客、独白 | 音乐密集、B-roll 内容繁多的视频 |
| 同一内容的多个拍摄版本(批量去重) | 需要保留多个片段的复杂内容 |
| 中文语音(已针对中文流畅模式优化) | 非中文语音(未适配相关模式) |
| 原始长时段素材(粗剪阶段) | 已经经过精细剪辑的内容 |
# macOS
brew install ffmpeg
pip install openai-whisper
# Ubuntu / Debian
sudo apt install ffmpeg
pip install openai-whisper传入一个视频文件路径:
python3 video_editor_auto_v4.6.py ./video.MTS ./output输出结果:
output/
├── video_粗剪.mp4 # 最佳片段(裁剪后)
└── video_报告.md # 处理报告传入一个文件夹路径(自动识别为批量模式):
python3 video_editor_auto_v4.6.py ./Video ./output输出结果(仅保留两个文件,中间文件将被清理):
output/
├── 最终拼接_20260311_1905.mp4 # 去重后拼接的视频
└── 批量处理报告.md # 批量处理报告(包含各片段详情与去重决策)python3 video_editor_auto_v4.6.py <input> [output_dir] [work_dir]| 参数 | 说明 | 默认值 |
|---|---|---|
<input> | 视频文件路径(场景 A)或文件夹路径(场景 B) | 必填 |
[output_dir] | 输出目录,用于存放剪辑片段和报告 | ./output |
[work_dir] | 临时目录,用于存放中间文件 | ./video_work |
支持格式:.MTS, .mp4, .mov
输入视频 → 静音检测 → 片段识别 → 四维评分
→ 候选片段筛选 → Whisper 转录 → 流畅性分析
→ 视频内去重 → 分层选择 → 输出剪辑片段输入文件夹 → 对每个视频执行场景 A 处理(不生成单个报告)
→ 跨视频去重 → 按文件名顺序拼接
→ 清理中间文件 → 生成单一批量报告所有参数均位于脚本顶部的 CONFIG 字典中:
CONFIG = {
# 静音检测
"silence_noise": -30, # dB,数值越低越严格
"silence_duration": 0.8, # 秒,静音最小持续时间
# 过滤条件
"min_score": 90, # 最低基础分(满分 100)
"min_duration": 15, # 最短片段时长(秒)
# 剪辑缓冲区
"buffer_start": 1, # 开始前缓冲时间(秒)
"buffer_end": 3, # 结束后缓冲时间(秒)
# 编码设置
"crf": 18, # 视频质量(18=视觉无损,23=默认)
"preset": "fast", # 编码速度
"audio_bitrate": "192k", # 音频码率
# 调整分数权重
"penalty_repeat": 5, # 每次重复惩罚
"penalty_stutter": 3, # 每次结巴惩罚
"penalty_interrupt": 10, # 突然中断惩罚
"bonus_natural_end": 5, # 自然结尾加分
"bonus_completeness_max": 3, # 完整性加分上限
# 去重设置
"duplicate_threshold": 0.7, # 内容相似度阈值(0-1)
}| 使用场景 | 参数 | 推荐值 |
|---|---|---|
| 噪音环境 | silence_noise | -35 |
| 片段过于零碎 | silence_duration | 1.0 |
| 希望获得更多候选片段 | min_score | 85 |
| 希望片段更短 | min_duration | 10 |
| 更高画质 | crf | 15(文件体积更大) |
| 维度 | 满分 | 判定标准 |
|---|---|---|
| 清晰起始 | 25 | 片段前有足够静音 |
| 清晰结束 | 25 | 片段后有足够静音 |
| 中段流畅度 | 25 | 内部中断次数少 |
| 自然节奏 | 25 | 停顿比例低 + 无过长停顿 + 不过短 |
在基础分基础上,根据转录文本分析进行加减分:
| 项目 | 分数 | 说明 |
|---|---|---|
| 重复惩罚 | -5 每次 | “重复说”类结巴(按每 30 秒归一化) |
| 结巴惩罚 | -3 每次 | 填充词(如“嗯”“啊”等) |
| 中断惩罚 | -10 | 以连接词结尾(如“然后”“但是”等) |
| 自然结尾加分 | +5 | 以完整句子、问题或总结结尾 |
| 完整性加分 | +0~3 | 自然结尾 + 时长接近 60 秒 |
并非单纯取最高分;采用优先级过滤策略:
# Video A'Roll Auto Editor v4.7
## 优先级规则
### 第一层:优先选择自然结束的片段
### 第二层:按流畅度排序(每30秒容忍度为1.5)
### 第三层:按调整后得分排序
### 第四层:平局处理 → 不完整片段选最后的;完整片段选最长的
---
## 去重规则
视频内去重与跨视频去重采用相同选择规则:自然结束 > 调整后得分 > 索引/文件名顺序(靠后的优先)
---
## 常见问题解答
### Q:未检测到静音段落?
背景噪音可能导致误检。可尝试将 `silence_noise` 从 `-30` 降低至 `-35`。
### Q:片段切分过细?
静音时长阈值可能设置过短。可将 `silence_duration` 从 `0.8` 提高至 `1.0` 或 `1.5`。
### Q:为何未选择得分最高的片段?
系统采用**分层选择机制**,而非单纯比较原始得分。优先级顺序为:自然结束 > 流畅度 > 调整后得分 > 持续时间。一个95分但突然中断的片段,可能排名低于一个90分且自然收尾的片段。
### Q:Whisper语音转写不准确?
默认使用 `small` 模型以平衡速度与准确率。如需提升精度:
- 在 `transcribe_segment` 中,将 `--model small` 改为 `--model medium` 或 `--model large`
- `medium` 模型对中文识别准确率约为85%,若资源允许,推荐使用
### Q:跨视频去重如何决定保留哪个片段?
选择规则:自然结束 > 调整后得分 > 较晚的文件名(通常为最后录制版本,状态最佳)
### Q:详细报告保存在哪里?
- 场景 A:`output/<video_name>_报告.md`
- 场景 B:`output/批量处理报告.md`(包含片段详情、转写摘要、去重决策记录)
- 场景 B 不保留中间报告或剪辑片段;合并完成后会自动清理
---
## 项目结构video_editor_v4.6_release/
├── video_editor_auto_v4.6.py # 主脚本
├── README.md # 当前文档
├── CODE_DOCUMENTATION.md # 技术文档(架构、模块、API说明)
├── requirements.txt # Python 依赖项
├── LICENSE # GPL v3 许可证
└── .gitignore # Git 忽略规则
---
## 技术文档
关于模块实现细节、数据结构、算法逻辑及扩展指南,请参阅 `CODE_DOCUMENTATION.md`。
---
## 许可证
本项目采用 **GPL v3** 许可证。若将本软件或其衍生作品用于商业用途,必须将其产品以相同许可证(GPL v3)开源发布(符合 GPL v3 的版权要求)。
详情请见 [LICENSE](LICENSE) 文件。
---
**版本**:v4.7 | **最后更新**:2026-03-11已收录 1 个 Skill