5: Exporting
A presentation is a presentation.json payload plus its media. There are two ways to take it out of the editor, and both are driven by the same player.
5.1: The standalone web page
The first export is a self-contained zip: the player inlined, your media alongside it and the payload. It works offline and even from file://, so you can email it, host it on any static server, or open it from a USB stick. It stays interactive: the language switcher, the subtitles and the controls all work, because it is the real player, not a video.
5.2: The client-side MP4 render
The second export is a real MP4, rendered entirely in the browser. The same PresentationPlayer drives a deterministic canvas renderer, so every frame of the export matches the preview. Encoding uses the WebCodecs video encoder where available, with an ffmpeg-wasm fallback, and goes multithreaded when the page is cross-origin isolated. Nothing is uploaded and nothing renders on the server: the audio, the images, the moves and the subtitles are composited on the client.
5.3: Preview equals export
The reason both paths can be trusted is the single player. The editor preview, the standalone page and the MP4 renderer all replay the same payload on the same audio clock with the same transition curves. There is no separate export engine to drift from what you saw, so what you approve in the editor is what ships.