The project's README from github.com/v-modal/vmodal_sdk_smartglass. As one markdown file: README.md.
Turn a first-person view into a live, reliable video experience.
Capture on the glasses. Encode on Android. Stream securely to your ingest.
Keep your product focused on the experience—not the media plumbing.
Build for the point of view no phone camera can reach.
| Resource | Link | |
|---|---|---|
| 💬 | Developer support | Join the VModal AI Discord |
| 🚀 | SDK quickstart | Build and start your first stream |
| 🧭 | Developer portal | Explore VModal developer resources |
| 🌐 | VModal platform | Visit VModal |
[!NOTE] This SDK streams live camera video from Android smart glasses. For video upload, indexing, and multimodal search, use the VModal Android SDK instead.
VModal combines an Android-native Kotlin client with a high-throughput Rust media core. Your app owns the product experience; the SDK owns the demanding path between a wearable camera and your live ingest service.
| Your smart-glass experience | VModal gives you |
|---|---|
| Remote expert support | Reliable first-person video with reconnect behavior |
| Hands-free field work | Meta DAT capture lifecycle and Android camera coordination |
| Live training and inspection | Hardware H.264 encoding and MPEG-TS muxing |
| AR / VR companion experiences | A compact Kotlin API using Flow and StateFlow |
| Production streaming | Bounded queues, backpressure signals, metrics, and typed failures |
| Your own branded UX | App-owned authentication, permissions, registration, and controls |
flowchart LR
G[Smart glasses] --> D[Meta DAT]
D --> K[Android H.264]
K --> R[Rust media core]
R --> S[Encrypted SRT]
S --> I[Live ingest]
A[Your Android app] --> C[SmartGlassClient]
B[Authenticated backend] --> T[Short-lived target]
T --> C
C --> K
C --> R
The separation is deliberate:
MediaCodec, coroutine state, events, and lifecycle.The Activity never needs to understand a JNI handle, SRT socket, or encoded GOP. The backend never needs to manage an Android camera session.
The implementation guide keeps the Kotlin and command-line setup in one place:
Open the Smart Glass SDK quickstart →
It covers prerequisites, local builds, SmartGlassClient creation, short-lived
stream targets, state and metrics collection, and deterministic cleanup.
GOP-aware backpressure and bounded queues keep a weak network from turning into ever-growing latency. The SDK can signal the Kotlin layer to drop safely or request a new keyframe when transport falls behind.
SRT reconnects use configurable delays, jitter, and timeouts. When a target is
expired or rejected, LiveStreamTargetProvider can fetch a fresh destination
while the app continues to present one coherent stream lifecycle.
The public API does not expose Meta DAT types or Rust handles. Your host app owns the camera permission and registration experience; the SDK owns its one capture session only while streaming.
client.metrics exposes connection health, queue pressure, and transport
behavior for a developer panel, field diagnostic screen, or support workflow.
LiveStreamTarget.SmartGlassClient for each active capture owner.SmartGlassClient is streaming.The project provides two build flavors:
| Flavor | Purpose |
|---|---|
offline |
Local lint and JVM tests without Meta artifacts or device credentials |
meta |
Real-device integration with the Meta Wearables DAT dependencies |
The app may briefly receive the SRT fields required to contribute live video. It should never contain account-level Cloudflare or live-platform credentials. After validating the app user, have your backend mint or lease a short-lived target; do not log or persist its stream ID or passphrase.
Resilient, native live video for Android smart glasses.