vmodal_sdk_smartglass README

The project's README from github.com/v-modal/vmodal_sdk_smartglass. As one markdown file: README.md.

VModal owl wearing smart glasses

VModal for Smart Glasses

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.

Android API 31+, Kotlin 2.2, Rust core, and SRT live transport

Smart glasses sending a live first-person video stream to a cloud ingest

Build for the point of view no phone camera can reach.

Start here

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.

Make presence feel immediate

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

A clean path from glasses to ingest

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:

The Activity never needs to understand a JNI handle, SRT socket, or encoded GOP. The backend never needs to manage an Android camera session.

Build with the SDK

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.

Engineered for wearable constraints

Bounded latency, not unbounded memory

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.

Recovery without a broken experience

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.

Native internals behind a Kotlin boundary

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.

Metrics your support team can use

client.metrics exposes connection health, queue pressure, and transport behavior for a developer panel, field diagnostic screen, or support workflow.

Production integration checklist

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

Keep credentials on the right side of the boundary

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.

Explore the SDK


Build the view that only your user can see.

Resilient, native live video for Android smart glasses.

Talk with the VModal developer community →

vmodal_sdk_smartglass (v-modal/vmodal_sdk_smartglass)

Searching Database…

Что это?VModal Smart Glass SDK позволяет Android-приложению захватывать живое видео от первого лица с умных очков Meta и надёжно транслировать его в сервис приёма живого видео, сочетая Kotlin-клиент с высокопроизводительным медиаядром на Rust.
Это отдельное приложение или SDK для встраивания в моё приложение?Это SDK, а не приложение: Kotlin-клиент плюс медиаядро на Rust, которые вы встраиваете в своё Android-приложение, сохраняя контроль над UI, разрешениями и аутентификацией.
Как запустить это в моём приложении?Следуйте быстрому старту SDK: настройте локальные сборки, создайте SmartGlassClient, подключите кратковременные stream targets и подпишитесь на состояние и метрики.
Что нужно перед интеграцией?Android API 31+, JDK 17, Android compile SDK 36, плюс регистрация совместимых умных очков Meta и настройка Meta Wearables DAT.
Есть подводные камни, о которых стоит знать до релиза?На одного активного владельца захвата приходится только один работающий SmartGlassClient, и никакое другое приложение не может держать камеру, пока идёт трансляция; также нужен собственный бэкенд с аутентификацией для выпуска кратковременных stream targets, ведь SDK никогда не хранит учётные данные аккаунта.
Это работает с любым Android-телефоном или нужны настоящие умные очки?Нужны совместимые умные очки Meta с интеграцией Meta Wearables DAT; отдельный вариант сборки 'offline' позволяет запускать lint и JVM-тесты без реального железа.
Как защищаются мои данные для трансляции?Устройство получает только кратковременные параметры SRT-подключения после того, как ваш бэкенд подтвердит пользователя; долговечных учётных данных провайдера уровня аккаунта на нём быть не должно.
Зачем SDK разделён на Kotlin-клиент и ядро на Rust?Kotlin-слой отвечает за публичный API, интеграцию Meta DAT, захват камеры и жизненный цикл, а ядро на Rust занимается ограниченными медиаочередями, нормализацией H.264, мультиплексированием MPEG-TS, транспортом SRT и переподключениями — оставляя всю нативную «кухню» за пределами кода вашего приложения.
Что происходит с потоком, когда сеть слабеет?Обратное давление с учётом GOP и ограниченные очереди не дают задержке расти бесконечно; когда транспорт отстаёт, SDK может просигналить приложению безопасно пропустить данные или запросить новый ключевой кадр.
Можно протестировать интеграцию без настоящих умных очков?Да, вариант сборки 'offline' запускает локальные lint и JVM-тесты без артефактов Meta и учётных данных устройства, а вариант 'meta' выполняет интеграцию с реальным устройством.
Что можно отслеживать, когда трансляция уже идёт?client.metrics раскрывает состояние соединения, загрузку очередей и поведение транспорта — это можно вывести в панель разработчика или экран полевой диагностики.
Creator
v-modal
Size
4.3 MB
Stars
365
Updated
CommitOct 03
Age
2mo
Commits · 90 Days