DEV Community

Cover image for I Built an Open-Source NVIDIA Broadcast Alternative for Linux
Haikal Fiqih
Haikal Fiqih

Posted on

I Built an Open-Source NVIDIA Broadcast Alternative for Linux

Linux has great tools for developers.

But when it comes to webcam enhancement, I kept running into the same problem: there wasn't really a Linux equivalent to the experience you get from tools like NVIDIA Broadcast.

So I decided to build one.

Meet Camora. ๐ŸŽฅ

An open-source, real-time camera enhancement app built specifically for Linux.

Why I built Camora

I wanted one app sitting between my physical camera and everything that consumes it.

Instead of:

Webcam โ†’ OBS / Meet / Discord

Camora works more like:

Webcam โ†’ Camora โ†’ Virtual Camera โ†’ OBS / Meet / Discord

That gives Camora one place to process the camera feed before another application receives it.

What started as me experimenting with a webcam eventually became a mix of Flutter, C++, V4L2, GStreamer, PipeWire, ONNX Runtime, and CUDA.

Probably a little excessive.

But it works. :)

What Camora can do

The first release includes:

  • Background blur
  • Background removal
  • Auto framing
  • Low-light enhancement
  • PipeWire virtual camera
  • CPU inference
  • Optional NVIDIA CUDA acceleration
  • Camera controls through V4L2

The important part for me was that these aren't just preview effects.

The processed output can be exposed as a virtual camera, so other applications can actually use it.

The architecture

At a high level:

Physical Camera
      โ†“
     V4L2
      โ†“
Native Capture
      โ†“
Processing Pipeline
      โ†“
 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
 โ”‚    Camora    โ”‚
 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      โ†“
PipeWire Virtual Camera
      โ†“
OBS / Browser / Video Apps
Enter fullscreen mode Exit fullscreen mode

The desktop interface is built with Flutter, while the camera and processing side goes much closer to Linux itself.

That meant spending a lot of time with:

C++ ยท V4L2 ยท GStreamer ยท PipeWire ยท ONNX Runtime

And for supported NVIDIA systems:

CUDA

Making AI acceleration optional

One thing I didn't want was:

"You need an NVIDIA GPU to use this."

Camora works with CPU inference by default.

NVIDIA users can optionally install the CUDA runtime and Camora will use GPU acceleration.

So the basic Debian package stays around 30 MB, while the much larger NVIDIA runtime is an optional download.

No CUDA?

Camora still works.

The unexpectedly difficult part

Running a model wasn't really the hardest problem.

Getting capture โ†’ processing โ†’ effects โ†’ preview โ†’ virtual camera to behave like one real-time pipeline was much more interesting.

Especially once frame synchronization, camera ownership, GPU inference, and virtual camera output all started interacting with each other.

At one point this innocent webcam experiment had me debugging V4L2, Flutter textures, GStreamer buffers, PipeWire, and CUDA in the same project.

10/10 reasonable life decision.

Camora v1.0.0

The first public Linux release is now available.

You can install the Debian package directly, and NVIDIA acceleration is available as an optional runtime.

GitHub logo haikallfiqih / camora

Open-source NVIDIA Broadcast alternative for Linux

Camora

Camora

Open-source NVIDIA Broadcast alternative for Linux.
Real-time camera effects and virtual camera, built for the Linux desktop

What is Camora?

Camora brings NVIDIA Broadcast-like camera features to Linux.

Select your webcam, apply real-time effects, then use Camora Virtual Camera in OBS, Discord, Meet, Zoom, and other supported apps.

Webcam โ†’ Camora โ†’ Real-time Effects โ†’ Virtual Camera โ†’ Your Apps

Features

  • Background removal
  • Background blur
  • Background replacement
  • Auto framing
  • Low-light enhancement
  • Dynamic V4L2 camera controls
  • Resolution & FPS controls
  • NVIDIA CUDA acceleration
  • Automatic CPU fallback
  • PipeWire virtual camera

Audio enhancement and virtual microphone support are planned.

Install

Camora is currently in alpha.

Ubuntu / Debian

Download the latest .deb from Releases, then:

sudo apt install ./camora_<version>_amd64.deb
Enter fullscreen mode Exit fullscreen mode

Launch Camora from your application menu.

No Flutter, Python, CUDA Toolkit, or development environment is required.

Build from Source

git clone <REPOSITORY_URL>
cd camora
flutter pub
โ€ฆ
Enter fullscreen mode Exit fullscreen mode

If you're running Linux, I'd especially love reports from different:

  • Distros
  • Webcams
  • NVIDIA GPUs
  • CPU-only systems
  • PipeWire setups

This is only v1.0.0, so real-world hardware testing is incredibly useful.

If you find something broken, open an issue.

If you want to understand how it works, dig through the source.

And if you want to contribute, even better.

Camora is open source and available now:

https://github.com/haikallfiqih/camora

Top comments (0)