Extract Audio from Video in n8n

Extract Audio from Video in n8n

提取视频中的音频在 n8n

https://ift.tt/GT3h1ya

从视频中提取音频而不触碰终端

你有需要转录的视频访谈,或以视频形式录制的播客,或被 MP4 文件锁住的音乐库。你需要提取音轨。

FFmpeg 只用一个命令就能完成。n8n 可以在每当出现新视频时自动触发该命令。无需手动步骤。无需终端。无服务器。

问题:n8n 原生不能提取音频

n8n 没有音频提取节点。云端版本不允许执行 shell 命令。即使自部署,在 n8n 内运行 FFmpeg 也会阻塞工作节点,且对大文件有崩溃风险。

解决方案:通过 n8n 的 HTTP 请求节点将提取命令发送到 RenderIO 的 API。RenderIO 在隔离容器中运行 FFmpeg。你的 n8n 实例保持响应。

使用 RenderIO 的 n8n 节点

RenderIO 在 n8n 市场提供了一个 经过合作伙伴验证的社区节点。在设置 → 社区节点 中搜索“renderio”即可安装。它提供了用于 FFmpeg 命令的可视界面,包括音频提取。

该节点自动处理身份验证和请求格式。下面的提取示例使用 HTTP Request 节点以获得完全灵活性,但相同的 FFmpeg 命令也可用于原生节点。

基础提取:MP4 转 MP3

最简单的工作流:视频 URL 进,MP3 URL 出。

HTTP 请求节点配置:

  • 方法:POST
  • URL:https://renderio.dev/api/v1/run-ffmpeg-command
  • 认证:Header Auth(X-API-KEY)
  • Body:
  • ul>

    {
      "ffmpeg_command": "-i  -vn -acodec libmp3lame -q:a 2 ",
      "input_files": {
        "in_video": {
          "in_video": ""
        }
      },
      "output_files": {
        "out_audio": "extracted.mp3"
      }
    }

    -vn 表示禁用视频。-q:a 2 设置 MP3 质量(0 为最佳,9 为最差,2 在 ~190kbps 时提供高质量音频)。

    轮询等待完成后,使用输出的 URL。

    提取格式

    MP3(兼容性最好)

    {
      "ffmpeg_command": "-i  -vn -acodec libmp3lame -q:a 2 ",
      "input_files": {
        "in_video": {
          "in_video": ""
        }
      },
      "output_files": {
        "out_audio": "audio.mp3"
      }
    }

    最佳用途:分享、播客分发、一般用途。

    WAV(无损)

    {
      "ffmpeg_command": "-i  -vn -acodec pcm_s16le -ar 44100 ",
      "input_files": {
        "in_video": {
          "in_video": ""
        }
      },
      "output_files": {
        "out_audio": "audio.wav"
      }
    }

    最佳用途:转录服务(它们通常偏好 WAV)、音频编辑、档案保存。

    AAC(苹果/流媒体)

    {
      "ffmpeg_command": "-i  -vn -acodec aac -b:a 192k ",
      "input_files": {
        "in_video": {
          "in_video": ""
        }
      },
      "output_files": {
        "out_audio": "audio.m4a"
      }
    }

    最佳用途:苹果设备、流媒体平台,在相同质量下音频文件更小。

    FLAC(无损压缩)

    {
      "ffmpeg_command": "-i  -vn -acodec flac ",
      "input_files": {
        "in_video": {
          "in_video": ""
        }
      },
      "output_files": {
        "out_audio": "audio.flac"
      }
    }

    最佳用途:需要无损但比 WAV 小的档案以供档案保存时使用(通常为 WAV 大小的 50-60%)。

    OGG/Opus(网页应用)

    {
      "ffmpeg_command": "-i  -vn -acodec libopus -b:a 128k ",
      "input_files": {
        "in_video": {
          "in_video": ""
        }
      },
      "output_files": {
        "out_audio": "audio.ogg"
      }
    }

    最佳用途:网页应用、语音记录、VoIP。

    完整工作流:提取并转录

    将音频提取与转录服务结合起来:

    Google Drive Trigger(新视频)
      → HTTP 请求:提取音频(RenderIO)
      → 等待 +轮询
      → HTTP 请求:下载音频
      → HTTP 请求:发送至 Whisper API / AssemblyAI / Deepgram
      → Google Sheets:写入文字稿
      → Slack:通知团队
    

    节点 1:Google Drive Trigger
    监视“Videos”文件夹中的新上传。

    节点 2:提取音频(HTTP 请求)

    {
      "ffmpeg_command": "-i  -vn -acodec pcm_s16le -ar 16000 -ac 1 ",
      "input_files": {
        "in_video": {
          "downloadUrl": ""
        }
      },
      "output_files": {
        "out_audio": "for_transcription.wav"
      }
    }

    注意:-ar 16000 -ac 1 转换为 16kHz 单声道。这是大多数转录 API 偏好的格式。文件更小、上传更快、转录质量不变。

    节点 3-5:轮询并获取结果

    标准轮询循环。

    节点 6:发送至转录服务

    {
      "method": "POST",
      "url": "https://api.openai.com/v1/audio/transcriptions",
      "headers": {
        "Authorization": "Bearer "
      },
      "body": {
        "model": "whisper-1",
        "file": ""
      }
    }

    从视频库批量提取

    对整个视频文件夹进行处理:

    步骤 1:获取视频列表

    使用 Code 节点或从电子表格获取:

    const videos = [
      { url: "https://example.com/interview1.mp4", name: "interview1" },
      { url: "https://example.com/interview2.mp4", name: "interview2" },
      { url: "https://example.com/interview3.mp4", name: "interview3" }
    ];
    
    return videos.map(v => ({ json: v }));
    

    步骤 2:分批处理(尺寸:5)

    步骤 3:对每个提取提交

    {
      "ffmpeg_command": "-i  -vn -acodec libmp3lame -q:a 2 ",
      "input_files": {
        "in_video": {
          "url": ""
        }
      },
      "output_files": {
        "out_audio": ".mp3"
      }
    }

    步骤 4:轮询并收集 URL

    步骤 5:写入结果到电子表格

    Video Audio URL Status
    interview1 https://media.renderio.dev/interview1.mp3 extracted
    interview2 https://media.renderio.dev/interview2.mp3 extracted

    提取后音频处理

    获得音频后,可以进行进一步处理:

    标准化音量:

    -i  -af loudnorm=I=-16:TP=-1.5:LRA=11 

    从开头/结尾裁剪静默:

    -i  -af silenceremove=start_periods=1:start_silence=0.5:start_threshold=-50dB,areverse,silenceremove=start_periods=1:start_silence=0.5:start_threshold=-50dB,areverse 

    改变采样率:

    -i  -ar 44100 

    将这些步骤作为工作流中的附加处理步骤,嵌入提取之后。

    错误处理

    常见提取失败:

    无音轨:某些屏幕录像或动画没有音轨。FFmpeg 会返回错误。可使用 IF 节点,检查错误信息是否包含 “does not contain any stream.”

    音频损坏:在 -i 之前添加 -err_detect ignore_err,以尝试在轻微损坏时也进行提取。

    超长视频:提取速度很快(通常不管视频长度在 10-30 秒内完成),因为它只复制/转码音频流,而非视频。

    开始使用

    Starter 计划每月 9 美元,包含 500 条命令——足以搭建并测试你的音频提取工作流。

    HI-FI News

    via DEV Community https://dev.to

    2026年4月12日 10:01 AM

    April 12, 2026 at 10:01AM