Our great sponsors
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Second, OBS.Ninja used directly in Browser Sources of OBS Studio works for me just for up to 3-4 participants. For more participants, the performance drops down and as a side-effect I regularly get video and audio quality drops. The ElectronCapture utility can help here, but IMHO it is not sophisticated enough. Especially, I wanted full control of the window positioning and also optional NDI support. Hence, I've developed another Electron desktop application, Vingester, which now allows me to run multiple Chromium-based Web browser instances and ingesting the OBS.Ninja receiver sessions as either screen/window-captured or NDI-multicasted video streams into OBS Studio.
First, OBS.Ninja has tons of cool parameters. That's great for configuring OBS.Ninja in various scenarios, but it's nasty if you just want to create intuitive, short and stable URLs for the participating parties. My first tool, OBS.Ninja Trampoline, allows you to fill out a simple form and generates a more intuitive and stable URL which can redirect to the underlying complex technical URL of OBS.Ninja. It especially allows you to control OBS.Ninja parameters at a central place while being able to use clean, intuitive and stable URLs for both the presenters and the consuming OBS Studio in video production. The tool itself is just a simple file and can be either used via the central Github Pages URL or self-hosted in order to change the parameter mapping. If you don't self-host it, you at least have to accept my opinionated set of OBS.Ninja parameters in the tool.
Yes, I know that you also experimented with NDI in your ChromiCast project. For NDI support from within Electron I used my own fork of Grandiose (see https://github.com/rse/grandiose/) which compiled under both Windows, macOS and Linux and especially (for license compliance reasons) just ad-hoc and on-the-fly assembles the NDI SDK files from the original sources (instead of distributing binaries with the source code)
You can also test some basic prototype code here: https://github.com/steveseguin/digital-greenscreen
The third point for me in using NDI is that NDI is usually part of a production environment anyway and allows great flexibility there. For instance, I've today even crafted an OBS Studio script (see https://github.com/rse/obs-scripts/blob/master/production-information.lua) which creates scene meta information inside a hidden OBS Studio scene which is then also broadcasted via NDI and as a result it can be included in my OBS.Ninja participant view (which for me is actually just a screensharing of the NDI multiviewer Livemind Recorder, showing the OBS Studio Preview and Program plus this meta information plus all the ingested NDI streams).