Skip to content
Documentation
On this page

Video export

The editor renders the open level into a video file through ffmpeg installed on your computer. Rendering is offline, one frame at a time, so the video is exact however slow the machine is

Export works on Windows, macOS and Linux. It is not available on phones

Where to find it

  • Export Video in the side column of the level settings
  • the command Export Video in the command palette

The window opens over the editor. While a video renders, the window cannot be closed: Stop ends the render

Installing ffmpeg

ffmpeg is not part of the game. Install it once, and the window finds it by itself. Version 7.0 or newer is needed. An older one is refused, and the window names the version it found

SystemInstall command
Windowswinget install ffmpeg
macOSbrew install ffmpeg
Linuxyour distribution's package, for example sudo apt install ffmpeg
Warning

Some Linux distributions ship an ffmpeg older than 7.0 (Ubuntu 24.04 ships 6.1). Then install a newer build from the ffmpeg site and point the window at it

The window looks for ffmpeg in this order:

  1. the file you chose with Choose ffmpeg.... Then nothing else is searched
  2. the path in the environment variable BH_FFMPEG
  3. tools/ffmpeg inside the game's data folder
  4. every folder in PATH
  5. the folders the usual installers write to

Search automatically forgets the chosen file and searches again. Check again repeats the check, for example right after installing

Your ffmpeg may contain hardware encoders (NVIDIA, AMD, Intel, Apple). The window tries each one on a tenth of a second of black and uses only the ones that actually work on this computer

Window options

OptionWhat it does
Container, Codecthe kind of file and how it is compressed, see the formats below
Resolutionthe size of the video. Width and height are even numbers from 16 to 7680
Frame rateframes per second of the video, up to 240. It does not depend on the level's own frame rate. Below 60 every frame is simulated in several steps, so the bot plays as it does in the game
Rangethe whole level, the loop range of the timeline, or your own start and end frame
Qualityhow much space the video takes. Hidden for formats that are lossless anyway
Full colour (4:4:4)colour for every pixel instead of every second one. Sharper thin coloured lines, a bigger file
Seed (0 = as in the editor)the seed of the level's randomness. 0 keeps the seed the editor is using
Pre-roll, secondshow many seconds before the start are played but not recorded, so effects already have their history. 2 by default, up to 10
Who playsReflex Bot v1 by default, Warm Bot v1, or No Bot for a video without an avatar. Hits do nothing during an export
Post-processing, Effectsthe same switches as in the editor, for the video only
Audiothe level's tracks in the video

Every option has its own ? in the window.

The editor UI, the grid, gizmos, the selection and the camera bounds never get into the video. The camera of the level frames the picture, and black bars fill whatever its aspect does not cover

Rendering speed

The video does not depend on how fast your computer is. Level time and the bot both advance by exactly one frame of the video per rendered frame, so a slow machine renders the same video, only later

Warm Bot v1 works its whole route out before the first frame, and the window shows how far it has got. If it finds no route, the export stops and asks for another bot

Formats

A format is two choices: Container and Codec. Only the pairs your ffmpeg can make are listed. The line under them says which sound goes with the pair and what file you get

ContainerCodecSoundGood for
MP4H.264, HEVC, AV1AAC, 320 kbit/ssending and uploading anywhere
MKV (Matroska)H.264, HEVC, AV1, VP9, FFV1FLAC, losslessarchiving, FFV1 without any loss
MOV (QuickTime)H.264, HEVC, ProResPCM 16-bit, uncompressedediting in Premiere, DaVinci Resolve, Final Cut
WebMVP9, AV1Opus, 256 kbit/sthe web
GIF, WebP (animated), APNG-no soundshort looping clips for chats and pages
Image sequencePNG, JPEG, WebP, TIFFaudio.wav beside the framesany editor imports it
Sound onlyWAV, FLAC, MP3, Opusthe format itselfthe level's sound alone, nothing is rendered

GIF takes one palette of 256 colours for the whole clip. Keep it short and small: a GIF of a whole level weighs far more than an MP4 of it

Where the video goes

By default the video goes to recordings/<level id>/ in the game's data folder, named after the level and the time of the export. Open recordings folder opens that folder. Choose... saves the next video anywhere else

Recordings stay when you delete the level. They are not part of a profile transfer unless you tick Video recordings

Sound

The video's sound is not recorded from the speakers, and you hear nothing during an export.

With Sound through the engine (with effects) on (the default) and effects on the tracks, the level's sound plays in real time while the frames render, and the game's own sound is recorded, effects included. The export lasts at least the length of the range: a fast computer waits for the sound to finish. Off, the tracks are mixed separately, with their volume and pan keyframes but without their effects. Sound only always mixes separately

Under the preview the window shows two timelines, Frames and Sound: they move independently. On a heavy level the parallel sound can stutter. Then turn on Record the sound after the frames: the sound is recorded after the last frame, and the export takes longer by the length of the range

Warning

Do not close the game while a video renders. The window says so for the whole run

What is not in the video

  • the effects on audio tracks, but only with Sound through the engine (with effects) off or in Sound only. The window warns when the level has them
  • a transparent background
  • a recording of how you played: only the bot can play in the video

Read next: Export and protection, Audio