Уведомления
Очистить все

Вкинул видео в папку → n8n сам делает mp3 → шлёт в OpenAI → забирает текст.

1 Записи
1 Пользователи
0 Reactions
359 Просмотры
 Kora
(@kora)
Записи: 8
Active Member
Создатель темы
 
[#18]

1. Подготовка папок в контейнере

В контейнере n8n:

mkdir -p /videos/input mkdir -p /root/.n8n-files/input/mp3
  • /videos/input - сюда кидаем исходные видео.

  • /root/.n8n-files/input/mp3 - сюда ffmpeg будет складывать звук.

2. Local File Trigger

Нода: Local File Trigger

  • Watch Folder: /videos/input

  • Operation: Add (реакция на новые файлы)

На выходе у нас есть путь к файлу, например: /videos/input/2.MOV.

3. Нода to mp3 (ffmpeg)

Нода: Execute Command

ffmpeg -y -i "{{ $('Local File Trigger').item.json.path }}" -vn -acodec libmp3lame "/root/.n8n-files/input/mp3/{{ $('Local File Trigger').item.json.path.split('/').pop().split('.').slice(0, -1).join('.') }}.mp3"

Что делает expression:

  • Берёт полный путь /videos/input/2.MOV.

  • Оставляет только имя файла 2.MOV.

  • Отрезает расширение → 2.

  • Собирает итоговый путь: /root/.n8n-files/input/mp3/2.mp3.

Важно:
После запуска этой ноды в контейнере можно проверить:

ls -l /root/.n8n-files/input/mp3

Там должен лежать 2.mp3.

4. Read/Write Files from Disk

Нода: Read/Write Files from Disk

  • Operation: Read File(s) From Disk

  • File(s) Selector: включаем Expression и пишем:

/root/.n8n-files/input/mp3/{{ $('Local File Trigger').item.json.path.split('/').pop().split('.').slice(0, -1).join('.') }}.mp3

Эта нода читает mp3 и добавляет его в Binary.
Имя бинарного поля по умолчанию - data (на вкладке Binary ты видишь блок с заголовком data и инфой о файле).

5. OpenAI: расшифровка аудио

Нода: OpenAI

  • Resource: Audio

  • Operation: Transcribe a Recording

  • Input Data Field Name: data ← то же имя, что в Binary после предыдущей ноды.​

Модель можно оставить whisper-1.
На выходе получаешь текст транскрипции в json.text (или аналогичном поле - зависит от версии ноды).

6. Типичный фейл, на котором все падают

  • Писать mp3 в путь, который не примонтирован в контейнер.

  • Смотреть на хосте /root/.n8n-files, думать, что «файла нет», хотя ffmpeg положил его внутрь контейнера.

  • Забывать создать папку заранее - ffmpeg не делает промежуточные каталоги.

Поэтому жёстко придерживаемся:

  • Для ffmpeg: /root/.n8n-files/input/mp3/...

  • Для чтения: тот же путь через expression.

  • В OpenAI: Input Data Field Name = data.


 
Размещено : 24/03/2026 2:48 пп