Free now2sdk Core is completely free — no license key required   See what's included →
SDK Modules Docs Pricing Platform GitHub
Get the SDK →
Free Core Object-based C++ broadcast SDK for Linux · FFmpeg · Qt6 · GTK4

Broadcast development.
Simple. Free. Linux.

now2sdk is a clean, object-based C++ SDK for building professional broadcast applications on Linux.
Playout, capture, record, mix, switch and stream — without the complexity.

C++17 · now2sdk
// LFile — from Example/Playout
#include "now2sdk.h"

LFile*    m_lFile    = new LFile();
LPreview* m_lPreview = new LPreview();

// Set props before play
m_lFile->setProps("loop", "true");
m_lFile->setProps("audio_gain", "85");
m_lFile->setProps("eof_hold", "true");

// Attach preview to Qt widget
m_lPreview->previewEnable(ui->playerPreview, true, true);
m_lPreview->previewObject(m_lFile);
m_lPreview->setProps("audio_meter", "true");

m_lFile->fileNameSet("/media/news_package.mp4");
m_lFile->play();

// Seek to 10 seconds
m_lFile->PosSet(10000.0);
// LLive — from Example/LiveDevice
#include "now2sdk.h"

LLive*    m_lLive    = new LLive();
LPreview* m_lPreview = new LPreview();

// Enable GPU decode & timecode
m_lLive->setProps("gpu", "true");
m_lLive->setProps("timecode", "true");

// Enumerate DeckLink cards
int count = 0;
m_lLive->DeviceGetCount(count);
m_lLive->DeviceSet(0);           // select first card
m_lLive->DeviceChannelSet(0);    // SDI input
m_lLive->DeviceFormatVideoSet(0); // 1080p50

// Attach preview
m_lPreview->previewEnable(ui->livePreview, true, true);
m_lPreview->previewObject(m_lLive);
m_lPreview->setProps("timecode.preview", "true");

m_lLive->Start();
// LRecorder — from Example/Recorder
#include "now2sdk.h"

LLive*     m_lLive     = new LLive();
LRecorder* m_lRecorder = new LRecorder();

// Configure output format
m_lRecorder->setContainer("mp4");
m_lRecorder->setVideoCodec("libx264");
m_lRecorder->setAudioCodec("aac");
m_lRecorder->setVideoBitrate(10000);  // 10 Mbps
m_lRecorder->setAudioBitrate(192);
m_lRecorder->setFilePath("/out/recording.mp4");

// Connect live source
m_lRecorder->recordObject(m_lLive);
m_lLive->Start();
m_lRecorder->Record();   // non-blocking

// Live stats
LRecorder::Stats stats;
m_lRecorder->getStats(stats);  // fileSizeBytes, fps...
// LMixer + LSwitcher — from Example/Switcher
#include "now2sdk.h"

LFile*     m_lFile1   = new LFile();
LFile*     m_lFile2   = new LFile();
LMixer*    m_lMixer   = new LMixer();

// Layer 0: full-screen base
m_lMixer->addLayer("base", m_lFile1, 0, 0, 0, 255, 1920, 1080);

// Layer 1: picture-in-picture
auto pip = m_lMixer->addLayer("pip", m_lFile2, 1, 1200, 100, 255, 640, 360);
pip->borderColor = "#FFFFFF";
pip->borderSize  = 5;

m_lFile1->play();
m_lFile2->play();
Debian / Ubuntu 🎩 Fedora / RHEL 🐧 Arch Linux 🖥 Qt6 & GTK4 ⚡ C++17 / C++20 🎬 FFmpeg
$0 Core SDK Cost
14 SDK Classes
C++17 Modern C++
All Linux Distros
FFmpeg Media Engine
Architecture

Source → Route → Sink → Preview.
That's the whole API.

Every class follows the same pattern: LObject sources produce frames, you connect them to LSink targets. LPreview wraps the Qt6/GTK4 widgets so you never touch them directly.

Sources
LObjectLFile File player
LObjectLLive DeckLink / NDI
LObjectLCharacter CG / Ticker
LObjectLAnimation Lottie
LObjectLSignal Test signal
Routing
LObjectLMixer GPU compositor
LObjectLSwitcher A/B switcher
Outputs (Sinks)
LSinkLRecorder MP4/MKV/MXF
LSinkLStream RTMP/SRT/NDI
LSinkLOutput DeckLink SDI/HDMI
LSinkLFrame Raw frame grab
Preview
LPreview LPreview User-facing preview class
Wraps internally:
Qt6 LVideoWidget
GTK4 LVideoWidgetGTK
You only use LPreview in your app.
SDK Core Free Core

One SDK.
Every platform.

now2sdk ships as a single .so library. Drop it into any Linux project — Qt6 or GTK4 — and get playout, capture, recording, mixing and SDI output without writing a single FFmpeg call.

Example/Output — LFile → LPreview + LOutput (DeckLink)
#include "now2sdk.h"

LFile*    m_lFile    = new LFile();
LPreview* m_lPreview = new LPreview();
LOutput*  m_lOutput  = new LOutput();

// Props
m_lFile->setProps("eof_hold", "true");

// Preview (Qt6 widget)
m_lPreview->previewEnable(ui->previewWidget, true, true);
m_lPreview->previewObject(m_lFile);
m_lPreview->setProps("audio_meter", "true");
m_lPreview->setProps("timecode.preview", "true");

// SDI output
m_lOutput->setSource(m_lFile);
m_lOutput->setDevice(0);
m_lOutput->DeviceFormatVideoSet(0); // 1080p50

m_lFile->play();
m_lOutput->setEnabled(true); // → ON AIR
100%
Free Core
Open Core

No license key.
No watermark.

Core playout, capture, recording, streaming, CG is free. Advanced broadcast features require a license.

LFile Playout
LLive Capture
LRecorder
LStream
LMixer GPU compositor
LCharacter CG
LSwitcher A/B Switcher
LAnimation Lottie
LStinger Transitions
LReplay Instant Replay
LFile · LLive

Playout &
Live Capture

Play any media file with millisecond-precise seeking, timecode support, and variable rate. Capture from Blackmagic DeckLink (SDI/HDMI) or NewTek NDI® sources on the same network.

RTMP / SRT / NDI ingress SDI / HDMI (DeckLink) ms-level seek In/Out points Variable rate Timecode TC Audio gain Filter chains
LSwitcher · LMixer

Switch &
Composite

Professional A/B program switcher with auto-transitions, Stinger overlays, and built-in CG burn-in. Compose unlimited GPU-accelerated layers with the OpenGL-powered LMixer.

Cut / Fade / Wipe Stinger transitions PRV / PGM bus GPU layer blend Alpha / crop / mask CG burn-in
LRecorder · LStream

Record &
Stream Live

Record to MP4, MKV, MOV or MXF with any FFmpeg codec (libx264, h264_nvenc). Simultaneously stream to RTMP, SRT or NDI — both from the same switcher output.

rec.setVideoCodec("h264_nvenc");
stream.setStreamUrl("srt://...");
// record + stream simultaneously
switcher.addSink(&rec);
switcher.addSink(&stream);
LCharacter · LAnimation

Live CG &
Lottie Graphics

Cairo-powered vector character generator with lower-thirds, auto-scrolling tickers, crawls, clocks and dynamic countdown timers. LAnimation renders Lottie JSON templates with runtime data injection.

Lower thirds Live clock overlay Ticker / crawl Lottie JSON Runtime data inject ThorVG engine
Built On No wrapper complexity — direct library integration

Powered by the best
open-source stack.

now2sdk integrates battle-tested libraries directly — no abstraction layers, no hidden wrappers. You get the full power of each technology with a clean C++ API on top.

FFmpeg
Core decode/encode engine. Every codec, every container.
Media Engine
Qt6
OpenGL preview widgets, GPU YUV→RGB shaders.
GUI
GTK4
GdkTexture + GtkOverlay GPU preview for GTK apps.
GUI
SDL2
Low-latency S16 PCM audio playback and monitoring.
Audio
Cairo
Vector CG engine for tickers, lower-thirds, overlays.
CG
ThorVG
Lottie JSON renderer for animated broadcast graphics.
Animation
NDI® SDK
NewTek NDI capture and output over IP network.
Network
OpenGL
GPU-accelerated compositor for multi-layer mixing.
GPU
DeckLink SDK
Blackmagic SDI/HDMI capture & hardware playout.
Hardware
Reference

Every module, explained

14 classes. One pattern. Infinite combinations.

Class Type Description License
LFile Source FFmpeg media file player. Millisecond seek, In/Out points, variable rate, timecode, audio gain & filter chains. Free
LLive Source Hardware capture from Blackmagic DeckLink (SDI/HDMI) and NewTek NDI® streams. Software normalization & FFmpeg filter graphs. Free
LCharacter Source Cairo vector CG engine. Lower-thirds, live clock, countdowns, auto-scroll crawls, tickers, image/video overlays. Free
LAnimation ThorVG-powered Lottie engine. Load JSON templates, inject text/color/image at runtime for dynamic branding.
LSignal Source Test signal and color generator. Set solid hex background or standby image as a fallback/black source. Free
LMixer Router OpenGL GPU compositor. Layers multiple sources with alpha blending, crop, border-radius, masks. Outputs YUV frames. Free
LSwitcher A/B video switcher with PRV/PGM buses. Cut, Fade, Wipe transitions. CG overlay burn-in. Requires license key.
LVideoWidget Sink Qt6 QOpenGLWidget preview with GPU YUV→RGB shader, VU meters, real-time timecode overlay, SDL2 audio. Free
LVideoWidgetGTK Sink GTK4 GPU preview widget using GdkTexture + GtkOverlay. Full-featured equivalent of LVideoWidget for GTK apps. Free
LRecorder Sink Async FFmpeg encoder sink. MP4/MKV/MOV/MXF output, x264/NVENC/VAAPI codecs, live stats, pause/resume. Free
LStream Sink Broadcast streamer sink. RTMP, SRT, NDI output with clone-to-disk support, stats, and codec control. Free
LOutput Sink Hardware playout sink. Output to Blackmagic DeckLink cards over SDI/HDMI with format auto-mapping. Free
LFrame Sink Raw CPU frame grabber. Pull YUV→RGBA converted video frames and S16 PCM audio into memory for custom processing. Free
LStinger Stinger transition engine. PNG image-sequence based animated transitions for LSwitcher. Requires license.
LReplay Instant replay engine. RSA-signed license key, challenge-response integrity, demo watermark mode available.
Pricing

Free core.
Licensed add-ons.

Core SDK is free: playout, capture, record, stream, CG, GPU mix. LSwitcher, LAnimation, LStinger and LReplay are licensed add-ons.

Licensed Add-ons
Contact

Professional broadcast modules licensed per deployment. RSA-signed keys with challenge-response integrity.

Request License
  • +LSwitcher — A/B program switcher
  • +LAnimation — Lottie / ThorVG engine
  • +LStinger — PNG-seq stinger transitions
  • +LReplay — instant replay engine
  • ·RSA-signed .lic license file
  • ·Demo/watermark mode without key
  • ·Requires Core SDK (free)

Start building broadcast apps
today. For free.

now2sdk runs on every Linux distribution. Drop in the library, include the header, ship your app.

Quick start
cmake -DCMAKE_PREFIX_PATH=./now2sdk .. && make