04db423416
- 70 skills with code and documentation - Add .gitignore (ignore __pycache__, output/, temp/, venv/) - Clean up test intermediates and caches
4.1 KiB
4.1 KiB
name, description
| name | description |
|---|---|
| video-text-clipper | 基于字幕文本特征的视频自动剪辑工具。通过语音转录识别视频字幕,根据关键词密度自动定位并剪辑出符合特征的片段,生成带字幕的精华视频。适用于任何通过字幕文本特征来截取拼接视频的场景。 |
基于文本特征的视频剪辑工具
功能说明
通过语音转录识别视频中的字幕文本,根据关键词密度自动定位并剪辑出符合特征的片段,生成带字幕的精华视频。
适用场景
- 根据关键词密度提取视频片段(如密集出现"大"字的打拍子片段)
- 长视频中特定内容片段的自动剪辑
- 任何通过字幕文本特征来截取视频的场景
环境要求
| 项 | 要求 | 说明 |
|---|---|---|
| Python版本 | 3.12 | 必须使用 D:\ProgramData\anaconda3\envs\py312_cuda\python.exe |
| CUDA版本 | 12.1 | RTX3080显卡,PyTorch 2.5.1+cu121 |
| 模型路径 | D:/AI/LM-Models/faster-whisper/large-v3 |
本地预下载的faster-whisper large-v3模型 |
| ffmpeg版本 | 支持drawtext+subtitles滤镜 | 当前环境已满足 |
⚠️ 环境路径:
D:\AI\Miniconda3\python.exe→ ❌ CPU 版本,不能用D:\ProgramData\anaconda3\envs\py312_cuda\python.exe→ ✅ 用这个
依赖安装
"D:/ProgramData/anaconda3/envs/py312_cuda/python.exe" -m pip install faster-whisper ffmpeg-python pyyaml zhconv pypinyin
调用方式
cd .opencode/skills/video-text-clipper
"D:/ProgramData/anaconda3/envs/py312_cuda/python.exe" scripts/extract_by_text_pattern.py --config 配置文件路径.yaml
配置文件格式(YAML)
video_src: "视频文件路径.mp4"
output_dir: "输出目录路径"
# 文本特征配置
text_pattern:
# 特征关键词
keyword: "大"
# 窗口大小(秒):在这个时间窗口内统计关键词出现次数
window_size: 10
# 阈值:窗口内关键词出现次数 >= 阈值 时,认为匹配
threshold: 3
# 片段最小时长(秒)
min_clip_duration: 5
# 片段最大时长(秒)
max_clip_duration: 30
# 相邻片段合并间隔(秒):间隔小于此值的片段合并为一个
merge_gap: 5
# 视频参数
video_params:
fade_duration: 1 # 淡入淡出时长(秒)
title_text: "精华片段" # 片头标题
title_duration: 3 # 标题显示时长(秒)
title_fontsize: 90 # 标题字号
title_color: FFFF00 # 标题颜色(黄色)
subtitle_fontsize: 24 # 字幕字号
subtitle_color: FFFFFF # 字幕颜色(白色)
whisper_model: large # Whisper模型
use_fast_whisper: true # 使用GPU加速
whisper_model_path: "D:/AI/LM-Models/faster-whisper/large-v3"
工作流程
1. 全视频转录
- 将视频分段(每5分钟一段)转录
- 输出带时间戳的JSON转录文件
2. 文本特征匹配
- 扫描所有转录文本,统计关键词出现频率
- 使用滑动窗口检测关键词密集区域
- 自动合并相邻的匹配区域
3. 片段提取
- 根据匹配的时间点提取视频片段
- 每个片段添加1秒淡入 + 1秒淡出
4. 视频合成
- 片头标题:3秒90号黄色大字(带4px黑边),画面居中
- 字幕:底部24号白字黑边
- 转场:片段间1秒淡入淡出
- 输出:vN_final.mp4
输出文件结构
<项目目录>/
├── output/
│ ├── v1_final.mp4 # 最终视频
│ ├── subs/
│ │ └── v1_ai.srt # AI纠正后的字幕
│ └── intermediates/
│ ├── clip1.mp4 # 原始片段
│ ├── clip1_fade.mp4 # 带淡入淡出的片段
│ ├── full_transcript.json # 完整转录
│ └── concated.mp4 # 合并后的片段
└── config.yaml
已知限制
- Python版本限制:Python 3.13不支持CUDA版PyTorch,必须使用3.11/3.12
- GPU依赖:必须使用GPU加速,CPU转录速度慢10倍以上
- 转录精度:Whisper对音乐术语可能有识别误差
- 文本特征:特征关键词需要根据实际转录结果调整阈值