Skip to content

Repository files navigation

OpenStream V1.0.1 Banner

Turn any Android phone into a wireless camera source for OBS Studio

Version Platform OBS Website

Open-source | One phone, one camera | Hardware phone encoding | Local Wi-Fi


Important

This branch simplifies OpenStream to one Android camera per OBS process and adds a native Linux build. Published V1.0.1 downloads predate these changes. Candidate builds need the device acceptance checks in docs/testing.md before release.

The supported V1.0.1 path is the legacy Android app plus the legacy OBS camera source/dock over local Wi-Fi. USB transport and USB camera-source support are not included in this release.

Quick Downloads

Step Download Install on
1 openstream-android.apk Android phone
2 openstream-obs-plugin-installer-windows-x64.exe Windows OBS PC
Fallback openstream-obs-windows-x64.zip Manual OBS plugin install

Need the non-technical walkthrough with screenshots? Start with docs/set-up.md.


What is OpenStream?

OpenStream V1.0.1 sends your Android phone camera directly into OBS Studio over local Wi-Fi. It uses Camera2, MediaCodec video/audio encoding, MPEG-TS muxing, SRT transport, two-way LAN discovery, single-camera pairing, and a native OBS source plugin.

Phone camera -> hardware AVC/H.264 + AAC -> SRT over Wi-Fi -> OpenStream camera source in OBS

V1.0.1 Release

Area V1.0.1 release detail
OBS setup The OpenStream Camera Control dock provides the legacy connection and camera controls.
Scene compatibility Existing OpenStream V7 scene sources keep loading while new sources appear as OpenStream V8.
Pairing clarity One camera per OBS process, with a simple computer picker on Android.
Release polish Version defaults, release notes, and setup docs are aligned around V1.0.1.

Quick Start

1. Install the Android App

Download the APK from the release, copy it to your Android phone, open it, and allow the install prompt. Grant camera and microphone permissions on first launch.

2. Install the OBS Plugin

Download and run openstream-obs-plugin-installer-windows-x64.exe on the Windows PC that has OBS Studio installed. Restart OBS after the installer finishes.

Note

If you prefer manual installation, download openstream-obs-windows-x64.zip, extract it, and run install-openstream-plugin.bat as administrator.

3. Add One Camera in OBS

In OBS, click + in Sources, choose OpenStream V8, and press OK. Keep one OpenStream source. To use the camera in another scene, select Add Existing. If upgrading a scene with multiple camera sources, remove the extras; additional capture sessions are blocked with an explanation.

4. Pair the Phone

Open the OpenStream Android app on the same Wi-Fi network as the PC. Its discovery panel lists available OBS computers; tap yours to connect. The camera feed should appear in OBS within a few seconds.

5. Stream

Use OBS as usual. Open Docks → OpenStream Camera Control for the camera controls. Phone audio appears on the OpenStream source’s OBS mixer channel.

Tip

Use a 5 GHz or Wi-Fi 6 network, keep both devices on the same subnet, and disable VPNs or router client isolation during first setup.


Compatibility & Limits

Area Current support
Phone OS Android 10+ with Camera2 and hardware MediaCodec support.
OBS host Windows x64: OBS Studio 32.2.1. Native Linux: build against the installed OBS, Qt, and FFmpeg packages; see Linux setup. Flatpak/Snap builds are not covered.
Network Same LAN/subnet; guest Wi-Fi, VPNs, and client isolation can block discovery.
Release maturity V1.0.1. Expect device-specific camera quirks and Wi-Fi-dependent latency.

Features

Android App

Feature Details
Full HD Streaming Streams a sustainable 1080p30 camera feed over SRT, with a 720p30 fallback profile.
Hardware Encoding Uses an explicit hardware AVC/H.264 surface encoder; unsupported hardware is reported instead of silently using software video encoding.
Audio Streaming Sends microphone audio with the video stream as AAC.
Multi-Lens Switching Supports rear, ultrawide, telephoto, and front cameras when available.
Pinch-to-Zoom Smooth digital zoom with a live zoom indicator.
Screen-Off Streaming Mode Dims the phone to a black overlay while keeping capture and streaming active.
Torch and Screen Controls Keeps the phone awake and can toggle torch while streaming.
OBS Picker Choose your OBS computer and see whether the camera is available or connected.
Auto-Discovery Finds OpenStream OBS listeners on the same LAN and advertises the phone back to OBS.
Manual Connect Enable Receive manual connection from phone in OBS advanced settings, then enter the PC IP/port on the phone. Remote camera controls stay on the phone in this mode.
Live Stream Telemetry Shows frames, keyframes, transferred megabits, errors, and active lens while streaming.
Identify Overlay Displays a connection label on the phone when triggered from OBS.
Reconnect Hold Keeps a reserved OBS connection for 45 seconds after a disconnect to make brief Wi-Fi drops less disruptive.

OBS Plugin

For native Linux build and installation instructions, see docs/linux.md. Linux packages must match the OBS installation; do not copy a native plugin into a Flatpak or Snap installation.

Feature Details
Native OBS Source Adds an OpenStream V8 source type inside OBS Studio while preserving V7 scene compatibility.
Camera Dock One camera with connect, retry, stop, zoom, torch, and lens controls.
One-Click Installer Windows installer copies the plugin into the OBS plugin folder.
Single Camera One active OpenStream source per OBS process. Reuse that source across scenes.
Phone Discovery Lists discovered Android phones, includes a refresh action, and can let the phone choose the OBS computer.
Auto-Connect Listens for the Android app and connects without typing IP addresses.
Deep-Link Pairing URL Exposes an openstream://connect pairing URL with slot, port, latency, and source identity.
Separate Audio Mixer Phone microphone audio uses the OpenStream source’s OBS mixer channel.
Remote Controls Adjust zoom, torch, rear/front camera, and the phone identify overlay from the persistent dock.
Reconnect Handling Reserves and releases phones per source so streams recover into the same OBS source.

UX Flow

Moment Experience
First launch The phone explains camera/microphone access, then presents a guided discovery state over the camera preview.
OBS setup Add one OpenStream V8 source and control it from the Camera Control dock.
Pairing The phone scans for available OBS computers and provides refresh, empty-state recovery, and manual fallback.
Going live A LIVE badge, zoom chip, stream stats, and status text make the active connection visible at a glance.
Other scenes Choose Add Existing to reuse your camera without opening another session.
On-set checks Use Identify Phone in OBS to flash the connection label on the physical phone.
Battery and heat Use DISPLAY for a black screen-off overlay or STAY to keep the phone awake.

Architecture

Android phone
  Camera2 preview/capture
  MediaCodec hardware AVC/H.264 video
  MediaCodec AAC audio
  MPEG-TS muxer
  libsrt sender
        |
        | SRT media stream on port 9000
        v
Windows or native Linux PC
  OBS Studio
  OpenStream native source plugin
  FFmpeg SRT receive/decode
  OBS video frame + audio mixer output

Discovery uses UDP port 51515. Camera remote controls use the phone HTTP control server on port 9001.

Transport Defaults

Parameter Default Notes
Resolution 1920x1080 Full HD capture target
Frame rate 30 fps Bounded default to reduce heat and receiver backlog
Video codec AVC/H.264 Explicit hardware surface path
Bitrate 12 Mbps Valid tuning range is 8-50 Mbps; lower to 720p30 if a phone still runs hot
SRT latency 120 ms 80-200 ms useful range
Discovery port 51515/udp LAN discovery beacon
SRT port 9000 Media stream
Control port 9001/http Remote zoom, torch, lens

Building

Android App

Development build:

cd android
$env:JAVA_HOME = 'C:\Program Files\Android\Android Studio\jbr'
.\gradlew.bat :app:assembleDebug

Debug APK output:

android/app/build/outputs/apk/debug/app-debug.apk

Note

Normal APK builds link bundled libsrt static libraries for real network streaming. Use -Popenstream.nonStreamingCiBuild=true only for intentional source-compile checks.

Signed release build:

$env:OPENSTREAM_RELEASE_KEYSTORE = "$PWD\openstream-release.keystore"
$env:OPENSTREAM_RELEASE_STORE_PASSWORD = "<store-password>"
$env:OPENSTREAM_RELEASE_KEY_ALIAS = "<key-alias>"
$env:OPENSTREAM_RELEASE_KEY_PASSWORD = "<key-password>"
.\gradlew.bat :app:assembleRelease

OBS Plugin

For native Linux build and installation instructions, see docs/linux.md. Linux packages must match the OBS installation; do not copy a native plugin into a Flatpak or Snap installation.

The easiest local build path on Windows is the included script:

.\build_plugin.bat

To package without installing:

$env:OPENSTREAM_SKIP_INSTALL = "1"
$env:OPENSTREAM_PLUGIN_PACKAGE_DIR = "$PWD\artifacts"
.\build_plugin.bat

The package output is artifacts/openstream-obs-windows-x64.zip.


Release Notes

GitHub Actions publishes:

Asset Purpose
openstream-android.apk Signed Android app install package
openstream-obs-plugin-installer-windows-x64.exe Recommended Windows OBS plugin installer
openstream-obs-windows-x64.zip Manual OBS plugin package

See docs/release.md for release tagging and validation.


Developer Smoke Test

Validate SRT transport without OBS:

python tools/openstream_receiver.py --port 9000 --latency-ms 120 --ffplay

This is a developer/debug tool only. Normal users should install the OBS plugin.


Links

Link URL
Website OpenStream V1.0.1
Releases github.com/YashasVM/OpenStream/releases
Issues github.com/YashasVM/OpenStream/issues

Made by @YashasVM

Turn your phone into a pro OBS camera source. No cables required.

About

Turn any Android phone into a wireless camera source for OBS Studio.

Topics

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages