v1.4.1
Recommended over v1.4.0 — same features, plus two fixes from a Codex review.
What changed since v1.4.0
- Audio fallback extended from 150ms → 1000ms. When recording with audio enabled, the writer holds the first video frame until audio arrives. Old timeout was too tight for "audio enabled at broadcast start" — mic could easily arrive 200–400ms into AVCaptureSession warmup, causing recordings to silently become video-only with no user-visible signal.
- Audio-missing warning surfaces in UI. If the 1s timeout fires (no audio in the first second), the red error label now shows "No audio in first second — recording video only" so you know what happened.
- release.sh tag fix. v1.4.0's git tag pointed at the wrong commit (v1.3.0 code) because the release script created the GitHub release before the commit was pushed. v1.4.1 onward commits + pushes first, then creates the release pinned to the right SHA.
Cumulative since v1.0.0
- Sender: any camera as NDI source. Quality (Native/720p/540p), FPS (30/60), pixel format (BGRA/UYVY), smooth-pacing, lowest-latency mode (relaunch to apply).
- Receiver: discover + view any NDI source. Resizable, letterboxed. Tally dot (gray/yellow/green/orange). Auto-hide toolbars in fullscreen. Auto-reconnect (keeps receiver alive across source stalls).
- Audio: sender mic captured + sent over NDI. Receiver decodes + plays via AVAudioEngine. Both ends have independent toggles.
- Recording: H.264 + AAC .mov files per window. Slate prefix in filename. Auto-record when broadcast/connect starts. Save to ~/Movies/NDIStream/.
- UX: lock button per window. Status bar item with quick controls. Debug log written to ~/Desktop/NDIStream-debug.log.
- Distribution: universal binary (Apple Silicon + Intel), Developer ID signed + Apple notarized. No Gatekeeper warnings.
Install
Download NDIStream.app.zip, unzip, drag to Applications. Requires macOS 13+.