Skip to content
OAOpenAppPhysical Security as a Service
Login

Connect go2rtc for door camera live view

Door camera live view on a virtual intercom requires low-latency video in the browser. OpenApp integrates go2rtc for RTSP → WebRTC paths and exposes stream metadata on public intercom sessions via get_public_session_streams.

This guide is for building operators and integrators wiring lobby cameras to Virtual Access intercom flows. Setup: go2rtc integration.

NVR / camera (RTSP)
→ go2rtc integration (discovered stream entities)
→ Virtual intercom session (call / video)
→ GET .../sessions/{id}/streams → WebRTC for visitor UI
  1. Add go2rtc integration with NVR host, credentials, and channel discovery (getting started).
  2. Link Virtual Access portal + door entity for unlock.
  3. Start a portal session with mode": "video" when the deployment supports it — see Virtual intercom flow.
Terminal window
export OPENAPP_API_BASE='https://api.openapp.house/api/v1'
export PUBLIC_PORTAL_ID='01HPUBLICPORTAL000000000000'
export TARGET_ENTITY_ID='01HENTITY000000000000000000'
curl -sS -X POST \
-H "Content-Type: application/json" \
-d '{
"target_entity_id": "'"${TARGET_ENTITY_ID}"'",
"mode": "video"
}' \
"${OPENAPP_API_BASE}/public/access/portals/${PUBLIC_PORTAL_ID}/sessions"

Save session_id from the response.

Terminal window
export SESSION_ID='01HSESSION000000000000000000'
curl -sS \
"${OPENAPP_API_BASE}/public/access/sessions/${SESSION_ID}/streams"

Response shape: PublicSessionStreamsResponse — use fields for your WebRTC client (PeerJS / go2rtc routing). Full examples: Public Access — streams.

session = await client.public_access.portal_start_session(
portal_id,
target_entity_id=entity_id,
mode="video",
)
streams = await client.public_access.session_streams(session["session_id"])
  • Stream entities from go2rtc carry profile metadata — match the door camera channel in integration config.
  • Video paths are public session routes; do not confuse with org-scoped entity RBAC.
  • Test reachability with GET .../portals/{id}/reachable before go-live.

← Provision with scripting · MCP server setup