<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Haikal Fiqih</title>
    <description>The latest articles on DEV Community by Haikal Fiqih (@haikal_fiqih_db0d22d4fdeb).</description>
    <link>https://dev.to/haikal_fiqih_db0d22d4fdeb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4148449%2F4b592224-94d6-4c44-8224-829419d21254.png</url>
      <title>DEV Community: Haikal Fiqih</title>
      <link>https://dev.to/haikal_fiqih_db0d22d4fdeb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/haikal_fiqih_db0d22d4fdeb"/>
    <language>en</language>
    <item>
      <title>I Built an Open-Source NVIDIA Broadcast Alternative for Linux</title>
      <dc:creator>Haikal Fiqih</dc:creator>
      <pubDate>Tue, 29 Sep 2026 04:01:09 +0000</pubDate>
      <link>https://dev.to/haikal_fiqih_db0d22d4fdeb/i-built-an-open-source-nvidia-broadcast-alternative-for-linux-pfe</link>
      <guid>https://dev.to/haikal_fiqih_db0d22d4fdeb/i-built-an-open-source-nvidia-broadcast-alternative-for-linux-pfe</guid>
      <description>&lt;p&gt;Linux has great tools for developers.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;So I decided to build one.&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;Camora&lt;/strong&gt;. 🎥&lt;/p&gt;

&lt;p&gt;An open-source, real-time camera enhancement app built specifically for Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built Camora
&lt;/h2&gt;

&lt;p&gt;I wanted one app sitting between my physical camera and everything that consumes it.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Webcam → OBS / Meet / Discord&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Camora works more like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Webcam → Camora → Virtual Camera → OBS / Meet / Discord&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That gives Camora one place to process the camera feed before another application receives it.&lt;/p&gt;

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

&lt;p&gt;Probably a little excessive.&lt;/p&gt;

&lt;p&gt;But it works. :)&lt;/p&gt;

&lt;h2&gt;
  
  
  What Camora can do
&lt;/h2&gt;

&lt;p&gt;The first release includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Background blur&lt;/li&gt;
&lt;li&gt;Background removal&lt;/li&gt;
&lt;li&gt;Auto framing&lt;/li&gt;
&lt;li&gt;Low-light enhancement&lt;/li&gt;
&lt;li&gt;PipeWire virtual camera&lt;/li&gt;
&lt;li&gt;CPU inference&lt;/li&gt;
&lt;li&gt;Optional NVIDIA CUDA acceleration&lt;/li&gt;
&lt;li&gt;Camera controls through V4L2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important part for me was that these aren't just preview effects.&lt;/p&gt;

&lt;p&gt;The processed output can be exposed as a &lt;strong&gt;virtual camera&lt;/strong&gt;, so other applications can actually use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture
&lt;/h2&gt;

&lt;p&gt;At a high level:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Physical Camera
      ↓
     V4L2
      ↓
Native Capture
      ↓
Processing Pipeline
      ↓
 ┌──────────────┐
 │    Camora    │
 └──────────────┘
      ↓
PipeWire Virtual Camera
      ↓
OBS / Browser / Video Apps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The desktop interface is built with &lt;strong&gt;Flutter&lt;/strong&gt;, while the camera and processing side goes much closer to Linux itself.&lt;/p&gt;

&lt;p&gt;That meant spending a lot of time with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C++ · V4L2 · GStreamer · PipeWire · ONNX Runtime&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And for supported NVIDIA systems:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CUDA&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Making AI acceleration optional
&lt;/h2&gt;

&lt;p&gt;One thing I didn't want was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You need an NVIDIA GPU to use this."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Camora works with CPU inference by default.&lt;/p&gt;

&lt;p&gt;NVIDIA users can optionally install the CUDA runtime and Camora will use GPU acceleration.&lt;/p&gt;

&lt;p&gt;So the basic Debian package stays around &lt;strong&gt;30 MB&lt;/strong&gt;, while the much larger NVIDIA runtime is an optional download.&lt;/p&gt;

&lt;p&gt;No CUDA?&lt;/p&gt;

&lt;p&gt;Camora still works.&lt;/p&gt;
&lt;h2&gt;
  
  
  The unexpectedly difficult part
&lt;/h2&gt;

&lt;p&gt;Running a model wasn't really the hardest problem.&lt;/p&gt;

&lt;p&gt;Getting &lt;strong&gt;capture → processing → effects → preview → virtual camera&lt;/strong&gt; to behave like one real-time pipeline was much more interesting.&lt;/p&gt;

&lt;p&gt;Especially once frame synchronization, camera ownership, GPU inference, and virtual camera output all started interacting with each other.&lt;/p&gt;

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

&lt;p&gt;10/10 reasonable life decision.&lt;/p&gt;
&lt;h2&gt;
  
  
  Camora v1.0.0
&lt;/h2&gt;

&lt;p&gt;The first public Linux release is now available.&lt;/p&gt;

&lt;p&gt;You can install the Debian package directly, and NVIDIA acceleration is available as an optional runtime.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/haikallfiqih" rel="noopener noreferrer"&gt;
        haikallfiqih
      &lt;/a&gt; / &lt;a href="https://github.com/haikallfiqih/camora" rel="noopener noreferrer"&gt;
        camora
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Open-source NVIDIA Broadcast alternative for Linux
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/haikallfiqih/camora/assets/images/camora_banner.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fhaikallfiqih%2Fcamora%2FHEAD%2Fassets%2Fimages%2Fcamora_banner.png" width="100%" alt="Camora"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Camora&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;strong&gt;Open-source NVIDIA Broadcast alternative for Linux.&lt;/strong&gt;&lt;br&gt;
  Real-time camera effects and virtual camera, built for the Linux desktop
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/de820e2e952a2b7dbc85eb464f20fdd12ce5c048fff1f54e8c3381ae13077190/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e75782d4465736b746f702d4643433632343f6c6f676f3d6c696e7578266c6f676f436f6c6f723d626c61636b"&gt;&lt;img src="https://camo.githubusercontent.com/de820e2e952a2b7dbc85eb464f20fdd12ce5c048fff1f54e8c3381ae13077190/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e75782d4465736b746f702d4643433632343f6c6f676f3d6c696e7578266c6f676f436f6c6f723d626c61636b"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/5ef5280b1a7a39197c8c0af80584f4d059819bdaf89547fd7c39c23c2fcfe6c8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466c75747465722d3032353639423f6c6f676f3d666c7574746572266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/5ef5280b1a7a39197c8c0af80584f4d059819bdaf89547fd7c39c23c2fcfe6c8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466c75747465722d3032353639423f6c6f676f3d666c7574746572266c6f676f436f6c6f723d7768697465"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/eaed66a9f6fa1292a33cb69ece3df8fb01c29cfab18a2a37b1aa022da4f6c58f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f4e4e582d52756e74696d652d303035434544"&gt;&lt;img src="https://camo.githubusercontent.com/eaed66a9f6fa1292a33cb69ece3df8fb01c29cfab18a2a37b1aa022da4f6c58f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f4e4e582d52756e74696d652d303035434544"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/261de7b3d3db8a3b6ec4d16d66314f735aeda14a45a5a9550d5bce394b0480b1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e56494449412d435544412d3736423930303f6c6f676f3d6e7669646961266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/261de7b3d3db8a3b6ec4d16d66314f735aeda14a45a5a9550d5bce394b0480b1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e56494449412d435544412d3736423930303f6c6f676f3d6e7669646961266c6f676f436f6c6f723d7768697465"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is Camora?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Camora brings NVIDIA Broadcast-like camera features to Linux.&lt;/p&gt;

&lt;p&gt;Select your webcam, apply real-time effects, then use &lt;strong&gt;Camora Virtual Camera&lt;/strong&gt;
in OBS, Discord, Meet, Zoom, and other supported apps.&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;Webcam → Camora → Real-time Effects → Virtual Camera → Your Apps
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Background removal&lt;/li&gt;
&lt;li&gt;Background blur&lt;/li&gt;
&lt;li&gt;Background replacement&lt;/li&gt;
&lt;li&gt;Auto framing&lt;/li&gt;
&lt;li&gt;Low-light enhancement&lt;/li&gt;
&lt;li&gt;Dynamic V4L2 camera controls&lt;/li&gt;
&lt;li&gt;Resolution &amp;amp; FPS controls&lt;/li&gt;
&lt;li&gt;NVIDIA CUDA acceleration&lt;/li&gt;
&lt;li&gt;Automatic CPU fallback&lt;/li&gt;
&lt;li&gt;PipeWire virtual camera&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Audio enhancement and virtual microphone support are planned.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;

&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Camora is currently in alpha.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Ubuntu / Debian&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Download the latest &lt;code&gt;.deb&lt;/code&gt; from &lt;strong&gt;Releases&lt;/strong&gt;, then:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;sudo apt install ./camora_&lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;version&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;_amd64.deb&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Launch &lt;strong&gt;Camora&lt;/strong&gt; from your application menu.&lt;/p&gt;
&lt;p&gt;No Flutter, Python, CUDA Toolkit, or development environment is required.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Build from Source&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;REPOSITORY_URL&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; camora
flutter pub&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/haikallfiqih/camora" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you're running Linux, I'd especially love reports from different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Distros&lt;/li&gt;
&lt;li&gt;Webcams&lt;/li&gt;
&lt;li&gt;NVIDIA GPUs&lt;/li&gt;
&lt;li&gt;CPU-only systems&lt;/li&gt;
&lt;li&gt;PipeWire setups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is only &lt;strong&gt;v1.0.0&lt;/strong&gt;, so real-world hardware testing is incredibly useful.&lt;/p&gt;

&lt;p&gt;If you find something broken, open an issue.&lt;/p&gt;

&lt;p&gt;If you want to understand how it works, dig through the source.&lt;/p&gt;

&lt;p&gt;And if you want to contribute, even better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Camora is open source and available now:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/haikallfiqih/camora" rel="noopener noreferrer"&gt;https://github.com/haikallfiqih/camora&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>flutter</category>
      <category>opensource</category>
      <category>cpp</category>
    </item>
  </channel>
</rss>
