Android + iOS companion
Mobile Stream Studio
Beam mobile companions publish phone cameras and mobile screens into the same stream scene as browser and Windows sources.
Core Flow
Create a stream from desktop, browser, or mobile Studio. Invite additional users with the stream join token. Each companion registers its own camera, screen, or external source and publishes through the same realtime Beam room.
POST /v1/streams/{stream_id}/sources
{
"join_token": "jt_...",
"type": "camera",
"label": "Ana face camera",
"participant_id": "part_..."
}
Face Overlay Scene
Use layout type scene and normalized regions to place a face camera over the main stream. The same layout is used by browser watch pages, player embeds, desktop Studio, and mobile Studio.
POST /v1/streams/{stream_id}/layout
{
"type": "scene",
"source_ids": ["src_screen", "src_face"],
"focus_source_id": "src_screen",
"regions": [
{ "source_id": "src_screen", "x": 0, "y": 0, "width": 1, "height": 1, "role": "main" },
{ "source_id": "src_face", "x": 0.74, "y": 0.68, "width": 0.24, "height": 0.18, "role": "face", "shape": "circle", "z_index": 50 }
]
}
Mobile Implementation
The source app lives at mobile/beam-studio. It uses React Native with react-native-webrtc, so a native development build is required. Expo Go is not enough for full WebRTC publishing.
Camera streaming is wired through WebRTC. Android screen streaming needs MediaProjection support in the native build. iOS screen streaming needs a Broadcast Upload Extension before it is production-ready.