短视频生成器
一个开源的自动化视频创作工具,用于生成短视频内容。短视频生成器结合了文本转语音、自动字幕、背景视频和音乐,能够从简单的文本输入中生成引人入胜的短视频。
硬件要求
- CPU:建议至少 2 核
- RAM:至少需要 2 GB,建议 4 GB。使用 Docker 时,可以通过
CONCURRENCY
环境变量限制内存使用(见下文)
- GPU:可选,可以显著加快字幕生成速度(Whisper.cpp)并略微加快视频渲染速度
软件要求
使用
npx
运行时需要:- ffmpeg
- build-essential、git、cmake、wget(用于构建 Whisper.cpp)
观看官方视频:如何使用 n8n 生成视频
运行项目
使用 NPX(推荐)
这是最简单的方式,支持 GPU 开箱即用:
使用 Docker
[!IMPORTANT] 为避免内存问题,我已将用于渲染的 Chrome 标签页并发数限制为 1。如果您有更多内存,可以尝试找到适合您机器/VPS 的最佳配置。
CPU 镜像
为了提高性能,我已将 Whisper 模型设置为
base.en
。该模型比 medium.en
更小、更快,但准确性稍低。使用 2 个 vCPU 时,Kokoro 生成 10 秒音频大约需要 7 秒,Whisper 生成一个场景的字幕大约需要 2 秒。
NVIDIA GPU
获取帮助
环境变量
变量 | 描述 |
PEXELS_API_KEY | 用于背景视频源的 Pexels API 密钥 |
PORT | API/MCP 服务器的端口(默认:3123) |
LOG_LEVEL | 服务器的日志级别(默认:info,选项:trace, debug, info, warn, error) |
WHISPER_VERBOSE | Whisper 的详细模式(默认:false) |
CONCURRENCY | 用于渲染视频的 Chrome 标签页数量。用于限制 Docker 容器中的内存使用(默认:未定义) |
VIDEO_CACHE_SIZE_IN_BYTES | 帧的缓存 - 用于防止 Docker 镜像中的内存相关崩溃(默认:未定义) |
示例
功能
- 从文本提示生成完整的短视频
- 文本转语音
- 自动生成并样式化字幕
- 通过 Pexels 搜索和选择背景视频
- 支持按流派/情绪选择背景音乐
- 同时作为 REST API 和模型上下文协议(MCP)服务器
工作原理
短视频生成器接收简单的文本输入和搜索词,然后:
- 使用 Kokoro TTS 将文本转换为语音
- 通过 Whisper 生成准确的字幕
- 从 Pexels 查找相关背景视频
- 使用 Remotion 组合所有元素
- 渲染出带有完美同步字幕的专业短视频
视频生成的依赖项
依赖项 | 版本 | 许可证 | 用途 |
^4.0.286 | 视频合成与渲染 | ||
v1.5.5 | MIT | 字幕的语音转文本 | |
^2.1.3 | LGPL/GPL | 音频/视频处理 | |
^1.2.0 | MIT | 文本转语音生成 | |
N/A | 背景视频 |
如何贡献?
欢迎提交 PR。有关如何设置本地开发环境的说明,请参阅 CONTRIBUTING.md 文件。
API 使用
REST API
提供以下 REST 端点:
GET /api/short-video/:id
- 按 ID 获取视频,也可以通过以下方式下载:
curl -o output.mp4 http://localhost:3123/api/short-video/<videoId>
POST /api/short-video
- 创建新视频
DELETE /api/short-video/:id
- 按 ID 删除视频
GET /api/music-tags
- 获取可用的音乐标签
模型上下文协议 (MCP)
该服务还实现了模型上下文协议:
GET /mcp/sse
- MCP 的服务器发送事件
POST /mcp/messages
- 向 MCP 服务器发送消息
可用的 MCP 工具:
create-short-video
- 从场景列表创建视频
get-video-status
- 检查视频创建状态
许可证
该项目基于 MIT 许可证 授权。
致谢
- ❤️ Remotion - 用于程序化视频生成
- ❤️ Whisper - 用于语音转文本
- ❤️ Pexels - 用于视频内容
- ❤️ FFmpeg - 用于音频/视频处理
- ❤️ Kokoro - 用于文本转语音
- Author:waytomcp
- URL:https://www.waytomcp.com/article/ElMALIHI/svm
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!