环境配置指南:安装 FFmpeg 与配置 API
本文将带你一步步构建一个完整的 AI 视频自动化管线,使用 n8n、ComfyUI、FFmpeg、Google Gemini 和 Azure TTS 自动将一段短故事转化为配音+动画的吉卜力风格视频,并最终自动发布至 YouTube。
👉 立即获取可直接使用的 n8n 工作流模板:点击下载 Gumroad 模板
为确保本工作流能正确运行,您需要对 n8n 的部署环境进行一些关键配置。由于工作流依赖于外部服务,请遵循以下步骤操作。
1. 为 n8n 安装 FFmpeg (通过自定义 Docker 镜像)
官方的 n8n Docker 镜像默认不包含 FFmpeg。因此,我们需要构建一个自定义镜像来添加它。这是 Execute Command
节点成功运行 ffmpeg
命令的前提条件。
第一步:创建 Dockerfile
在您 docker-compose.yml
文件所在的同一目录下,创建一个名为 Dockerfile
的新文件,并添加以下内容:
# 使用一个特定的 n8n 版本作为基础镜像,以确保稳定性
FROM n8nio/n8n:1.99.0
# 切换到 root 用户以获取安装软件的权限
USER root
# 使用 apk 包管理器安装 ffmpeg。--no-cache 选项可以减小最终镜像的体积
RUN apk add --no-cache ffmpeg
# 切换回非特权的 node 用户,这是 n8n 安全运行的推荐方式
USER node
说明: 此文件定义了如何在标准的 n8n 镜像之上安装 FFmpeg 软件包。
💡 如果你想跳过配置过程,优先试用一个已配置好的完整项目,可以直接下载本项目预设工作流
第二步:修改 docker-compose.yml
文件
接下来,编辑您的 docker-compose.yml
文件,使其使用我们刚刚创建的 Dockerfile
来构建镜像,而不是直接从 Docker Hub 拉取。
修改 services
下的 n8n
服务,添加 build
指令:
services:
n8n:
# 使用 build 指令来构建自定义镜像
build:
context: . # context: . 表示 Dockerfile 在当前目录
dockerfile: Dockerfile
# container_name 和 image 是可选的,但有助于管理
container_name: n8n-custom-ffmpeg
image: my-n8n-with-ffmpeg:latest
restart: always
ports:
- "5678:5678"
env_file:
- .env
volumes:
- n8n_data:/home/node/.n8n
# ... 其他配置保持不变 ...
volumes:
n8n_data:
说明: 当您运行
docker-compose up --build
时,Docker Compose 会首先根据Dockerfile
构建一个名为my-n8n-with-ffmpeg:latest
的新镜像,然后使用这个包含了 FFmpeg 的新镜像来启动 n8n 服务。
2. 配置 ComfyUI 服务器地址
您的 n8n 工作流需要知道 ComfyUI 服务器的地址才能向其发送请求。使用环境变量是配置此项的推荐方式,因为它更灵活、更安全。
推荐方法:使用 .env
文件
-
确认
docker-compose.yml
配置: 确保您docker-compose.yml
文件中的n8n
服务部分包含了env_file: - .env
这一行。 -
创建或编辑
.env
文件: 在与docker-compose.yml
相同的目录下,创建一个名为.env
的文件(如果尚不存在),并添加以下内容,请将 URL 替换为您的实际地址:
# .env 文件
# 将此 URL 替换为您的 ComfyUI 实例的访问地址
COMFYUI_BASE_URL_1=http://your-comfyui-server-ip:8188
# ... 其他环境变量 ...
工作原理: n8n 启动时,会自动加载
.env
文件中的所有变量。工作流中的表达式{{ $env.COMFYUI_BASE_URL_1 }}
随后便能成功读取到这个地址。
3. 配置 API 凭证
本工作流需要调用多个外部服务的 API。请前往您 n8n 实例的 Credentials 部分,为以下服务创建并配置凭证。
设置 Google Gemini API 密钥
- 用途: 用于故事生成、场景拆解和创建视频提示词。
- 操作:
- 在 n8n 中,选择新建凭证。
- 搜索并选择 “Google Gemini (PaLM) API”。
- 按提示输入您的 API 密钥。
- 参考文档: https://docs.n8n.io/integrations/builtin/credentials/google/
设置 YouTube API 凭证
- 用途: 用于将最终合成的视频自动上传到您的 YouTube 频道。
- 操作:
- 在 n8n 中,选择新建凭证。
- 搜索并选择 “YouTube OAuth2 API”。
- 这需要您在 Google Cloud Console 中创建一个项目,启用 YouTube Data API v3,并获取 OAuth 2.0 客户端 ID 和密钥。
- 参考文档: https://docs.n8n.io/integrations/builtin/credentials/google/
设置 Azure TTS API 凭证
- 用途: 用于将文本旁白和对话转换为高质量的语音。
- 操作:
- 在 n8n 中,选择新建凭证。
- 搜索并选择 “Microsoft Azure Speech API”。
- 您需要在 Azure 门户中创建一个“语音服务”资源,以获取所需的订阅密钥和区域。
- 参考文档: https://docs.n8n.io/integrations/builtin/credentials/microsoft-azure-speech/
4. 如何使用您自己的 ComfyUI 工作流
Set Workflow Payload
节点是视频生成的“蓝图”。您可以将它内部的 JSON 内容替换为您自己在 ComfyUI 中创建的任何工作流。请遵循以下步骤:
第一步:在 ComfyUI 中准备并导出您的工作流
- 设计并调试:首先,请确保您的工作流在 ComfyUI 界面中可以无错误地正常运行。这是最重要的一步,可以避免后续很多问题。
- 导出 API 格式:在 ComfyUI 的侧边栏菜单中,点击 “Save (API Format)” 按钮。这会下载一个
.json
文件,其中包含了您的工作流的 API 调用格式。 - 复制内容:用文本编辑器(如 VS Code 或记事本)打开这个下载的
.json
文件,并复制其全部内容。
第二步:替换 n8n 节点中的内容
- 找到节点:在 n8n 中,点开
Set Workflow Payload
这个节点。 - 清空并粘贴:将其
JSON Output
字段中现有的全部 JSON 代码删除,然后将您刚刚从文件中复制的新代码粘贴进去。
第三步:重新连接动态提示词 (最关键的一步!)
当您粘贴自己的工作流后,原来动态接收提示词的连接会断开,您需要手动将其重新连接。
- 找到您的“正面提示词”节点:在您刚刚粘贴进来的新 JSON 代码中,找到负责处理正面提示词 (Positive Prompt) 的那个
CLIPTextEncode
节点。它的class_type
应该是CLIPTextEncode
。- 提示:它通常会连接到一个 KSampler 节点的
positive
输入上。
- 提示:它通常会连接到一个 KSampler 节点的
- 修改
text
字段:在这个节点内部,找到inputs
对象里的text
字段。它现在可能是一个固定的、写死的提示词,例如"text": "a beautiful landscape"
。 - 将其替换为 n8n 表达式:将这个写死的文本精确地替换为以下 n8n 表达式:
{{ $json.output.video_prompt }}
修改前 (Before):
"6": {
"inputs": {
"text": "a cat sitting on a bench, best quality", // <-- 这是您在 ComfyUI 中写的固定文本
"clip": [ "38", 0 ]
},
"class_type": "CLIPTextEncode"
},
修改后 (After):
"6": {
"inputs": {
"text": "{{ $json.output.video_prompt }}", // <-- 修改为此表达式
"clip": [ "38", 0 ] // 确保 clip 的连接保持不变
},
"class_type": "CLIPTextEncode"
},
请注意,您的节点编号(如 "6"
或 "38"
)可能会有所不同,这取决于您自己的工作流结构。核心是找到正确的 CLIPTextEncode
节点并修改它的 text
输入。
完成以上三个步骤后,您的 n8n 工作流现在就会调用您自己的 ComfyUI 设计来生成视频了。
🚀 想直接体验?
如果你希望立即测试这个 AI 视频生成流程,无需从零搭建环境,可以使用我们打包好的 n8n 工作流,包含完整的节点、参数配置和集成逻辑。
5. 调试与优化技巧
处理缓慢的 ComfyUI 生成过程
在 GPU 性能较低的机器上,ComfyUI 的视频生成可能非常耗时,这会严重影响后续流程(如视频/音频合并、上传等)的调试效率。这里有两种方法可以加快调试过程:
-
方法一:使用固定的测试视频 (默认禁用) 在工作流中,我们预先配置了两个用于下载横向和纵向测试视频的节点。您可以禁用 ComfyUI 生成流程,并启用其中一个下载节点,以快速获取视频样本进行测试。
-
方法二:仅生成第一个场景 如果您想测试完整的端到端流程(从 AI 生成到最终上传),但又不想等待所有场景都生成完毕,这是一个绝佳的折中方案。
- 找到 Debug a data entry 节点:这是一个
Code
节点,默认处于禁用状态。 - 激活此节点:右键点击该节点并选择 “Activate”。
工作原理: 这个节点的功能非常简单:它接收 AI 生成的场景数组,并只保留第一个。因此,所有后续流程(视频生成、音频生成、合并等)将只为这一个场景运行一次。这极大地缩短了整个工作流的测试时间,让您能快速验证整体逻辑。调试完毕后,请记得再次禁用此节点,以便生成完整的视频。
- 找到 Debug a data entry 节点:这是一个
时间校准
在本工作流中,Extract Scenes & Dialogue 节点在其系统提示中,要求生成的对话文本对应大约 8 秒 的朗读时间。因此,在您的 ComfyUI 工作流设置中,生成的视频时长最好也与之匹配(例如,通过设置合适的帧数),以避免在最终合并时出现视频和音频长度不匹配的情况。
完成以上所有配置后,重启您的 n8n 容器 (docker-compose up -d --build
),您的环境就准备就绪了。
📬 关注我获取更多资讯

