关于 video-production
用于将课程的单节视频组装为完整视频的工作流指南,面向课程制作者和视频处理者。它可从 Google Drive 获取素材,添加标题页、拼接视频,并生成 YouTube 时间戳说明;处理过程在本地进行。
主要功能
- 01从 Google Drive 下载视频
- 02提取标题并读取视频元数据
- 03生成课程标题页
- 04使用 FFmpeg 拼接片段
- 05生成时间戳和 YouTube 说明
适用场景
- 01将课程单节视频合并为完整课程
- 02为课程视频添加标题页和章节时间戳
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ casper-studios/ casper-marketplace --skill video-production安装后在 Claude Code 中输入/video-production确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/ffmpeg.mdtitle-slides.mdworkflow.mdyoutube-description.mdscripts/create_title_slides.pygdrive_video_download.pygenerate_youtube_description.pystitch_videos.py详细介绍
视频制作
概述
将各个课程文件与标题页组合成课程视频,并自动生成适用于 YouTube 的时间戳。
快速决策树
What do you need?
│
├── Full course assembly (end-to-end)
│ └── references/workflow.md
│ └── Combines all scripts below
│
├── Download videos from Drive
│ └── Script: scripts/gdrive_video_download.py
│
├── Create title slides
│ └── Script: scripts/create_title_slides.py
│
├── Stitch videos together
│ └── Script: scripts/stitch_videos.py
│
└── Generate YouTube description
└── Script: scripts/generate_youtube_description.py
环境设置
Google Drive OAuth(与 google-workspace 技能相同)。
系统要求
- 已安装 FFmpeg,并已添加到 PATH
- Python 3.9+
完整工作流
# Full course assembly from Drive folder
python scripts/stitch_videos.py \
--folder "https://drive.google.com/drive/folders/xxx" \
--output "Complete Course.mp4" \
--slide-duration 3
管道步骤
- 下载 - 从 Drive 文件夹获取所有视频
- 解析标题 - 从
[e1] Intro格式中提取简洁名称 - 获取元数据 - 使用 FFprobe 获取时长和分辨率
- 生成幻灯片 - 为每节课生成标题卡片
- 构建拼接列表 - video1 → slide2 → video2 → ...
- 使用 FFmpeg 拼接 - 将所有片段合并
- 计算时间戳 - 跟踪累计时长
- 生成说明 - 生成适用于 YouTube 的 Markdown
输出
| 文件 | 描述 |
|---|---|
{output_name}.mp4 | 最终拼接的视频 |
youtube_description.md | 带时间戳的说明 |
metadata.json | 处理信息 |
性能
| 输入 | 用时 | 输出大小 |
|---|---|---|
| 5 个视频(30 分钟) | ~5 分钟 | ~1.5 GB |
| 10 个视频(1 小时) | ~10 分钟 | ~3 GB |
| 20 个视频(2 小时) | ~20 分钟 | ~6 GB |
安全说明
凭据处理
- 用于访问 Drive 的 Google OAuth 凭据(参见 google-workspace 技能)
mycreds.txt和client_secrets.json永远不会提交到 git- 本地视频处理无需其他 API 密钥
数据隐私
- 所有视频均使用 FFmpeg 在本地处理
- 不会将任何视频内容上传到外部云服务
- 从 Google Drive 下载的源视频存放在本地
.tmp/中 - 最终视频会保存在本地,直到手动上传
- 元数据 JSON 仅包含文件名和时间戳
访问范围
- Google Drive:下载所需权限为
drive.readonly - Google Drive:上传最终视频需要
drive权限 - 不使用外部视频处理 API
合规注意事项
- 本地处理:所有编码和拼接均在本地完成(保护隐私)
- 不上传到云端:处理期间视频不会离开你的设备
- 内容权利:确保你拥有源视频内容的使用权
- 课程内容:确认教育内容的分发许可
- YouTube 服务条款:生成的说明符合 YouTube 指南
- 存储空间:大型视频文件需要足够的本地磁盘空间
- 清理:处理完成后,从
.tmp/中删除临时文件
故障排除
常见问题
问题:找不到 FFmpeg
症状:“FFmpeg not found”或“command not found: ffmpeg” **原因:**尚未安装 FFmpeg,或未将其添加到系统 PATH 解决方案:
- 安装 FFmpeg:
brew install ffmpeg(macOS),或从 ffmpeg.org 下载 - 验证安装:
ffmpeg -version - 如果 FFmpeg 安装在非标准位置,请将其添加到 PATH
- 安装后重启终端
问题:编解码器不匹配/视频不兼容
**症状:**拼接时出现“Non-monotonous DTS”或编解码器错误 **原因:**源视频使用了不同的编解码器、分辨率或帧速率 解决方案:
- 拼接前将所有源视频重新编码为相同格式
- 使用 FFmpeg 统一格式:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4 - 确保分辨率一致(例如,均为 1920x1080)
- 确保所有视频的帧速率一致(例如,均为 30fps)
问题:音画不同步
**症状:**音频随时间逐渐偏离视频 **原因:**帧速率不一致,或源视频采用可变帧速率 解决方案:
- 所有源视频均使用恒定帧速率
- 使用
-vsync cfr标志重新编码 - 避免混用来自不同来源/设备的视频
- 检查所有文件的音频采样率是否一致
问题:磁盘空间不足
症状:“设备上没有剩余空间”或输出不完整 **原因:**视频处理所需的可用空间不足 解决方案:
- 检查可用磁盘空间:
df -h - 清理
.tmp/目录中的旧文件 - 将大型源视频移至外部驱动器
- 每次处理更少的视频
问题:Google Drive 下载失败
**症状:**无法从 Drive 文件夹下载视频 **原因:**OAuth 问题、权限设置或网络超时 解决方案:
- 验证 Google OAuth 凭据(参见 google-workspace skill)
- 检查文件夹共享权限
- 先尝试下载单个文件进行测试
- 检查是否存在网络连接问题
问题:未生成标题页
**症状:**最终视频中缺少标题卡片 **原因:**字体或图像生成问题 解决方案:
- 确认已安装 ImageMagick 或 Pillow
- 如果指定了自定义字体,检查字体文件是否存在
- 检查标题文本中是否包含特殊字符
- 先尝试使用默认字体设置
资源
- references/workflow.md - 完整的视频课程工作流
集成模式
完整课程流水线
技能: google-workspace → video-production → google-workspace **使用场景:**端到端组装课程视频 流程:
- 从 Google Drive 文件夹下载课程视频
- 生成标题页并将所有视频拼接在一起
- 将最终视频上传回 Drive,并生成 YouTube 描述
从文字稿生成时间戳
技能: transcript-search → video-production **使用场景:**根据会议录制内容生成 YouTube 描述 流程:
- 搜索相关会议的文字稿
- 从文字稿中提取主题时间戳
- 生成带章节标记的格式化 YouTube 描述
从内容生成标题页
技能: content-generation → video-production **使用场景:**为视频创建品牌标题卡片 流程:
- 使用 content-generation 生成标题页图像
- 以兼容视频的格式导出幻灯片
- 在视频片段之间插入标题页