Skip to main content

Stream iPhone Blackmagic Camera to OBS on Mac with Local RTMP

March 10, 2026

Stream your iPhone to OBS Studio with full manual camera controls. Use OBS plugins, filters, and scenes with your iPhone camera. Keep your entire streaming setup while using iPhone as a camera source.

Stream iPhone Blackmagic Camera to OBS on Mac with Local RTMP

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:

  1. Docker runs nginx-rtmp server on your Mac/PC (port 1935)
  2. iPhone publishes stream via RTMP over WiFi
  3. OBS connects to localhost and receives the stream
  4. You get full camera controls on the iPhone, live video in OBS

Note on latency: RTMP has inherent buffering delay, typically 1-2 seconds with a native arm64 container. This works fine for live streaming to platforms (YouTube/Twitch already have delay), but may not be suitable for applications where sub-second latency is critical.

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.

Build the RTMP Server Image

Most pre-built RTMP Docker images are x86/amd64, which means they run through Rosetta emulation on Apple Silicon Macs – adding CPU overhead and latency. Build a native arm64 image instead.

Create a file called Dockerfile:

FROM alpine:latest AS build

RUN apk add --no-cache build-base pcre2-dev openssl-dev zlib-dev git

ARG NGINX_VERSION=1.26.2
ARG RTMP_MODULE_VERSION=1.2.2

RUN wget -q https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz && \
    tar xzf nginx-${NGINX_VERSION}.tar.gz && \
    git clone --depth 1 -b v${RTMP_MODULE_VERSION} https://github.com/arut/nginx-rtmp-module.git

RUN cd nginx-${NGINX_VERSION} && \
    ./configure \
        --prefix=/usr/local/nginx \
        --with-http_ssl_module \
        --add-module=../nginx-rtmp-module \
        --conf-path=/etc/nginx/nginx.conf \
        --error-log-path=/var/log/nginx/error.log \
        --http-log-path=/var/log/nginx/access.log && \
    make -j$(nproc) && make install

FROM alpine:latest
RUN apk add --no-cache pcre2 openssl zlib
COPY --from=build /usr/local/nginx /usr/local/nginx
COPY --from=build /nginx-rtmp-module/stat.xsl /www/static/stat.xsl
COPY nginx-rtmp.conf /etc/nginx/nginx.conf
RUN mkdir -p /var/log/nginx /tmp/hls
EXPOSE 1935 8080
CMD ["/usr/local/nginx/sbin/nginx"]

Create nginx-rtmp.conf in the same directory:

daemon off;
error_log /dev/stdout info;

events {
    worker_connections 1024;
}

rtmp {
    server {
        listen 1935;
        chunk_size 4000;

        application stream {
            live on;
            record off;
        }

        application live {
            live on;
            record off;
        }
    }
}

http {
    server {
        listen 8080;

        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root /www/static;
        }
    }
}

Build the image (takes about a minute the first time):

docker build -t rtmp-server:arm64 .

Start RTMP Server

docker run -d --name rtmp-server -p 1935:1935 -p 8080:8080 rtmp-server:arm64

What this does:

  • Starts the native arm64 RTMP server (~25MB image)
  • Listens for streams on port 1935
  • Opens stats page on port 8080
  • Runs in background (-d flag)

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

Your iPhone needs to reach port 1935 on your Mac. macOS may not prompt you automatically, so you’ll likely need to add Docker manually:

  1. System SettingsNetworkFirewall
  2. Click Options
  3. If Docker or com.docker.backend isn’t listed, click + to add it
  4. Find Docker Desktop in Applications and add it
  5. 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 streaming services. It supports both RTMP and SRT protocols.

Update (May 2026): I’ve documented the complete XML schema reference with all valid elements, attributes, and values. Thanks to Jason for pushing me to dig deeper into 4K streaming support.

Create a file called blackmagic-rtmp.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<streaming>
    <service>
        <name>Local OBS</name>
        <servers>
            <server>
                <name>Default</name>
                <url>rtmp://192.168.1.143:1935/stream</url>
            </server>
        </servers>
        <profiles>
            <profile>
                <name>Streaming High</name>
                <config resolution="HD">
                    <bitrate>9000000</bitrate>
                    <audio-bitrate>128000</audio-bitrate>
                    <keyframe-interval>2</keyframe-interval>
                </config>
            </profile>
            <profile>
                <name>Streaming Medium</name>
                <config resolution="HD">
                    <bitrate>4500000</bitrate>
                    <audio-bitrate>128000</audio-bitrate>
                    <keyframe-interval>2</keyframe-interval>
                </config>
            </profile>
            <profile>
                <name>Streaming Low</name>
                <config resolution="HD">
                    <bitrate>3000000</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.

The resolution attribute accepts: 4K (3840x2160), HD (1920x1080), 720p (1280x720), or Open Gate (full sensor). Bitrate and audio-bitrate values are in bits per second.

The stream key is entered manually in the Blackmagic Camera app. Set it to iphone – this determines the path OBS listens on (/stream/iphone).

Save this file to iCloud Drive or AirDrop it to your iPhone.

4K Streaming

To stream in 4K (requires iPhone 15 Pro or later), use resolution="4K" with higher bitrate values:

<?xml version="1.0" encoding="UTF-8" ?>
<streaming>
    <service>
        <name>Local OBS 4K</name>
        <servers>
            <server>
                <name>Default</name>
                <url>rtmp://192.168.1.143:1935/stream</url>
            </server>
        </servers>
        <profiles>
            <profile>
                <name>4K High</name>
                <config resolution="4K">
                    <bitrate>20000000</bitrate>
                    <audio-bitrate>256000</audio-bitrate>
                    <keyframe-interval>2</keyframe-interval>
                </config>
            </profile>
            <profile>
                <name>HD Fallback</name>
                <config resolution="HD">
                    <bitrate>6000000</bitrate>
                    <audio-bitrate>128000</audio-bitrate>
                    <keyframe-interval>2</keyframe-interval>
                </config>
            </profile>
        </profiles>
    </service>
</streaming>

4K requirements: 5GHz WiFi strongly recommended. 4K at 20 Mbps needs ~2.5 MB/s sustained throughput. If you see drops, lower the bitrate to 15000000 or fall back to the HD profile.

SRT Streaming (Alternative to RTMP)

The app also supports SRT (Secure Reliable Transport), which offers lower latency and optional encryption. SRT uses MPEG-TS muxing instead of FLV:

<?xml version="1.0" encoding="UTF-8" ?>
<streaming>
    <service>
        <name>SRT to OBS</name>
        <servers>
            <server>
                <name>Default</name>
                <url>srt://192.168.1.143:9000</url>
            </server>
        </servers>
        <profiles>
            <profile>
                <name>SRT Low Latency</name>
                <low-latency/>
                <config resolution="HD">
                    <bitrate>6000000</bitrate>
                    <audio-bitrate>128000</audio-bitrate>
                    <keyframe-interval>2</keyframe-interval>
                </config>
            </profile>
        </profiles>
    </service>
</streaming>

SRT also supports authentication via the <credentials> element:

<credentials>
    <username>streamer</username>
    <password>my-passphrase</password>
</credentials>

For SRT in OBS, use the Media Source with input srt://localhost:9000 and input format mpegts.

Import to Blackmagic Camera App

  1. Install Blackmagic Camera from the App Store (free)
  2. Open the app
  3. Tap Settings/Menu (gear icon)
  4. Find Streaming or Custom RTMP
  5. Tap Import Service
  6. Select the blackmagic-rtmp.xml file
  7. 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

  1. Open OBS Studio
  2. In Sources panel (bottom), click +
  3. Select Media Source
  4. Name it: iPhone Camera
  5. Click OK

Configure Media Source

Settings:

  • UNCHECK “Local File”
  • Input: rtmp://localhost:1935/stream/iphone
  • Input Format: flv (or leave as auto)
  • Reconnect Delay: 2000 ms
  • Buffering: 1000 ms
  • 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:

  1. Open Blackmagic Camera app
  2. Select “Local OBS” service (from the XML you imported)
  3. Enter iphone as the stream key
  4. Choose “Streaming High” profile (or “Streaming Medium”/“Streaming Low” for lower bitrate)
  5. Tap the Stream button (top right)
  6. 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:

  1. Enable Apple Log color profile in Blackmagic Camera app (iPhone 15 Pro+ only)
  2. Stream to OBS - flat, log footage arrives
  3. Add Color Correction filter to iPhone source in OBS
  4. Apply LUT to convert from Apple Log to Rec. 709 or your preferred look
  5. Add scene with overlays, alerts, chat
  6. Stream to Twitch/YouTube with full production setup

Advanced Setup

Multiple iPhones

To use multiple iPhones as cameras:

  1. Import the same XML config to each iPhone
  2. Set different stream keys in each iPhone’s app UI (e.g., iphone1, iphone2)
  3. Add multiple Media Sources in OBS:
    • Source 1: rtmp://localhost:1935/stream/iphone1
    • Source 2: rtmp://localhost:1935/stream/iphone2

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 rtmp-server:arm64
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:

  1. 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
  2. Docker running?

    docker ps
    

    Should show rtmp-server running

  3. Firewall blocking?

    • macOS: System Settings → Network → Firewall → Options
    • Allow Docker incoming connections
  4. IP address correct?

    ipconfig getifaddr en0  # Mac
    ipconfig                # Windows
    

    Update XML if IP changed

  5. Port 1935 available?

    lsof -i :1935
    

    Should show Docker listening

Black Screen in OBS

  1. Verify iPhone is streaming:

    • Check iPhone shows “On Air”
    • Check stats: http://localhost:8080/stat
  2. Check Media Source settings:

    • Right-click source → Properties
    • Input: rtmp://localhost:1935/stream/iphone
    • Try changing Input Format to flv
  3. Check RTMP server logs:

    docker logs rtmp-server
    

    Should show:

    publish: name='iphone' type=live
    
  4. Restart the source:

    • Right-click → Remove
    • Add new Media Source with same settings

High Latency / Lag

With the native arm64 image, latency should be 1-2 seconds. If you’re seeing more:

  1. Lower buffering in OBS:

    • Media Source Properties → Buffering: 500 ms (minimum)
  2. Reduce resolution:

    • Stream 1080p instead of 4K if CPU is a concern
  3. Use 5GHz WiFi:

    • Both devices on 5GHz band (faster, less interference)
  4. Check you’re running the native image:

    • Run docker inspect rtmp-server --format '{{.Architecture}}'
    • Should say arm64, not amd64
    • amd64 images run through Rosetta emulation, adding CPU overhead and latency

Stream Drops / Stutters

  1. Check WiFi signal strength

    • Move iPhone/router closer
    • Reduce obstacles between devices
  2. Lower bitrate

    • 5-6 Mbps is usually stable
    • 8+ Mbps needs good WiFi
  3. Close bandwidth-heavy apps

    • Stop downloads/uploads
    • Pause cloud sync
  4. 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 rtmp-server:arm64

Rebuild image (e.g. after nginx update):

docker stop rtmp-server
docker rm rtmp-server
docker build -t rtmp-server:arm64 .
docker run -d --name rtmp-server -p 1935:1935 -p 8080:8080 rtmp-server:arm64

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: The native arm64 image runs with minimal CPU overhead. Previous versions using pre-built amd64 images through Rosetta emulation showed 400%+ CPU usage at 4K. If you see high CPU, make sure you built the image with docker build -t rtmp-server:arm64 . rather than pulling a pre-built amd64 image.

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:

RTMP Server:

Blackmagic Camera App:

  • Free from Blackmagic Design
  • Requires iOS 17+ (iPhone XR or later)
  • iPhone 15 Pro or newer required for Apple Log and 4K streaming
  • Supports manual controls, ProRes recording, custom LUTs
  • Supports both RTMP and SRT streaming protocols
  • Valid resolutions: 4K, HD, 720p, Open Gate
  • Complete XML schema reference for all config 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:

  1. Install Docker, run RTMP container (1 command)
  2. Create XML with your computer’s IP
  3. Import to Blackmagic Camera app
  4. Add Media Source in OBS
  5. Start streaming

Using this setup? Questions? Contact me.