WallSplitter

How to split a video for a video wall (step by step)

Wall resolution math, three ways to cut one file per screen (video editor, ffmpeg, WallSplitter) and how to keep every screen in sync.

Updated

Most video walls are not one big display: they are several screens, each driven by its own player or its own output. To show one continuous image, every screen needs a video containing exactly its part of the picture, and all those videos must start, run and end together. This guide explains the resolution math, three ways to cut the files, and how to keep playback in sync.

1. Work out the wall resolution

Your source video should be the size of the whole wall. Multiply the resolution of one screen by the number of columns and rows:

LayoutScreensWall resolution (Full HD screens)
2 × 123840 × 1080
3 × 135760 × 1080
4 × 147680 × 1080
2 × 243840 × 2160
3 × 395760 × 3240
1 × 3 (portrait screens)31080 × 5760

If the source is smaller than the wall, for example a 3840 × 1080 video for four Full HD screens, each tile will be 960 × 1080 and needs to be scaled back up to 1920 × 1080. Always design at the full wall resolution when you can: upscaling a tile softens the image.

If your screens have visible frames, the image also needs to account for the bezels. That is covered in our bezel compensation guide.

2. Cut one file per screen

Option A: a video editor

This is what most signage vendors document. In Premiere Pro, After Effects, DaVinci Resolve or Final Cut:

  1. Create a sequence the size of one screen (for example 1920 × 1080).
  2. Place the wall-sized video in it and offset its position so the first screen's area fills the frame.
  3. Export, then repeat with a new offset for every other screen.

It works, but a 3 × 3 wall means nine sequences, nine positions to type and nine exports, all to redo whenever the content changes. A position off by a few pixels shows up immediately as a broken line between two screens.

Option B: ffmpeg on the command line

ffmpeg can crop each region with the crop=width:height:x:y filter. This command splits a 7680 × 1080 video into four 1920 × 1080 files in a single pass, which keeps every output frame-aligned:

ffmpeg -i wall.mp4 -filter_complex "[0:v]split=4[a][b][c][d];\
[a]crop=1920:1080:0:0[s1];[b]crop=1920:1080:1920:0[s2];\
[c]crop=1920:1080:3840:0[s3];[d]crop=1920:1080:5760:0[s4]" \
  -map "[s1]" -map 0:a? -c:v libx264 -crf 18 -c:a aac screen_1.mp4 \
  -map "[s2]" -map 0:a? -c:v libx264 -crf 18 -c:a aac screen_2.mp4 \
  -map "[s3]" -map 0:a? -c:v libx264 -crf 18 -c:a aac screen_3.mp4 \
  -map "[s4]" -map 0:a? -c:v libx264 -crf 18 -c:a aac screen_4.mp4

For a grid, the x offset is column × tile width and the y offset is row × tile height. Add the bezel width to every offset if you compensate for frames, and append scale=1920:1080 after each crop if the tiles need resizing. Powerful, but every new layout means rewriting the command by hand.

Option C: WallSplitter

WallSplitter builds that single-pass ffmpeg job for you. Drop the video, pick a layout (or type columns and rows), set the bezels if needed, and click Split. The preview numbers every screen, shows ignored pixels in red, and the export writes one file per screen plus a JSON manifest that lists where each file goes.

3. Keep the screens in sync

The files are only half the job. For playback to stay aligned:

  • Identical durations. Every file must have exactly the same length and frame count. Encoding all tiles from one decode of the source, as ffmpeg's split filter and WallSplitter do, guarantees it. Exporting tiles separately from an editor does not always.
  • Same frame rate everywhere. Do not mix 25 and 30 fps tiles on the same wall.
  • Use your player's sync feature. BrightSign, Signagelive, Yodeck, Xibo and most signage platforms offer sync groups or a leader and followers setup. Each player gets its own file and they start together.
  • Audio on one screen. If every screen has speakers, keep the soundtrack on a single tile to avoid echoes.
  • Keep a clean loop. If the content loops, make sure the first and last frames match so the restart is invisible on every screen.

Quick checklist

  • Source at the full wall resolution, including bezels if you compensate for them.
  • One file per screen, named so installers know where it goes (row and column).
  • Same duration, frame count and frame rate on every file.
  • H.264 MP4 for most signage players; ProRes MOV for show control systems and editing.
  • Test the loop point on the real wall before the event.
Related guideVideo wall bezel compensation: how to measure and set it