
aura.video is currently a visual playback surface, not a full cinematic media stack.
What is supported today:
.mp4 playback on desktop hosts (in-process decode, no external tools required).mp4 containers: H.264, H.265, VP9, MPEG-4 Part 2getInfo()What is not supported as an engine-level guarantee today:
That means the honest cutscene contract today is:
.mp4 playback.Native .mp4 specifics are frozen separately in:
docs/native-mp4-video-contract-v1.mdAuraJS now ships a small JS helper at @auraindustry/aurajs/cutscene for the current contract.
It wraps an aura.video-compatible API and gives you:
It also exposes thin helper wrappers for the current 3D media-presentation lane:
createSpatialAudioEmitter(aura.audio, path, options?)createVideoBillboardSurface(aura.video, source, options?)createMediaPresentationController({ video: aura.video }, source, options?)The authored native media-presentation boundary is frozen separately in:
docs/native-media-presentation-contract-v1.mdimport { createVideoCutsceneController } from '@auraindustry/aurajs/cutscene';
const handle = aura.video.load('assets/intro.mp4', {
type: 'mp4',
looping: true,
});
const cutscene = createVideoCutsceneController(aura.video, handle, {
skipTarget: 6.0,
cues: [
{ time: 0.5, type: 'subtitle', text: 'Wake up.' },
{ time: 2.0, type: 'checkpoint', checkpoint: 'intro-midpoint' },
{ time: 4.0, type: 'event', id: 'door-open' },
],
onSubtitle(cue) {
ui.subtitle = cue.text;
},
onCheckpoint(cue) {
gameState.lastCheckpoint = cue.checkpoint;
},
onCue(cue) {
if (cue.id === 'door-open') playDoorSfx();
},
});
cutscene.play();
aura.update = () => {
cutscene.update();
};
This is intentionally not a Unity-style cinematic stack.
The current engine contract is good enough for:
.mp4 screens or short visual cutscenesIt is not yet the right thing to call: