adaptive-video-encode (Transform Node)
The Adaptive Video Encode node catalogues the video streams present in a capture. Despite the name, it does not encode anything today: it was designed to feed an HLS or DASH ladder that was never built, and what it produces is a JSON catalogue of the StreamComponent video sources it found (stream names, codec, dimensions, byte counts, and a bounded sample of chunk timings).
Use it to find out what video a capture holds, for example before configuring video-atlas-encode (which streams exist, how large they are, whether a headset was worn). For playback in the dashboard use the atlas node.
What it does
- Reads every parent capture blob, one at a time, so memory stays bounded on large sessions. Nested payload bytes are released as soon as each frame has been parsed.
- For each
StreamComponentvideo source it recordsname(for exampleeye.left),codec,width,height,totalBytes, and up to 200 chunk entries with their byte sizes and start offsets in milliseconds from the first packet seen (startMs,endMs). - Publishes the catalogue as its own JSON output and pushes the same document onto a child input node named by
metadataInputNodeName(defaultvideo-metadata), so other branches of the template can read it without a direct graph edge. A stub marker goes to the node named bystreamsInputNodeName(defaultvideo-streams); it was reserved for ladder segments and carries no media. - When no video source is found it still publishes a
pendingplaceholder catalogue with anote, so downstream nodes can distinguish “no video” from “not run”.
Configuration schema
| Property | Type | Default | Description |
|---|---|---|---|
dataSourceName | string | runner default store | Object store for the catalogue. |
metadataInputNodeName | string | video-metadata | Child input node that receives the catalogue JSON. |
streamsInputNodeName | string | video-streams | Child input node that receives the placeholder streams marker. |
dedupeByContentHash | boolean | true | Recorded on the catalogue; intended for idempotent partial runs of the ladder that does not exist yet. |
Output shape
{
"artefactKind": "adaptive-video-catalogue",
"status": "partial",
"durationMs": 1620000,
"note": "Catalogued 40320 VideoSource observation(s) across 2 stream(s) ... Chunk metadata only; HLS/DASH ladders not built yet.",
"streams": [
{
"name": "eye.left",
"codec": "H264",
"width": 1088,
"height": 1072,
"totalBytes": 27200000,
"chunks": [{ "startMs": 0, "endMs": 0, "bytes": 13100 }, { "startMs": 13, "endMs": 13, "bytes": 12870 }],
"hlsManifestUrl": null,
"dashManifestUrl": null
}
],
"stats": { "payloadBytes": 2134000000 }
}status is partial when at least one video source was seen and pending when none was (the placeholder case). hlsManifestUrl and dashManifestUrl are always null. The VideoPlayback component recognises this document as the legacy catalogue shape and renders a stub, not video.
Relationship to the atlas
adaptive-video-encode | video-atlas-encode | |
|---|---|---|
| Decodes video | No | Yes |
| Output | JSON catalogue | MSE fragment ladder plus manifest |
| Playable in the dashboard | No (stub) | Yes |
| Cost | One pass over the protobuf | Decode of every admitted stream |
| Place in the DAG | Child of the capture input | Child of the capture input |