短视频生成工具

一个开源的自动化短视频生成工具,结合文本转语音、自动字幕、背景视频和音乐,从简单文本输入创建吸引人的短视频内容。

  • by gyoridavid
  • TypeScript
  • 本地部署
  • 1443 星标
  • 更新于
在 GitHub 查看 gyoridavid/short-video-maker

使用说明

📚 加入我们的Skool社区,获得支持、优质内容等!

成为不断发展的社区的一员,帮助我们创建更多这样的内容

描述

一个用于生成短视频内容的开源自动视频创建工具。Short Video Maker将文本转语音、自动字幕、背景视频和音乐相结合,通过简单的文本输入创建引人入胜的短视频。

该项目旨在提供一个免费的替代方案,以取代大量的GPU耗电视频生成(以及昂贵的第三方API调用的免费替代方案)。它不会根据图像或图像提示从头开始生成视频。

该存储库由AI代理A-Z Youtube频道。我们鼓励您查看该频道,了解更多与人工智能相关的内容和教程。

服务器公开了一个 主控程序 以及REST服务器。

虽然MCP服务器可以与AI代理(如n8n)一起使用,但REST端点为视频生成提供了更大的灵活性。

您可以找到使用REST/MCP服务器创建的示例n8n工作流 在此存储库中.

目录

入门

用法

信息

n8n教程

例子

特性

  • 根据文本提示生成完整的短视频
  • 文本到语音转换
  • 自动字幕生成和样式
  • 通过Pexels搜索和选择背景视频
  • 带有流派/情绪选择的背景音乐
  • 同时作为REST API和模型上下文协议(MCP)服务器

运作原理

Shorts Creator只需要简单的文本输入和搜索词,然后:

  1. 使用Kokoro TTS将文本转换为语音
  2. 通过Whisper生成准确的字幕
  3. 从Pexels中查找相关背景视频
  4. 使用Remotion组合所有元素
  5. 呈现具有完美定时字幕的专业外观短视频

局限性

  • 该项目只能生成带有英语配音的视频(kokoro js目前不支持其他语言)
  • 背景视频来源于Pexels

通用要求

  • 互联网
  • 免费pexels api密钥
  • ≥3 gb的可用RAM,我建议使用4 gb的RAM
  • ≥2 vCPU
  • ≥5gb磁盘空间

概念

场景

每个视频都是由多个场景组合而成的。这些场景包括

  1. 文本:叙述,TTS将阅读并创建标题的文本。
  2. 搜索术语:服务器应该使用关键字来查找Pexels API的视频。如果找不到,则使用笑话术语(nature, globe, space, ocean)

入门

Docker(推荐)

有三个docker镜像,用于三种不同的用例。一般来说,大多数时候你想旋转 tiny 一个。

微小

  • 使用 tiny.en whisper.cpp模型
  • 使用 q4 量化kokoro模型
  • CONCURRENCY=1 以有限的资源克服Remotion带来的OOM错误
  • VIDEO_CACHE_SIZE_IN_BYTES=2097152000 (2gb)以有限的资源克服来自远程处理的OOM错误
docker run -it --rm --name short-video-maker -p 3123:3123 -e LOG_LEVEL=debug -e PEXELS_API_KEY= gyoridavid/short-video-maker:latest-tiny

正常

  • 使用 base.en whisper.cpp模型
  • 使用 fp32 科科罗模型
  • CONCURRENCY=1 以有限的资源克服Remotion带来的OOM错误
  • VIDEO_CACHE_SIZE_IN_BYTES=2097152000 (2gb)以有限的资源克服来自远程处理的OOM错误
docker run -it --rm --name short-video-maker -p 3123:3123 -e LOG_LEVEL=debug -e PEXELS_API_KEY= gyoridavid/short-video-maker:latest

库达

如果你拥有一个Nvidia GPU,并且你想使用一个更大的带有GPU加速的耳语模型,你可以使用CUDA优化的Docker镜像。

  • 使用 medium.en whisper.cpp模型(带GPU加速)
  • 用途 fp32 科科罗模型
  • CONCURRENCY=1 以有限的资源克服Remotion带来的OOM错误
  • VIDEO_CACHE_SIZE_IN_BYTES=2097152000 (2gb)以有限的资源克服来自远程处理的OOM错误
docker run -it --rm --name short-video-maker -p 3123:3123 -e LOG_LEVEL=debug -e PEXELS_API_KEY= --gpus=all gyoridavid/short-video-maker:latest-cuda

Docker编写

您可能会使用Docker Compose来运行n8n或其他服务,并希望将它们组合在一起。确保将共享网络添加到服务配置中。

version: "3"

services:
  short-video-maker:
    image: gyoridavid/short-video-maker:latest-tiny
    environment:
      - LOG_LEVEL=debug
      - PEXELS_API_KEY=
    ports:
      - "3123:3123"
    volumes:
	    - ./videos:/app/data/videos # expose the generated videos

如果您正在使用 自托管AI入门套件 您想添加 networks: ['demo'] 到** short-video-maker 服务,这样你就可以用http://short-video-maker:3123在n8n中。

NPM

虽然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+上测试)

Windows是 非 目前支持(whisper.cpp安装偶尔会失败)。

Web用户界面

@mushitori制作了一个Web UI,用于从浏览器生成视频。

您可以加载它http://localhost:3123

环境变量

🟢配置

关键字 描述 默认值
PEXELS_API_KEY(像素_像素_键) 您的(免费)Pexels API密钥
LOGLEVEL 引脚日志级别 信息
WHISPER_VERBOSE 是否应将WHISPER.cpp的输出转发到stdout false
PORT 服务器将监听的端口 3123

⚙️系统配置

关键字 描述 默认值
KOKORO_MODEL_PRECISION 要使用的KOKORO模型的大小。有效选项包括 fp32, fp16, q8, q4, q4f16 取决于,请参阅上面docker镜像的描述^^
并发性 并发性是指在渲染过程中并行打开的浏览器选项卡的数量。每个Chrome选项卡都会渲染网络内容,然后对其进行截图。调整此值有助于在资源有限的情况下运行项目。 视情况而定,请参阅上面docker镜像的描述^^
视频_CACHE_SIZE_IN_BYTES 缓存 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
DATA_DIR_PATH 项目的数据目录 ~/.ai-agents-az-video-generator 使用npm, /app/data 在Docker镜像中
DOCKER 项目是否在DOCKER容器中运行 true 对于docker镜像,否则 false
DEV 猜猜看! :) false

配置选项

关键字 描述 默认值
paddingBack 结束屏幕,讲述结束后视频应继续播放多长时间(以毫秒为单位)。 0
音乐 背景音乐的情绪。从Get获取可用选项 /api/music-tags 终点。 随机
字幕位置 应呈现字幕的位置。可能的选项: top, center, bottom默认值 bottom
captionBackgroundColor 活动字幕项的背景颜色。 blue
声音 科科罗的声音。 af_heart
orientation 视频方向。可能的选项有 portrait 和 landscape portrait
musicVolume 设置背景音乐的音量。可能的选项有 low medium high 和 muted high

用法

MCP服务器

服务器URL

/mcp/sse

/mcp/messages

可用工具

  • create-short-video 创建短视频-LLM将找出正确的配置。如果你想使用特定的配置,你需要在提示中指定这些配置。
  • get-video-status 有点无用,它是用来检查视频的状态的,但由于人工智能代理在时间概念方面不是很好,你可能最终会使用REST API。

REST API

获取 /health

健康检查端点

curl --location 'localhost:3123/health'
{
    "status": "ok"
}

发布 /api/short-video

curl --location 'localhost:3123/api/short-video' \
--header 'Content-Type: application/json' \
--data '{
    "scenes": [
      {
        "text": "Hello world!",
        "searchTerms": ["river"]
      }
    ],
    "config": {
      "paddingBack": 1500,
      "music": "chill"
    }
}'
{
    "videoId": "cma9sjly700020jo25vwzfnv9"
}

获取 /api/short-video/{id}/status

curl --location 'localhost:3123/api/short-video/cm9ekme790000hysi5h4odlt1/status'
{
    "status": "ready"
}

获取 /api/short-video/{id}

curl --location 'localhost:3123/api/short-video/cm9ekme790000hysi5h4odlt1'

响应:视频的二进制数据。

获取 /api/short-videos

curl --location 'localhost:3123/api/short-videos'
{
    "videos": [
        {
            "id": "cma9wcwfc0000brsi60ur4lib",
            "status": "processing"
        }
    ]
}

删除 /api/short-video/{id}

curl --location --request DELETE 'localhost:3123/api/short-video/cma9wcwfc0000brsi60ur4lib'
{
    "success": true
}

获取 /api/voices

curl --location 'localhost:3123/api/voices'
[
    "af_heart",
    "af_alloy",
    "af_aoede",
    "af_bella",
    "af_jessica",
    "af_kore",
    "af_nicole",
    "af_nova",
    "af_river",
    "af_sarah",
    "af_sky",
    "am_adam",
    "am_echo",
    "am_eric",
    "am_fenrir",
    "am_liam",
    "am_michael",
    "am_onyx",
    "am_puck",
    "am_santa",
    "bf_emma",
    "bf_isabella",
    "bm_george",
    "bm_lewis",
    "bf_alice",
    "bf_lily",
    "bm_daniel",
    "bm_fable"
]

获取 /api/music-tags

curl --location 'localhost:3123/api/music-tags'
[
    "sad",
    "melancholic",
    "happy",
    "euphoric/high",
    "excited",
    "chill",
    "uneasy",
    "angry",
    "dark",
    "hopeful",
    "contemplative",
    "funny/quirky"
]

故障排除

码头工人

服务器需要至少3gb的可用内存。确保为Docker分配足够的RAM。

如果您从Windows并通过wsl2运行服务器,则需要从 wsl实用程序2 -否则从Docker桌面设置。(除非使用run命令指定,否则Ubuntu不会限制资源)。

NPM

确保安装了所有必要的软件包。

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可以加速。

远程操作占用大量CPU 科科罗js 在CPU上运行。

是否有可用于生成视频的UI

否(尚未)

我可以为视频选择与Pexels不同的来源,还是提供我自己的视频

不

该项目可以从图像生成视频吗?

不

视频生成的依赖关系

依赖关系 版本 许可证 目的
移动 ^4.0.286 远程许可证 视频合成和渲染
Whisper CPP v1.5.5 MIT 字幕的语音转文本
FFmpeg ^2.1.3 LGPL/GPL 音频/视频操纵
Kokoro.js ^1.2.0 MIT 文本转语音生成
API Pexels 无 Pexels术语 背景视频

如何做出贡献?

欢迎PR。 请参阅 贡献.md 有关设置本地开发环境的说明文件。

许可证

该项目根据 MIT许可证.

致谢

  • ❤️ 移动 用于程序化视频生成
  • ❤️ 耳语 用于语音转文本
  • ❤️ 像素 用于视频内容
  • ❤️ FFmpeg 用于音频/视频处理
  • ❤️ 心 对于TTS