StudioCast is intended to be an open-source Linux desktop application with a Broadcast-style UI for managing real-time audio and video effects (planned: NVIDIA Maxine on Linux + PipeWire + v4l2loopback). Open sourced equivalents for the Maxine SDK will be implemented in the future.
Status: Currently under development for initial POC/MVP. Current build is usable on Ubuntu 22.04+ with the Maxine SDK as a dependency.
StudioCast is independent and does not ship or redistribute NVIDIA Broadcast binaries.
- Video calls / streaming with a virtual camera: run the daemon to keep a v4l2loopback camera available, then use OBS/Zoom/etc. as the consumer. When supported (and when optional Maxine components are present), enable effects like noise removal or virtual background.
- Headless / scripted control: run
studiocastdas a background service and usestudiocastctlto query status, apply effect JSON, and gather a debug report.
StudioCast is known to build on Ubuntu 22.04 and 24.04.
For a one-shot prerequisites install (tuned for Ubuntu 22.04+, including 24.04):
./scripts/setup_ubuntu22.sh --deps --v4l2loopback --load-loopback --persist-loopback
./scripts/setup_ubuntu22.sh --build --build-type DebugManual build:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build build --target studiocast
build/studiocastNotes:
- CLion’s (the IDE I use) default build directory in this repo is
cmake-build-debug/. - If you hit a compiler/libstdc++ mismatch, explicitly pick a distro-matching compiler and re-configure (e.g.
g++-12on 22.04,g++-13on 24.04). - See
docs/SETUP.mdfor the full quickstart, including v4l2loopback and optional Maxine setup.
- Formatting:
./scripts/format.sh - Version:
build/studiocast --version - Maxine install (SDK + features): see
docs/maxine_install.md(or runbuild/studiocast-maxine install-hintsfor authoritative commands) - Support bundle:
build/studiocastctl debug-report --out studiocast-debug-report.txt
- The canonical effect schema type is
BroadcastCameraEffects(seesrc/core/video/effects/broadcast_effects.h). Stable effect IDs / parameter IDs / ranges for IPC + JSON live insrc/core/video/effects/broadcast_effect_contract.h. - Persistence + control plane use JSON:
build/studiocastctl effects get/GET_CONFIGreturns the canonical effects JSON.build/studiocastctl effects set --file ...sends a JSON patch (SET_VIDEO_EFFECTS_JSON) to update effects without shell-quoting issues.
- Effect availability is computed only by the daemon via
MaxineManagerand exposed inGET_STATUS.- The GUI must not try to “guess” availability client-side.
- Maxine/AI effects are GPU-only (no CPU fallback). If Maxine/GPU/driver/features are missing, those effects must be treated as unavailable.
- Simple transforms (e.g., mirror) may still run on CPU.
StudioCast includes a background daemon (studiocastd) that keeps the virtual camera available and only
starts heavy video processing when a consumer opens the v4l2loopback device (OBS/Zoom/etc.).
During development you can run it manually:
build/studiocastd
build/studiocastctl statusThe GUI (studiocast) acts as a thin controller by talking to the daemon over a Unix socket in
$XDG_RUNTIME_DIR/studiocast/studiocastd.sock.
There is also a systemd user service template in packaging/systemd/user/studiocastd.service (installation/packaging step).
- Add Maxine SDK probing tooling (no redistribution of proprietary SDK assets)
- Expand daemon control plane to audio (PipeWire-Pulse) and add more CPU/GPU effects