v1.1.67
Compatibility - choose this first
| Platform | OBS version | Download |
|---|---|---|
| Windows | 32.2.x | obs-vdoninja-windows-x64-setup.exe (recommended) or obs-vdoninja-windows-x64.zip |
| Windows | 32.0.x or 32.1.x | obs-vdoninja-windows-x64-obs32.0-32.1-setup.exe or obs-vdoninja-windows-x64-obs32.0-32.1.zip |
| Linux | 32.2.x | obs-vdoninja-linux-x86_64.tar.gz |
| macOS (Apple silicon) | 32.2.x | obs-vdoninja-macos-arm64.pkg (recommended) or obs-vdoninja-macos-arm64.zip |
Do not mix the Windows builds: OBS 32.2 uses FFmpeg 8, while OBS 32.0-32.1 use FFmpeg 7. This release has no prebuilt package for OBS 31.x or older and makes no compatibility promise for future OBS versions beyond 32.2.x.
Install
- Full install guide: https://github.com/steveseguin/ninja-obs-plugin/blob/main/INSTALL.md
- Linux install: https://github.com/steveseguin/ninja-obs-plugin/blob/main/INSTALL.md#install-linux
- macOS install: https://github.com/steveseguin/ninja-obs-plugin/blob/main/INSTALL.md#install-macos
- OBS 32.2.x Windows installer: run obs-vdoninja-windows-x64-setup.exe
- OBS 32.0.x-32.1.x Windows installer: run obs-vdoninja-windows-x64-obs32.0-32.1-setup.exe
- Windows ZIP: choose the package matching OBS, extract it, then run install.cmd
- macOS installer: run obs-vdoninja-macos-arm64.pkg
- Linux/macOS ZIP packages: extract, then run install.sh
- Post-install usage: QUICKSTART.md
Changes
Fixed
- Stop media measurements before exporting captures so probe teardown does not create false audio continuity failures.
- Rebase native receive timestamps after cached-keyframe jumps so live video is not scheduled seconds ahead and does not inflate OBS audio buffering.
- Build macOS OpenSSL dependencies for the OBS macOS 13 baseline and reject packages that silently require a newer OS.
- Replace read-only bundled files during macOS upgrades and resolve bundled dylibs beside the plugin instead of through build-machine paths.
- Release the Mach host-port reference acquired by every system CPU meter sample on macOS.
- Prioritize repeated NACK requests without expanding repair budgets or deadlines, and expire repairs that outlast the shared pacing wait.
- Correct RTX/RED packet parsing and native Opus timestamp wrapping during long-running reception.
- Wait for requested source audio observations when screenshot capture is disabled in the validation harness.
- Prevent repair backlogs from interrupting keyframe delivery and expiring recoverable packets while the RTP pacer has spare capacity.
- Resolve OBS headers installed below the include directory advertised by Arch pkg-config files.
- Respect custom XDG configuration directories in Linux per-user installation and removal.
- Keep unit-test RTC headers out of the native publisher build when libdatachannel is installed in a system include directory.
- Prevent the synthetic VP9 alpha publisher from deadlocking when retiring viewer peers or shutting down.
- Follow the selected native OBS runtime into
/usror/usr/localwhen installing on Linux, and clean both prefixes when uninstalling. - Bundle the Linux libdatachannel runtime privately and remove build-machine library search paths from release packages.
- Remove Linux plugin copies from multiarch and legacy system directories during uninstall, including the private runtime.
- Reject incompatible native OBS versions, Snap installs, and unresolved runtime dependencies before installing the Linux package.
- Restored native reception from browser publishers that negotiate a separate media peer over an existing data channel, while retaining stale-session checks.
- Prevented recurring low-bitrate NVENC keyframe freezes by retaining a 4 Mbps minimum RTP pacing rate without changing the encoder bitrate or shared packet-burst limit.
- Repaired VP9 alpha publisher test headers, optional alpha-plane writes, and RTP SSRC signaling, and prevented duplicate OBS module loading in the source stress harness.
Added
- Add packet-reordering regression tests, an opt-in impaired-network runner, and an OBS-clocked pixel-counter fixture to isolate rendering from source-decoder timing.
- Record real Linux OBS/browser frame, render, encoder and network-stress measurements, with strict regression tests for performance counters and reproducible native receiver recording/recovery tools.
- Add an Arch/AUR development source recipe with package build, real media, pacman install/reinstall/removal, and OBS initialization checks.
- Test the native archive installer against a fully installed official Ubuntu OBS package in an isolated container.
- Initialize the packaged Linux plugin with OBS 32.2.0–32.2.2 in CI, verify source registration and repeated native receiver creation/destruction, and enforce a shutdown timeout.
- Require real native media and alpha-composition tests in Linux builds, and add an optional live alpha-site smoke test for dual-track decode, viewer reload, and clean shutdown.
- Validate the same Linux release binary against official OBS 32.2.0, 32.2.1, and 32.2.2 runtimes, with 32.1.2 and 32.0.4 as incompatible-version controls.
- Run the Linux release build on main and pull requests, with isolated install/uninstall regression tests and an extracted-package ELF loading and OBS API compatibility gate.
Validation limits
- Two-hour Mac screen-capture testing remained connected but failed smooth-playback criteria under heavy local load; combined packet loss/reordering also remains a measured limitation despite improved repair scheduling.
- Software VideoToolbox 1080p60 performance is content-dependent. Windows GameCapture hardware features and actual macOS 13 execution were not verified on the Mac test host; encoder quality, adaptive-bitrate, and protection defaults remain unchanged.
- See
docs/macos-publishing-validation.mdanddocs/linux-receiver-timing-isolation.mdfor measured results, audio/presentation limitations, and reproducible checks.
Verification
- SHA-256 checksums are provided in checksums.txt.