scene-video-merger

n8n community node that downloads a set of scene video clips and concatenates them into one video using ffmpeg, with automatic normalization (fps/resolution/codec/audio) for mismatched source clips.

Package Information

Released: 2 mo ago
Downloads: 0 weekly / 0 monthly
Latest Version: 1.0.0

Documentation

n8n-nodes-scene-video-merger

An n8n community node that downloads a series of scene video clips and concatenates them into a single video using ffmpeg, with optional automatic normalization so mismatched source clips (different fps/resolution/codec/audio) don't break the concat.

Requirements — read this before installing

This node shells out to ffmpeg and ffprobe as system binaries. Unlike the other nodes in this collection, it does not call a remote API — it does real local video processing. This means:

  • ffmpeg and ffprobe must be installed inside your n8n container/host, and on your PATH. The stock n8nio/n8n Docker image does not include ffmpeg by default — you'll need a custom Dockerfile that adds it, e.g.:
    FROM n8nio/n8n:latest
    USER root
    RUN apk add --no-cache ffmpeg
    USER node
    
    (adjust the package manager line if your base image isn't Alpine-based)
  • The node writes temporary files to /tmp (segment downloads, normalized clips, the concat list, and the final output) — make sure /tmp has enough free space and is writable in your container.
  • If you're running n8n in queue mode with separate workers (as in the docker-compose setup discussed earlier), ffmpeg needs to be installed in the worker image too, since that's where node execution actually happens — not just the main n8n image.

Installation

Follow the n8n community nodes installation guide, or install manually:

npm install n8n-nodes-scene-video-merger

No credentials required

This node doesn't call any external API needing auth — it downloads video URLs you give it directly.

Operation

The Scene Video Merger (FFmpeg) node takes input items each carrying one or more video URLs (accepts scene_id/sceneId, video_url/videoUrl/url, or a videoUrls/video_urls array per item — scenes are sorted by scene_id then position before merging) and outputs one merged video.

Field Description
Output Path Absolute path for the merged output file (default /tmp/final_video.mp4)
Use Re-encode (frame continuity) Normalizes every clip's fps/resolution/codec/audio before concatenating. Leave this on unless you're certain all source clips already share identical encoding — otherwise ffmpeg's concat demuxer will fail or produce corrupted output
Target Resolution Scale target as width:height, e.g. 1080:1920 for vertical video. Only used when re-encoding
Target FPS Frame rate to force when re-encoding

Each downloaded clip is verified with ffprobe before use, and downloads are retried on truncation/failure. Clips with no audio track get a silent track added automatically during normalization, so mixed audio/no-audio sources still concatenate cleanly.

Output is returned as binary data under the mergedVideo field.

License

MIT

Discussion