LiveWing
App

Sources

Cameras, NDI, OMT, video files, audio files, images, web pages, and managing input slots.

LiveWing routes every input through a named slot called a camera angle. Each angle can hold one source at a time. Slots are created dynamically as you add inputs — there is no fixed maximum. The source strip shows every active angle as a tile with a live preview thumbnail and audio meters.

Angle selector — 3 inputs, first active Angle selector — 5 inputs, third active

Source types

Cameras

Local cameras — USB webcams, Blackmagic capture cards, Elgato devices, built-in FaceTime cameras — appear through AVFoundation as avCapture sources. Each camera captures video and audio simultaneously. Audio from the camera feed enters the audio mixer on its own channel strip.

LiveWing captures at the camera's native resolution and frame rate. Scaling to the project output resolution happens downstream in the Metal render path, not during capture.

NDI

NDI sources are discovered automatically on the local network using the NDI SDK finder. Discovery runs on a background thread and updates the source list within one second of a change. NDI source names appear in MACHINE (SOURCE) format as reported by the NDI library.

Select an NDI source from the network discovery list to assign it to a slot. LiveWing connects a dedicated receiver per assigned angle.

OMT

OMT (Open Media Transport) is LiveWing's native low-latency network protocol. OMT sources are discovered via DNS-SD (Bonjour) on the _omt._tcp service type. The OMT protocol carries video in several pixel formats — UYVY, BGRA, NV12, RGBA, P216, and the VMX1 compressed variant — and audio in FPA1 (32-bit float planar). LiveWing decodes all of these and routes them into the same pipeline as local camera sources.

Video files

Any video file that AVFoundation can decode — ProRes, H.264, HEVC, and standard container formats — can be assigned to a slot. The file plays and its audio track feeds into the mixer on its own channel strip. Video files can be set to loop. When a video file source is cut to program, it begins playing automatically.

An audio-only file (MP3, WAV, AAC) assigned to a slot produces a silent video output but feeds its audio into the mixer normally. It is treated as always-live for health monitoring.

Static images

JPEG, PNG, and TIFF files produce a still frame at the source's native resolution. Image sources are always-live (never marked stale) and produce silence on their audio channel strip.

Audio devices

A standalone audio input device (USB microphone, audio interface) can be assigned as an audio-only source. It uses AVCaptureSession with only an audio input, and feeds into the mixer on its own channel strip without producing any video.

Web pages

Any URL — a local HTML file or a remote page — can be assigned as a source. LiveWing loads it in an offscreen CEF (Chromium) browser and delivers frames as Metal textures. CEF is initialized lazily the first time a web page source is added, so it has no impact when you're not using it. Web page sources are useful for bug logos, HTML clocks, or any live web content you want to composite into production.

Slot device IDs

When a preset saves a source assignment, it stores the device identifier:

  • Local camera: AVFoundation uniqueID (a UUID string)
  • OMT source: omt:SourceName
  • NDI source: ndi:SourceName
  • Video file: video: followed by the file path
  • Image file: image: followed by the file path
  • Audio device: audio: followed by the device UID
  • Web page: the URL as-is

On preset restore, LiveWing uses these IDs to reconnect each slot to its source. If a device is not present (an NDI source is offline, a camera is unplugged), the slot is left unassigned and the source can be reconnected manually.

Per-source transforms

Every source can have a visual transform applied before it enters the switcher pipeline:

  • Crop — remove a fraction of the source from each edge (left, right, top, bottom)
  • Position — center point in the output frame, expressed as 0–1 on each axis (0.5, 0.5 = centered)
  • Scale — size relative to the output frame (1.0 fills the frame)
  • Border — optional colored border, width in pixels at output resolution

A built-in PiP default places a source at 25% scale in the bottom-right corner (position 0.8, 0.8). The transform editor shows the original untransformed source alongside the preview so you can see both while adjusting.

Transforms are saved per-source in presets.

Input overlays

Any source can have other sources composited on top of it before it reaches the switcher. For example, a sign-language interpreter angle can be pinned as a PiP on a camera input. Each input overlay has its own transform (position, scale, crop, border) and z-order. LiveWing checks for circular dependencies — if adding overlay B to source A would create a cycle (A overlays B which overlays A), the addition is rejected.

Source transforms and input overlays are applied in the capture pipeline before the frame reaches the switcher. The switcher always sees the final composited frame for that slot, not the raw source.

On this page