Delivery

Streaming and adaptation

Deliver complete or adaptive fragmented MP4 presentations over ordinary HTTP.

Delivery modes

Mode Input Quality switching
Local Complete MP4 on local storage No
Progressive HTTP Fast-start conventional MP4 No
Fragmented HTTP Complete fragmented MP4 with terminal index No
Adaptive manifest.json plus aligned low/high fragmented MP4 files Yes

All modes use the same engine-neutral player and MP4 track model.

HTTP requirements

The server must provide:

  • Stable Content-Length.
  • HTTP byte-range requests with correct 206 responses.
  • Access from the target device and network.
  • HTTPS for production deployments where the engine or platform forbids insecure connections.

The byte source uses a dedicated worker, cancellable libcurl requests, and a bounded block cache. Demux reads can pre-empt speculative fragment prefetch.

Serve a test package

From the OpenVolumetric repository:

python3 tools/package_server.py /path/to/presentation

The server listens on 0.0.0.0:8000, reports usable host addresses, supports range requests, and serves the manifest at:

http://<host-address>:8000/manifest.json

It can also serve a single MP4 file. Use tools/adaptive_test_server.py for deterministic bandwidth, latency, jitter, outage, and request-failure phases with JSONL traces.

Adaptive selection

The version-1 OpenVolumetric manifest describes coupled texture and geometry representations. Low and High select the minimum and maximum declared bandwidth. Remote Auto:

  1. Filters representations through platform texture, geometry, and bandwidth ceilings.
  2. Probes at most 2 MiB from the highest eligible representation.
  3. Selects High only with at least 1.5× measured bandwidth headroom.
  4. Falls back to Low after a failed or insufficient probe.

Local Auto selects the highest eligible representation without a network probe.

With live adaptive switching enabled, the policy observes completed-transfer throughput and buffer state. A second player session prepares the candidate at a future aligned boundary; the active session remains visible until the candidate can commit a complete synchronized presentation.

Recovery

During a recoverable outage, the player freezes the last complete visual presentation and silences audio rather than presenting unrelated streams. Requests retry with bounded backoff. Successful recovery seeks all streams to a common access point; exhausted retries produce an error instead of an unbounded hang.

Seek, close, a newer switch, or recovery increments a generation token and cancels stale preparation work.

Current manifest status

The implemented adaptive manifest is OpenVolumetric JSON, not MPEG-DASH. DASH is planned as an optional compatibility experiment over the existing complete fragmented representations. Separate .m4s files, live streaming, DRM, and low-latency ingest are not current features.