mcpField
V
video-production

video-production

github.com/casper-studios创意与媒体15276 次安装8 周前更新
代码仓库

关于 video-production

用于将课程的单节视频组装为完整视频的工作流指南,面向课程制作者和视频处理者。它可从 Google Drive 获取素材,添加标题页、拼接视频,并生成 YouTube 时间戳说明;处理过程在本地进行。

主要功能

  1. 01从 Google Drive 下载视频
  2. 02提取标题并读取视频元数据
  3. 03生成课程标题页
  4. 04使用 FFmpeg 拼接片段
  5. 05生成时间戳和 YouTube 说明

适用场景

  1. 01将课程单节视频合并为完整课程
  2. 02为课程视频添加标题页和章节时间戳

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/casper-studios/casper-marketplace --skill video-production

安装后在 Claude Code 中输入/video-production确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
ffmpeg.md
title-slides.md
workflow.md
youtube-description.md
scripts/
create_title_slides.py
gdrive_video_download.py
generate_youtube_description.py
stitch_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

管道步骤

  1. 下载 - 从 Drive 文件夹获取所有视频
  2. 解析标题 - 从 [e1] Intro 格式中提取简洁名称
  3. 获取元数据 - 使用 FFprobe 获取时长和分辨率
  4. 生成幻灯片 - 为每节课生成标题卡片
  5. 构建拼接列表 - video1 → slide2 → video2 → ...
  6. 使用 FFmpeg 拼接 - 将所有片段合并
  7. 计算时间戳 - 跟踪累计时长
  8. 生成说明 - 生成适用于 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 **使用场景:**端到端组装课程视频 流程:

  1. 从 Google Drive 文件夹下载课程视频
  2. 生成标题页并将所有视频拼接在一起
  3. 将最终视频上传回 Drive,并生成 YouTube 描述
从文字稿生成时间戳

技能: transcript-search → video-production **使用场景:**根据会议录制内容生成 YouTube 描述 流程:

  1. 搜索相关会议的文字稿
  2. 从文字稿中提取主题时间戳
  3. 生成带章节标记的格式化 YouTube 描述
从内容生成标题页

技能: content-generation → video-production **使用场景:**为视频创建品牌标题卡片 流程:

  1. 使用 content-generation 生成标题页图像
  2. 以兼容视频的格式导出幻灯片
  3. 在视频片段之间插入标题页

评论

支持 Markdown