博客 / 詳情

返回

n8n整合ffmpeg

背景

n8n-ffmpeg

這是一個為 n8n 工作流自動化平台集成 FFmpeg 功能的 Docker 鏡像項目。通過此項目,您可以在 n8n 中使用 FFmpeg 進行音視頻處理、轉碼、分析等多媒體操作。

  • 項目:with-ffmpeg
  • 成品:docker pull skyjilygao/n8n-with-ffmpeg:1.122.5-20251216154621

    • 可以直接用現成鏡像執行即可

📋 項目背景

隨着短視頻和內容創作需求爆發式增長,企業急需將專業的音視頻處理能力集成到自動化工作流中。然而 FFmpeg 命令複雜、學習成本高,缺乏可視化操作界面。n8n-ffmpeg 項目應運而生,通過將 FFmpeg 集成到 n8n 平台,讓媒體處理變得簡單高效,助力企業數字化轉型。

項目概述

本項目基於官方 n8n 鏡像(1.122.5),集成了 FFmpeg 7.0.2 靜態編譯版本,提供了完整的音視頻處理能力。適用於需要在 n8n 工作流中進行媒體文件處理的各種場景。

主要特性

🎬 FFmpeg 功能

  • 音視頻轉碼: 支持各種格式之間的轉換
  • 視頻處理: 剪輯、合併、添加水印、調整分辨率等
  • 音頻處理: 提取、合併、轉換音頻格式
  • 媒體分析: 獲取媒體文件詳細信息
  • VMAF 支持: 包含完整的 VMAF 模型庫,用於視頻質量評估

🐳 Docker 集成

  • 基於官方 n8n 鏡像構建
  • 中國時區配置 (Asia/Shanghai)
  • 優化的容器配置
  • 支持外部數據卷持久化

📊 VMAF 模型庫

包含完整的 VMAF (Video Multimethod Assessment Fusion) 模型庫:

  • 標準模型: vmaf_v0.6.1, vmaf_b_v0.6.3 等
  • 4K 模型: vmaf_4k_v0.6.1, vmaf_4k_rb_v0.6.2 等
  • 浮點模型: vmaf_float 系列
  • Netflix 模型: 多種 Netflix 訓練模型

快速開始

前提條件

  • Docker 和 Docker Compose 已安裝
  • 可用的域名和 SSL 證書(用於生產環境)

1. 克隆項目

git clone <項目地址>
cd n8n-ffmpeg

2. 構建鏡像

./build-image.sh
# 或docker build -t n8n-with-ffmpeg:latest .
腳本説明:build-image.sh

3. 啓動服務

./restart.sh
# 或 docker-compose up -d
腳本説明:restart.sh

4. 使用便捷腳本

項目提供了幾個便捷的 shell 腳本來簡化容器管理:

🔨 構建鏡像腳本 (build-image.sh)

自動化構建新鏡像並更新 docker-compose.yml 文件:

./build-image.sh

功能特點:

  • 自動構建帶有時間戳標籤的鏡像
  • 備份原有的 docker-compose.yml 文件
  • 智能替換鏡像名稱(支持變量和直接引用格式)
  • 驗證 docker-compose 文件語法
  • 自動清理舊鏡像(保留最新3個)

構建過程:

  1. 檢查必要文件是否存在
  2. 構建新的 Docker 鏡像(格式:n8n-with-ffmpeg:1.122.5-YYYYMMDDhhmmss
  3. 備份當前的 docker-compose.yml 文件
  4. 更新 docker-compose.yml 中的鏡像引用
  5. 驗證配置文件語法
  6. 提供部署和清理指導
🔄 重啓腳本 (restart.sh)

快速重啓 n8n 容器:

./restart.sh

執行流程:

  • 停止當前運行的容器
  • 等待1秒確保完全停止
  • 重新啓動容器
⏹️ 停止腳本 (stop.sh)

停止 n8n 容器:

./stop.sh

功能:

  • 優雅地停止 n8n 容器
  • 釋放相關資源

5. 訪問 n8n

打開瀏覽器訪問 http://localhost:5678 即可使用 n8n。

配置説明

Docker Compose 配置

version: '3.8'

services:
  n8n:
    image: n8n-with-ffmpeg:1.122.5-20251208182708
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      # 本地化配置
      - N8N_DEFAULT_LOCALE=zh-CN
      - GENERIC_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
      
      # URL 配置
      - N8N_EDITOR_BASE_URL=https://your-domain.com
      - WEBHOOK_URL=https://your-domain.com/
      - N8N_HOST=your-domain.com
      
      # 性能優化
      - N8N_DEFAULT_BINARY_DATA_MODE=filesystem
      - N8N_RUNNERS_ENABLED=false
      
      # 日誌配置
      - LOG_LEVEL=debug
      - N8N_LOG_OUTPUT_FORMATTER=simple
      
    volumes:
      - n8n_data:/home/node/.n8n
      - /your/path/files:/home/node/files
    shm_size: '256mb'

環境變量説明

變量名 説明 默認值
N8N_DEFAULT_LOCALE 默認語言 zh-CN
GENERIC_TIMEZONE 時區設置 Asia/Shanghai
TZ 系統時區 Asia/Shanghai
N8N_EDITOR_BASE_URL n8n 編輯器基礎 URL -
WEBHOOK_URL Webhook 基礎 URL -
N8N_HOST n8n 主機名 -
N8N_DEFAULT_BINARY_DATA_MODE 二進制數據存儲模式 filesystem
LOG_LEVEL 日誌級別 debug

使用示例

在 n8n 中使用 FFmpeg

1. 執行節點中使用 FFmpeg

在 Execute Command 節點中,您可以直接使用 ffmpeg 命令:

# 獲取視頻信息
ffmpeg -i input.mp4

# 轉換視頻格式
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4

# 提取音頻
ffmpeg -i input.mp4 -vn -acodec copy output.aac

# 調整視頻分辨率
ffmpeg -i input.mp4 -vf scale=1280:720 output_720p.mp4
2. 使用 VMAF 進行視頻質量評估
# 使用 VMAF 模型比較兩個視頻的質量
ffmpeg -i reference.mp4 -i distorted.mp4 -lavfi "libvmaf=model_path=/usr/local/share/model/vmaf_v0.6.1.pkl" -f null -
3. 批量處理示例
# 批量轉換目錄中的所有視頻文件
for file in *.mov; do
  ffmpeg -i "$file" -c:v libx264 -c:a aac "${file%.mov}.mp4"
done

文件結構

n8n-ffmpeg/
├── Dockerfile                    # Docker 鏡像構建文件
├── docker-compose.yml          # Docker Compose 配置文件
├── build-image.sh             # 智能構建鏡像腳本
├── restart.sh                 # 快速重啓容器腳本
├── stop.sh                    # 停止容器腳本
├── ffmpeg-7.0.2-amd64-static/  # FFmpeg 靜態編譯版本
│   ├── ffmpeg                   # FFmpeg 可執行文件
│   ├── ffprobe                  # FFprobe 可執行文件
│   ├── manpages/               # 幫助文檔
│   └── model/                  # VMAF 模型庫
└── README.md                   # 項目説明文檔

便捷腳本使用指南

本項目提供了三個實用的 shell 腳本,用於簡化容器管理操作:

🔨 build-image.sh - 智能構建腳本

這是最強大的腳本,自動化了整個鏡像構建和部署流程。

使用方法:

chmod +x build-image.sh  # 確保腳本有執行權限
./build-image.sh

腳本功能詳解:

  1. 環境檢查:驗證 Dockerfile 和 docker-compose.yml 文件存在
  2. 鏡像構建:創建帶時間戳標籤的新鏡像
  3. 自動備份:為 docker-compose.yml 創建帶時間戳的備份
  4. 智能替換:自動更新 docker-compose.yml 中的鏡像引用
  5. 語法驗證:確保更新後的配置文件語法正確
  6. 清理建議:提供清理舊鏡像的命令

輸出示例:

🎯 Building new image: n8n-with-ffmpeg:1.122.5-20241216153045
✅ Image built successfully.
🔍 Verifying built image:
REPOSITORY          TAG                           IMAGE ID       SIZE
n8n-with-ffmpeg     1.122.5-20241216153045        abc123def456   1.23GB
💾 Backup saved as: docker-compose.yml.bak.20241216153045
🔍 Step 3/5: Previewing change...
--- docker-compose.yml
+++ docker-compose.yml
@@ -1,5 +1,5 @@
 services:
   n8n:
-    image: n8n-with-ffmpeg:1.122.5-20241216150000
+    image: n8n-with-ffmpeg:1.122.5-20241216153045
✅ Compose file is valid and ready to deploy.

🔄 restart.sh - 快速重啓腳本

用於快速重啓 n8n 容器,常用於配置更新後。

使用方法:

chmod +x restart.sh
./restart.sh

執行過程:

stop...
[+] Running 2/2
 ✔ Container n8n  Stopped
start...
[+] Running 2/2
 ✔ Container n8n  Started

⏹️ stop.sh - 容器停止腳本

優雅地停止 n8n 容器服務。

使用方法:

chmod +x stop.sh
./stop.sh

執行結果:

stop...
[+] Running 2/2
 ✔ Container n8n  Stopped

💡 腳本使用最佳實踐

  1. 定期構建:建議定期運行 build-image.sh 獲取最新的安全更新
  2. 重啓策略:配置更新後使用 restart.sh 而不是手動操作
  3. 備份管理:build-image.sh 會自動創建備份,但建議定期清理舊備份
  4. 權限設置:首次使用時確保腳本有執行權限 (chmod +x *.sh)

🛠️ 故障排除

腳本執行權限問題:

# 如果提示權限不足
chmod +x build-image.sh restart.sh stop.sh

Docker 命令未找到:

# 確保 Docker 和 Docker Compose 已正確安裝
docker --version
docker compose version

構建失敗:

  • 檢查 Dockerfile 是否存在且語法正確
  • 確認網絡連接正常(需要下載基礎鏡像)
  • 查看詳細的錯誤信息輸出

性能優化建議

1. 資源配置

  • 內存: 建議分配至少 2GB 內存用於媒體處理
  • 共享內存: 設置 shm_size: '256mb' 或更高
  • CPU: 媒體轉碼需要較強的 CPU 性能

2. 存儲優化

  • 使用 N8N_DEFAULT_BINARY_DATA_MODE=filesystem 模式
  • 將文件存儲卷掛載到高速存儲設備
  • 定期清理臨時文件

3. 網絡配置

  • 配置適當的 Webhook URL
  • 使用 CDN 加速靜態資源訪問
  • 配置反向代理以提高安全性

故障排除

常見問題

1. FFmpeg 命令執行失敗
  • 檢查輸入文件路徑是否正確
  • 確認文件權限是否足夠
  • 查看容器日誌獲取詳細錯誤信息
2. 內存不足
  • 增加 Docker 容器內存限制
  • 優化 FFmpeg 命令參數
  • 分批處理大文件
3. 處理速度慢
  • 檢查 CPU 資源分配
  • 使用硬件加速(如可用)
  • 優化編碼參數

日誌查看

# 查看容器日誌
docker logs n8n

# 實時查看日誌
docker logs -f n8n

安全注意事項

  1. 文件權限: 確保掛載卷的文件權限設置正確
  2. 網絡安全: 在生產環境中使用 HTTPS 和身份驗證
  3. 資源限制: 設置適當的容器資源限制
  4. 定期更新: 保持鏡像和依賴項的最新狀態

更新和維護

使用便捷腳本更新

推薦使用提供的腳本來簡化更新過程:

# 構建新鏡像並自動更新配置
./build-image.sh

# 重啓容器應用更新
./restart.sh

手動更新 FFmpeg

  1. 下載新版本的 FFmpeg 靜態包 ffmpeg-release-amd64-static.tar.xz
  2. 替換 ffmpeg-7.0.2-amd64-static 目錄
  3. 更新 Dockerfile 中的版本引用
  4. 運行 ./build-image.sh 重新構建鏡像

手動更新 n8n

  1. 修改 Dockerfile 中的基礎鏡像版本
  2. 運行 ./build-image.sh 重新構建鏡像
  3. 測試兼容性

許可證

本項目採用 GPLv3 許可證。FFmpeg 靜態包及其包含的組件遵循各自的許可證條款。

貢獻

歡迎提交 Issue 和 Pull Request 來改進此項目。

支持

如果您遇到問題或有建議,請通過以下方式聯繫:

  • 提交 GitHub Issue
  • 查看 FFmpeg 官方文檔: https://ffmpeg.org/documentation.html
  • 查看 n8n 官方文檔: https://docs.n8n.io/

注意: 使用此項目即表示您同意遵守所有相關軟件許可證條款和條件。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.