Your iPhone can be a professional wireless camera for OBS Studio on macOS. The Blackmagic Camera app gives you full manual controls - ISO, shutter angle, Apple Log, focus - streaming over your local network.
Note: This guide is for macOS. While the general approach works on Windows, the specific commands and paths differ.
What you’ll get:
- iPhone camera as an OBS source - use all your plugins and filters
- Full Blackmagic Camera app manual controls (ISO, shutter, Apple Log)
- Keep your entire OBS streaming setup - overlays, alerts, scenes
- Local network only (no cloud, no subscriptions)
- Multiple camera support (add more iPhones as sources)
What you need:
- Mac (this tutorial is macOS-specific)
- iPhone 15 Pro or later (for Apple Log profile in Blackmagic Camera app)
- Blackmagic Camera app (free from App Store)
- OBS Studio 30+
- Docker Desktop (free)
- Same WiFi network for both devices
- 15 minutes for setup
Note: The Blackmagic Camera app works on iPhone XR or later (iOS 17+), but Apple Log is only available on iPhone 15 Pro and later. If you want the professional color grading features, you need an iPhone 15 Pro, 15 Pro Max, or newer Pro models.
Tech stack: Docker + nginx-rtmp + Blackmagic Camera + OBS Studio
Quick Navigation: Setup | iPhone Config | OBS Setup | Troubleshooting
Why This Setup?
The key advantage: your iPhone becomes just another source in OBS. You keep your entire streaming setup - overlays, alerts, browser sources, plugins, filters, scenes. Everything you’ve built in OBS still works.
Other iPhone streaming solutions bypass OBS entirely or require expensive hardware. This gives you a wireless camera that integrates directly into your existing workflow.
The Blackmagic Camera app provides manual controls - ISO, shutter speed, white balance, focus, Apple Log. Professional camera features without professional camera prices.
No monthly fees. No cloud services. No special hardware. Just Docker, a free RTMP server, and your iPhone.
How It Works
┌──────────┐ ┌────────────────┐ ┌─────────────┐
│ │ WiFi │ │ localhost│ │
│ iPhone ├─────────►│ RTMP Server ├─────────►│ OBS Studio │
│ │ publish │ (Docker) │ receive │ │
└──────────┘ └────────────────┘ └─────────────┘
Port 1935 rtmp://localhost
The flow:
- Docker runs nginx-rtmp server on your Mac/PC (port 1935)
- iPhone publishes stream via RTMP over WiFi
- OBS connects to localhost and receives the stream
- You get full camera controls on the iPhone, live video in OBS
Note on latency: Expect several seconds of delay, especially with 4K streaming. This works fine for live streaming to platforms (YouTube/Twitch already have delay), but may not be suitable for real-time monitoring or live events where immediate feedback is needed.
Setup RTMP Server
Install Docker Desktop
Download Docker Desktop for Mac:
Install and launch it. Wait for the Docker whale icon to appear in your menu bar.
Start RTMP Server
Open Terminal and run:
docker run -d --name rtmp-server -p 1935:1935 -p 8080:8080 alfg/nginx-rtmp
What this does:
- Downloads nginx-rtmp container (~50MB, first time only)
- Starts RTMP server on port 1935
- Opens stats page on port 8080
- Runs in background (
-dflag)
Verify it’s running:
docker ps
You should see rtmp-server in the list.
Check stats page (optional):
Open browser to http://localhost:8080/stat - shows connected streams and bandwidth.
Configure Firewall
Allow Docker through the macOS firewall:
- System Settings → Network → Firewall
- Click Options
- Find Docker or com.docker.backend
- Set to Allow incoming connections
Configure iPhone
Find Your Mac’s IP Address
Run this in Terminal:
ipconfig getifaddr en0
Write this down - mine is 192.168.1.143, yours will be different.
Create XML Configuration File
The Blackmagic Camera app uses XML files to configure custom RTMP servers.
Create a file called blackmagic-rtmp.xml:
<?xml version="1.0" encoding="UTF-8"?>
<streaming>
<service>
<name>Local OBS</name>
<servers>
<server>
<name>Mac</name>
<url>rtmp://192.168.1.143:1935/stream</url>
<key></key>
</server>
</servers>
<profiles>
<profile>
<name>1080p30</name>
<config resolution="1080p" fps="30">
<bitrate>8000000</bitrate>
<audio-bitrate>128000</audio-bitrate>
<keyframe-interval>2</keyframe-interval>
</config>
</profile>
<profile>
<name>4K30</name>
<config resolution="2160p" fps="30">
<bitrate>15000000</bitrate>
<audio-bitrate>128000</audio-bitrate>
<keyframe-interval>2</keyframe-interval>
</config>
</profile>
</profiles>
</service>
</streaming>
Replace 192.168.1.143 with YOUR computer’s IP address from the previous step.
Save this file to iCloud Drive or AirDrop it to your iPhone.
Import to Blackmagic Camera App
- Install Blackmagic Camera from the App Store (free)
- Open the app
- Tap Settings/Menu (gear icon)
- Find Streaming or Custom RTMP
- Tap Import Service
- Select the
blackmagic-rtmp.xmlfile - You’ll see “Local OBS” in your services list
Important: Make sure your iPhone is on WiFi, not cellular.
Configure OBS Studio
Add Media Source
- Open OBS Studio
- In Sources panel (bottom), click +
- Select Media Source
- Name it:
iPhone Camera - Click OK
Configure Media Source
Settings:
- ☐ UNCHECK “Local File”
- Input:
rtmp://localhost:1935/stream/iphone - Input Format:
flv(or leave as auto) - Reconnect Delay:
2000ms - Buffering:
1000ms - ☑ Hardware Decoding (if available)
- Click OK
You’ll see a black screen for now - that’s normal. We haven’t started streaming yet.
Start Streaming
On iPhone:
- Open Blackmagic Camera app
- Select “Local OBS” service (from the XML you imported)
- Choose “4K30” profile (or “1080p30” for lower CPU usage)
- Tap the Stream button (top right)
- Button turns red, shows “On Air”
In OBS:
The iPhone video feed should appear instantly (1-2 second delay is normal).
Adjust as needed:
- Resize/crop the source in OBS
- Add to different scenes
- Apply filters (color correction, LUTs, etc.)
Using OBS Features with iPhone Source
The power of this setup is full OBS integration. Your iPhone stream is just another media source - apply any OBS features:
OBS Filters on iPhone Stream:
- Color Correction: Apply LUTs for color grading
- Chroma Key: Green screen with your iPhone
- Crop/Pad: Frame exactly what you want
- Scaling/Aspect Ratio: Match your canvas
- Sharpening: Enhance image quality
Mix with Other Sources:
- Layer iPhone video with screen captures
- Add overlays, alerts, chat widgets
- Picture-in-picture with other cameras
- Transition between iPhone and other scenes
Blackmagic Camera Manual Controls:
- ISO: Full manual control (50-25600)
- Shutter: Shutter angle (45°, 90°, 180°, 360°)
- White Balance: Kelvin or presets
- Focus: Manual focus with peaking
- Apple Log: Flat color profile for maximum dynamic range (requires iPhone 15 Pro+)
Example Workflow:
- Enable Apple Log color profile in Blackmagic Camera app (iPhone 15 Pro+ only)
- Stream to OBS - flat, log footage arrives
- Add Color Correction filter to iPhone source in OBS
- Apply LUT to convert from Apple Log to Rec. 709 or your preferred look
- Add scene with overlays, alerts, chat
- Stream to Twitch/YouTube with full production setup
Advanced Setup
Multiple iPhones
To use multiple iPhones as cameras:
Create separate XML files with different stream keys:
<key>iphone1</key> <!-- First iPhone --> <key>iphone2</key> <!-- Second iPhone -->Import each XML to respective iPhones
Add multiple Media Sources in OBS:
- Source 1:
rtmp://localhost:1935/stream/iphone1 - Source 2:
rtmp://localhost:1935/stream/iphone2
- Source 1:
Auto-Start RTMP Server
Create a startup script to launch the server automatically.
macOS/Linux:
Save as start-rtmp.sh:
#!/bin/bash
# Check if Docker is running
if ! docker ps &> /dev/null; then
echo "Starting Docker..."
open -a Docker
sleep 15
fi
# Check if container exists
if docker ps -a | grep -q rtmp-server; then
docker start rtmp-server
else
docker run -d --name rtmp-server -p 1935:1935 -p 8080:8080 alfg/nginx-rtmp
fi
# Get local IP
LOCAL_IP=$(ipconfig getifaddr en0)
echo "RTMP Server running"
echo "iPhone URL: rtmp://$LOCAL_IP:1935/stream"
echo "OBS URL: rtmp://localhost:1935/stream/iphone"
Make it executable:
chmod +x start-rtmp.sh
Static IP Address
Set a static IP for your Mac/PC in your router’s DHCP settings. Then you won’t need to update the XML file when your IP changes.
Troubleshooting
iPhone Says “Connection Failed”
Check these in order:
Same WiFi network?
- Both devices must be on same WiFi
- Not 5GHz on one and 2.4GHz on the other
- iPhone must be on WiFi, not cellular
Docker running?
docker psShould show
rtmp-serverrunningFirewall blocking?
- macOS: System Settings → Network → Firewall → Options
- Allow Docker incoming connections
IP address correct?
ipconfig getifaddr en0 # Mac ipconfig # WindowsUpdate XML if IP changed
Port 1935 available?
lsof -i :1935Should show Docker listening
Black Screen in OBS
Verify iPhone is streaming:
- Check iPhone shows “On Air”
- Check stats:
http://localhost:8080/stat
Check Media Source settings:
- Right-click source → Properties
- Input:
rtmp://localhost:1935/stream/iphone - Try changing Input Format to
flv
Check RTMP server logs:
docker logs rtmp-serverShould show:
publish: name='iphone' type=liveRestart the source:
- Right-click → Remove
- Add new Media Source with same settings
High Latency / Lag
Note: RTMP inherently has several seconds of latency due to buffering and transcoding. This is normal and expected.
If latency is excessive (10+ seconds):
Lower buffering in OBS:
- Media Source Properties → Buffering:
500ms (minimum)
- Media Source Properties → Buffering:
Reduce resolution:
- Stream 1080p instead of 4K
- 4K significantly increases CPU load and latency
Use 5GHz WiFi:
- Both devices on 5GHz band (faster, less interference)
Check CPU usage:
- Run
docker stats rtmp-server - High CPU = thermal throttling = more latency
- Consider better cooling or lower resolution
- Run
Stream Drops / Stutters
Check WiFi signal strength
- Move iPhone/router closer
- Reduce obstacles between devices
Lower bitrate
- 5-6 Mbps is usually stable
- 8+ Mbps needs good WiFi
Close bandwidth-heavy apps
- Stop downloads/uploads
- Pause cloud sync
Restart RTMP server:
docker restart rtmp-server
Can’t Find XML File on iPhone
- Save to iCloud Drive - accessible in Files app
- Or AirDrop from Mac to iPhone
- Or email it to yourself and download on iPhone
Management Commands
Daily Use
Start server:
docker start rtmp-server
Stop server:
docker stop rtmp-server
View logs:
docker logs -f rtmp-server
Check status:
docker ps
Maintenance
Restart server:
docker restart rtmp-server
Remove and rebuild:
docker stop rtmp-server
docker rm rtmp-server
docker run -d --name rtmp-server -p 1935:1935 -p 8080:8080 alfg/nginx-rtmp
Update server image:
docker pull alfg/nginx-rtmp
docker stop rtmp-server
docker rm rtmp-server
docker run -d --name rtmp-server -p 1935:1935 -p 8080:8080 alfg/nginx-rtmp
Use Cases
Live streaming (primary use case):
- Keep your entire OBS setup - overlays, alerts, scenes, plugins
- Stream to Twitch/YouTube/Kick with iPhone as camera source
- Apply OBS filters and effects to iPhone stream in real-time
- Professional look with Apple Log + LUT color grading
- Multiple angles with multiple iPhones as different sources
Content creation benefits:
- Mix iPhone feed with screen capture, game footage, other cameras
- Use StreamFX, Move Transition, and other OBS plugins on iPhone stream
- Chroma key (green screen) with iPhone camera
- Picture-in-picture layouts with iPhone as secondary angle
- All your StreamElements/Streamlabs integrations still work
Not recommended for:
- Real-time monitoring (use HDMI capture instead)
- Live events requiring immediate feedback
- Applications where sub-second latency is critical
Why This Setup?
This is built for live streaming to platforms like YouTube and Twitch. The latency doesn’t matter when you’re already streaming with platform delay. You get professional camera controls without expensive hardware.
The Blackmagic Camera app’s manual controls matter. Auto-exposure shifts constantly. Auto white balance changes colors mid-stream. Manual locks everything down - exactly what you want when streaming.
The Blackmagic Camera app’s Apple Log profile gives 10+ stops of dynamic range. Apply a LUT in OBS, get cinematic look for your streams. Much better than standard iPhone video or cheap webcams.
Performance note: Streaming 4K will use significant CPU on the RTMP server (400%+ CPU usage observed). Consider streaming 1080p to OBS and letting your streaming encoder handle the output resolution, or ensure you have adequate cooling for sustained high CPU use.
Security Notes
This setup is local only:
- RTMP server binds to all interfaces (0.0.0.0:1935)
- Only accessible on your local network
- Not exposed to internet (unless you port forward - don’t do this)
- No authentication required (fine for home network)
If you need public access:
- Don’t expose port 1935 directly
- Use VPN instead (Tailscale, Wireguard)
- Or add nginx auth in front
- Or use a proper streaming service
For home/studio use: This setup is fine as-is.
Resources
Download Links:
- Docker Desktop for Mac: https://www.docker.com/products/docker-desktop
- OBS Studio for Mac: https://obsproject.com
- Blackmagic Camera: App Store (search “Blackmagic Camera”)
RTMP Server:
- GitHub: https://github.com/alfg/docker-nginx-rtmp
- Based on nginx-rtmp-module
- About 50MB Docker image
Blackmagic Camera App:
- Free from Blackmagic Design
- Requires iOS 17+ (iPhone XR or later)
- iPhone 15 Pro or newer required for Apple Log
- Supports manual controls, ProRes recording, custom LUTs
- Resolution depends on iPhone model (check app settings for available options)
Conclusion
This setup turns an iPhone into a professional wireless camera for OBS Studio. Free, local, full manual controls.
15 minutes to set up. Zero recurring costs. Works with multiple iPhones for multi-camera productions.
The Blackmagic Camera app’s manual controls make this worthwhile. Lock ISO, set custom white balance, enable Apple Log profile. Much better than auto-everything webcam apps.
If you’re streaming or recording content, you probably have an iPhone. Why buy a separate camera when this works?
Quick start:
- Install Docker, run RTMP container (1 command)
- Create XML with your computer’s IP
- Import to Blackmagic Camera app
- Add Media Source in OBS
- Start streaming
Using this setup? Questions? Contact me.