A Windows application that streams your iPhone camera to your PC, integrates headless OBS VirtualCam output, and wraps everything in a single WinForms UI with debug logging, tray support, and self-signed certificate generation.
-
WebSocket-based video stream from browser (publisher) to embedded WebView2 (subscriber).
-
Headless OBS integration:
- Automatically launches OBS minimized to tray
- Switches to a pre-configured profile & scene
- Starts/stops the VirtualCam output
-
Security:
- HTTP (port 8080) and HTTPS (port 8443) endpoints
- On-demand self-signed certificate generation (
Generate Certbutton)
-
User interface:
- Embedded browser (WebView2) for live video feed
- Debug log panel for real-time status messages
- Buttons for Reload, Run in Tray, Cleanup, and Generate Cert
-
Tray integration:
- Minimize to Windows notification area
- Context menu: Open & Exit
- .NET 6+ SDK (or .NET 7) installed on Windows.
- OBS Studio (version ≥ 29) installed in
C:\Program Files\obs-studio\bin\64bit\obs64.exe. - OBS-WebSocket plugin (if using OBS < 28, otherwise OBS 28+ has built-in WebSocket). Ensure it's enabled at port 4455. No password is required by default.
- WebView2 Runtime installed (for embedded browser).
git clone https://github.com/WilleLX1/IphoneCameraStreamer.git
cd IphoneCameraStreamer
dotnet build -c ReleaseSome settings must be adjusted in code or via UI until a settings panel is implemented:
-
OBS Executable Path & Working Directory
-
In
ObsHeadlessLauncher.cs, verify:private const string ObsExePath = "C:\\Program Files\\obs-studio\\bin\\64bit\\obs64.exe"; private const string ObsWorkingDir = "C:\\Program Files\\obs-studio\\bin\\64bit";
-
-
OBS Profile & Scene
- Ensure you have an OBS Profile and Scene Collection named iPhoneCam
- In
ObsHeadlessLauncher.csCLI args:--profile "iPhoneCam" --collection "iPhoneCam"
-
OBS-WebSocket Port & Password
- Default port: 4455. Change in
ObsHeadlessLauncher.csconstructor if needed. - Leave password blank or set one in OBS Settings → WebSocket.
- Default port: 4455. Change in
-
HTTPS Certificate & Password
-
The app will generate
cert.pfxin the EXE directory with default passwordchangeitvia Generate Cert button. -
To use your own cert, drop
cert.pfxalongside the EXE and update the password inProgram.cs:options.Listen(IPAddress.Any, 8443, opts => opts.UseHttps("cert.pfx", "yourpassword"));
-
-
Firewall Rules
- Open inbound ports 8080, 8443, and 4455 in Windows Firewall if streaming or OBS control across the LAN.
- Run the application (
.\bin\Debug\net6.0-windows\IphoneRemoteCamera.exe). - Generate Cert (only on first run) to create
cert.pfx. - Click Reload to launch/refresh headless OBS and VirtualCam.
- Click Run in Tray to minimize the UI.
- To stop and clean up, click Cleanup (kills OBS and exits).
- Use Open or double-click the tray icon to restore the window.
IphoneRemoteCamera/
├─ wwwroot/
│ ├─ index.html
│ ├─ result.html # subscriber page
│ ├─ publisher.js # camera publish logic
│ ├─ subscriber.js # subscriber render logic
│ └─ style.css
├─ ObsHeadlessLauncher.cs
├─ Program.cs
├─ WebSocketHandler.cs
├─ Form1.cs
├─ Form1.Designer.cs
└─ README.md
- Add a Settings panel (or external JSON config) to avoid code edits.
- Automate trusted root store import for the generated cert.
- Replace JPEG-over-WS with WebRTC or NDI for lower latency.
- Implement structured logging and health-checks.
Enjoy your iPhone-to-PC streaming!