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
206responses. - 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:
- Filters representations through platform texture, geometry, and bandwidth ceilings.
- Probes at most 2 MiB from the highest eligible representation.
- Selects High only with at least 1.5× measured bandwidth headroom.
- 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.