Open protocol · Apache-2.0

Your camera, wherever you need it.

Most camera apps decide for you what they'll talk to. We published the wire format instead. One TCP socket carries H.264 video one way and a JSON control channel both ways — so anything on your network can receive an iPhone, and drive it back.

The contract.

Everything a receiver has to understand, on one screen.

TransportA single TCP connection, full duplex. Video and control share the socket.
DiscoveryBonjour / mDNS, service type _airlive._tcp. The receiver advertises; the camera picks it by name.
FramingAn 18-byte header — magic ARLV, version, packet type, length, microsecond timestamp — then the payload.
VideoH.264, AVCC length-prefixed NALUs, 1080p. A format description first, then access units.
ControlJSON on the same socket. The camera pushes its full state on connect and after every change; the receiver sends set-commands.
CommandsISO, shutter, white balance, tint, lens, zoom, focus, FPS, colour space, stabilisation, preview LUT, and tallynone, preview, program.
AuthOptional. HMAC-SHA256 challenge over a single-use nonce; the password never crosses the wire.
LicenceApache-2.0. Use it in commercial, closed-source products. The name and logo aren't part of the grant.

Where it already goes — no code.

Before writing anything, check whether you're already covered. Airlive Bridge receives the cameras and republishes the program over the formats the industry already speaks. In practice that is most integrations, solved by picking a source in a menu.

Reached this way today: OBS Studio · vMix · Wirecast · ProPresenter · Resolume · TouchDesigner · Unreal Engine · Zoom — anything that takes an NDI or SRT source.

Where a receiver of your own wins.

Write one when you want the Mac out of the chain, or something the broadcast formats simply don't carry — like the control channel.

In the browser

WebCodecs decodes H.264 in current Chrome, Edge, Firefox and Safari. A camera preview on a web dashboard, with no plugin and no install.

Straight into a renderer

Feed frames to Unity, Unreal, TouchDesigner or a Syphon/Spout texture on the same machine — no network encode, no second copy.

Into a model

Decode to raw frames in Python and hand them to detection, tracking or auto-framing. Simpler than pulling frames back out of a broadcast stream.

Tally, outward

Your switcher already knows what's on air. Push setCue and every phone shows it — or read the camera's state and drive lights, overlays, or your presentation software.

Control without video

Set delivery to control-only and the phone streams nothing at all — it records locally while you ride exposure and lens for every camera from one place.

Embedded and headless

An 18-byte header and JSON parse anywhere — a Raspberry Pi, a rack box, a signage player. No SDK required, and no runtime to license.

Built for the way software gets written now.

The framing is deliberately boring: a fixed header and JSON. That was a design decision, and it has an effect we didn't have to argue for — an AI coding assistant can read the spec and produce a working receiver in an evening, in whatever language your stack already uses. An open protocol used to mean "if you have a developer." It now means "if you can describe what you want."

The reference implementations are open too, so there's a worked answer to compare against: Bridge in Swift and the OBS plugin in C++. Our job was to open it as far as it goes. What gets built on top isn't ours to decide.

What it doesn't do.

Worth knowing before you plan around it.

  • No audio. The protocol carries video and control only. Sound comes from your desk or a separate recorder.
  • 1080p H.264 today. That's what version 1 of the wire format carries — which is why any receiver written against it works with any camera running it.
  • Local network only. Discovery is Bonjour. Going across the internet means a receiver that republishes, such as Bridge over SRT.
  • The password is access control, not encryption. Video on the LAN is unencrypted; treat the network as you would any other production network.
  • Resolution and colour space can't change mid-take — the camera refuses those commands while rolling, on purpose.

Read the spec. Ship a receiver.

The full specification, the Swift package and both reference receivers are on GitHub.