视频剪辑生成工具

Viral Moment Pipeline 是一款将长YouTube视频转换为短小、可分享片段的工具,支持单人口播脚本生成、高质量语音合成和背景视频循环。

  • by ApoorvBrooklyn
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ApoorvBrooklyn/MCP-Server

使用说明

病毒式传播时刻管道

将长YouTube视频转换为简短、可分享的片段。现在操作更简化:仅支持独白脚本、ElevenLabs语音旁白,并使用仓库中的循环背景音乐 Sample_Video.mp4.

它的功能/作用

  • 从YouTube字幕中检测病毒式传播的瞬间(Gemini)
  • 生成一个人的独白剧本(不包含旁白/音效标签)
  • 生成高质量的旁白(ElevenLabs)
  • 循环 Sample_Video.mp4 匹配音频长度(FFmpeg)并复用音频

要求

  • Python 3.11及以上版本
  • FFmpeg 在路径中(PATH)ffmpeg, ffprobe)
  • API密钥 .env:
    • GOOGLE_API_KEY
    • ELEVENLABS_API_KEY

安装依赖项:

pip install -r requirements.txt

FFmpeg(macOS):

brew install ffmpeg

快速入门

运行Streamlit应用程序:

cd viral-moment-pipeline
streamlit run streamlit_app.py

用户界面中的管道步骤:

  1. 下载音频 → 2) 转录文本 → 3) 寻找片段 → 4) 生成独白 → 5) 使用ElevenLabs添加旁白 → 6) 循环播放 Sample_Video.mp4 并复用音频

结果视频/音频保存在以下位置 generated_videos/ 和 generated_audio/。

它是如何工作的(内部机制)

  • 脚本生成: tools/llm_tool.py 强制输出独白,并对任何标签/提示进行净化处理
  • 旁白: tools/voice_tool.py#create_high_quality_voiceover
  • 视频: tools/video_tool.py#create_looped_video_with_audio 使用FFmpeg进行循环 Sample_Video.mp4 到叙述时长
  • Streamlit 管道已更新,现在默认使用循环视频路径

将媒体排除在Git之外

*.mp4 被忽略了,但如果 Sample_Video.mp4 之前已提交,取消追踪:

git rm --cached viral-moment-pipeline/Sample_Video.mp4
git commit -m "Stop tracking Sample_Video.mp4; ignore media"
git push

故障排除

  • 缺少 ElevenLabs 密钥:请设置 ELEVENLABS_API_KEY 在里面;在...中 .env
  • 未找到FFmpeg:请安装并确保 ffmpeg/ffprobe 在PATH环境变量中

项目结构

viral-moment-pipeline/
├── main.py
├── streamlit_app.py
├── tools/
│   ├── llm_tool.py           # moments + monologue scripts
│   ├── voice_tool.py         # ElevenLabs voiceover
│   └── video_tool.py         # loop Sample_Video.mp4 + mux audio
├── Sample_Video.mp4          # background (kept local, ignored by Git)
├── generated_audio/
└── generated_videos/