描述
一款用于生成短视频内容的开源自动化视频创作工具。短视频制作器结合了文本转语音、自动字幕、背景视频和音乐,只需简单的文本输入即可制作引人入胜的短视频。
本项目旨在为耗费大量 GPU 算力的视频生成(以及昂贵的第三方 API 调用)提供一个免费的替代方案。它不会根据图像或图像提示从头生成视频。
该代码库由AI Agents AZ Youtube 频道开源。我们鼓励您访问该频道以获取更多与 AI 相关的内容和教程。
该服务器公开一个MCP和一个 REST 服务器。
虽然 MCP 服务器可以与 AI 代理(如 n8n)一起使用,但 REST 端点为视频生成提供了更大的灵活性。
您可以在此存储库中找到使用 REST/MCP 服务器创建的示例 n8n 工作流。
目录
入门
用法
信息
n8n 教程
示例
特征
- 根据文本提示生成完整的短视频
- 文本转语音
- 自动生成字幕和样式
- 通过 Pexels 搜索和选择背景视频
- 具有类型/情绪选择的背景音乐
- 同时充当 REST API 和模型上下文协议 (MCP) 服务器
工作原理
Shorts Creator 接受简单的文本输入和搜索词,然后:
- 使用 Kokoro TTS 将文本转换为语音
- 通过 Whisper 生成准确的字幕
- 从 Pexels 查找相关背景视频
- 使用 Remotion 组合所有元素
- 呈现具有完美定时字幕的专业短视频
限制
- 该项目仅能生成带有英语配音的视频(kokoro-js 目前不支持其他语言)
- 背景视频来自 Pexels
一般要求
- 互联网
- 免费的 Pexels API 密钥
- ≥ 3 GB 可用 RAM,我建议 4 GB RAM
- ≥ 2 个 vCPU
- ≥ 5GB磁盘空间
新公共管理
虽然推荐使用 Docker 来运行项目,但您也可以使用 npm 或 npx 来运行它。除了常规要求外,运行服务器还需要满足以下条件。
支持的平台
- Ubuntu ≥ 22.04(Whisper.cpp 的 libc 2.5)
- 所需软件包:
git wget cmake ffmpeg curl make libsdl2-dev libnss3 libdbus-1-3 libatk1.0-0 libgbm-dev libasound2 libxrandr2 libxkbcommon-dev libxfixes3 libxcomposite1 libxdamage1 libatk-bridge2.0-0 libpango-1.0-0 libcairo2 libcups2
- 所需软件包:
- Mac 操作系统
- ffmpeg(
brew install ffmpeg
) - node.js(已在 22+ 版本上测试)
- ffmpeg(
目前不支持 Windows(whisper.cpp 安装偶尔会失败)。
概念
场景
每个视频由多个场景组成。这些场景包括
- 文本:旁白,TTS 将读取并创建字幕的文本。
- 搜索词:服务器用来从 Pexels API 查找视频的关键词。如果找不到,则会使用一些常用词(例如
nature
、globe
、space
、ocean
)。
入门
Docker(推荐)
有三个 Docker 镜像,分别适用于三种不同的用例。一般来说,大多数情况下,你更倾向于使用tiny
镜像。
微小的
- 使用
tiny.en
whisper.cpp 模型 - 使用
q4
量化 kokoro 模型 CONCURRENCY=1
克服资源有限的 Remotion 造成的 OOM 错误VIDEO_CACHE_SIZE_IN_BYTES=104857600
(100mb)用于克服资源有限的 Remotion 造成的 OOM 错误
普通的
- 使用
base.en
whisper.cpp 模型 - 使用
fp32
kokoro 模型 CONCURRENCY=1
克服资源有限的 Remotion 造成的 OOM 错误VIDEO_CACHE_SIZE_IN_BYTES=104857600
(100mb)用于克服资源有限的 Remotion 造成的 OOM 错误
库达
如果您拥有 Nvidia GPU 并且想要使用具有 GPU 加速的更大的 whisper 模型,则可以使用 CUDA 优化的 Docker 镜像。
- 使用
medium.en
whisper.cpp 模型(带 GPU 加速) - 使用
fp32
kokoro 模型 CONCURRENCY=1
克服资源有限的 Remotion 造成的 OOM 错误VIDEO_CACHE_SIZE_IN_BYTES=104857600
(100mb)用于克服资源有限的 Remotion 造成的 OOM 错误
Docker compose
您可能使用 Docker Compose 运行 n8n 或其他服务,并希望将它们组合起来。请确保将共享网络添加到服务配置中。
如果您正在使用自托管 AI 入门套件,您需要将networks: ['demo']
添加到** short-video-maker
服务,以便您可以通过 n8n 中的http://short-video-maker:3123访问它。
Web 用户界面
@mushitori 制作了一个 Web UI 来从您的浏览器生成视频。
您可以在http://localhost:3123上加载它
环境变量
🟢 配置
钥匙 | 描述 | 默认 |
---|---|---|
PEXELS_API_KEY | 您的(免费)Pexels API 密钥 | |
日志级别 | pino 日志级别 | 信息 |
WHISPER_VERBOSE | whisper.cpp 的输出是否应该转发到 stdout | 错误的 |
港口 | 服务器将监听的端口 | 3123 |
⚙️ 系统配置
钥匙 | 描述 | 默认 |
---|---|---|
KOKORO_模型_精度 | 使用的 Kokoro 模型的大小。有效选项包括fp32 、 fp16 、 q8 、 q4 、 q4f16 | 取决于,请参阅上面的 docker 镜像的描述 ^^ |
并发 | 并发度是指渲染过程中并行打开的浏览器标签页数量。每个 Chrome 标签页都会渲染网页内容,然后进行截图。调整此值有助于在资源有限的情况下运行项目。 | 取决于,请参阅上面的 docker 镜像的描述 ^^ |
视频缓存大小(字节) | 缓存Remotion 中的帧数。调整此值有助于在资源有限的情况下运行项目。 | 取决于,请参阅上面的 docker 镜像的描述 ^^ |
⚠️ 危险区域
钥匙 | 描述 | 默认 |
---|---|---|
WHISPER_MODEL | 使用哪种 whisper.cpp 模型。有效选项包括tiny 、 tiny.en 、 base 、 base.en 、 small 、 small.en 、 medium 、 medium.en 、 large-v1 、 large-v2 、 large-v3 、 large-v3-turbo | 取决于具体情况,请参阅上文中 docker 镜像的描述。对于 npm,默认选项是medium.en |
数据目录路径 | 项目的数据目录 | Docker 镜像中的~/.ai-agents-az-video-generator 和 npm、 /app/data |
DOCKER | 项目是否在 Docker 容器中运行 | 对于 Docker 镜像,则为true ,否则为false |
开发 | 猜测! :) | false |
配置选项
钥匙 | 描述 | 默认 |
---|---|---|
后边距 | 结束画面,旁白结束后视频应继续播放多长时间(以毫秒为单位)。 | 0 |
音乐 | 背景音乐的氛围。从 GET /api/music-tags 端点获取可用选项。 | 随机的 |
标题位置 | 字幕的渲染位置。可选值: top 、 center 、 bottom 。默认值 | bottom |
标题背景颜色 | 活动标题项的背景颜色。 | blue |
嗓音 | 心的声音。 | af_heart |
方向 | 视频方向。可选方向包括portrait 和landscape | portrait |
音乐音量 | 设置背景音乐的音量。可选音量包括low medium high 和muted | high |
用法
MCP 服务器
服务器 URL
/mcp/sse
/mcp/messages
可用工具
create-short-video
创建一个短视频 - LLM 会计算出正确的配置。如果你想使用特定的配置,你需要在提示框中指定。get-video-status
有点没用,它是用来检查视频状态的,但由于 AI 代理不太擅长时间概念,所以你最终可能会使用 REST API 来实现这一点。
REST API
获取/health
健康检查端点
POST /api/short-video
获取/api/short-video/{id}/status
获取/api/short-video/{id}
响应:视频的二进制数据。
获取/api/short-videos
删除/api/short-video/{id}
获取/api/voices
获取/api/music-tags
故障排除
Docker
服务器至少需要 3GB 可用内存。请确保为 Docker 分配足够的 RAM。
如果您在 Windows 上通过 wsl2 运行服务器,则需要从wsl 实用程序 2设置资源限制 - 否则,请从 Docker Desktop 设置。(除非使用运行命令指定,否则 Ubuntu 不会限制资源)。
新公共管理
确保所有必要的软件包都已安装。
n8n
设置 MCP(或 REST)服务器取决于您运行 n8n 和服务器的方式。请遵循以下矩阵中的示例。
|n8n 正在本地运行,使用n8n start
|n8n 使用 Docker 在本地运行|n8n 在云端运行|
|---|---|---|---|
|short-video-maker
正在本地 Docker 中运行|http://localhost:3123
|视情况而定。技术上来说,你可以使用http://host.docker.internal:3123
因为它指向主机,但你也可以配置使用同一个网络,并使用服务名称进行通信,例如http://short-video-maker:3123
|无法工作 - 将short-video-maker
部署到云端|
|short-video-maker
正在使用 npm/npx 运行|http://localhost:3123
|http://host.docker.internal:3123
|无法工作 - 将short-video-maker
部署到云端|
|short-video-maker
正在云端运行|您应该使用您的 IP 地址http://{YOUR_IP}:3123
|您应该使用您的 IP 地址http://{YOUR_IP}:3123
|您应该使用您的 IP 地址http://{YOUR_IP}:3123
|
部署到云端
虽然每个 VPS 提供商都不同,并且不可能为所有提供商提供配置,但这里有一些提示。
- 使用 Ubuntu ≥ 22.04
- 拥有≥ 4gb RAM、≥ 2vCPU 和≥5gb 存储空间
- 使用pm2运行/管理服务器
- 将环境变量放入
.bashrc
文件(或类似文件)
常问问题
我可以使用其他语言吗?(法语、德语等)
很遗憾,目前还无法实现。Kokoro-js 仅支持英语。
我可以传递图像和视频吗?它可以将它们拼接在一起吗?
不
我应该使用npm
还是docker
运行该项目?
Docker 是运行该项目的推荐方式。
视频生成使用了多少 GPU?
老实说,没有太多——只有 whisper.cpp 可以加速。
Remotion 占用大量 CPU 资源,而Kokoro-js 则在 CPU 上运行。
是否有可用于生成视频的 UI
还没有)
我可以选择与 Pexels 不同的视频来源,或者提供我自己的视频
不
该项目可以从图像生成视频吗?
不
视频生成的依赖项
依赖关系 | 版本 | 执照 | 目的 |
---|---|---|---|
移除 | ^4.0.286 | 移动许可证 | 视频合成和渲染 |
耳语CPP | v1.5.5 | 麻省理工学院 | 语音转文字字幕 |
FFmpeg | ^2.1.3 | LGPL/GPL | 音频/视频处理 |
Kokoro.js | ^1.2.0 | 麻省理工学院 | 文本转语音生成 |
Pexels API | 不适用 | Pexels 条款 | 背景视频 |
如何贡献?
欢迎提交 PR。有关设置本地开发环境的说明,请参阅CONTRIBUTING.md文件。
执照
该项目已获得MIT 许可。
致谢
Related MCP Servers
- Gozlib License
- PythonMIT License
- PythonMIT License
- TypeScriptMIT License