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.
// 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();
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.
LPreview in your app.
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.
#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
Free Core
No license key.
No watermark.
Core playout, capture, recording, streaming, CG is free. Advanced broadcast features require a license.
LFile PlayoutLLive CaptureLRecorderLStreamLMixer GPU compositorLCharacter CGLSwitcher A/B SwitcherLAnimation LottieLStinger TransitionsLReplay Instant ReplayPlayout &
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.
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.
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);
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.
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.
Every module, explained
14 classes. One pattern. Infinite combinations.
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.
The complete broadcast SDK. No license file, no watermark, no restrictions. Ship commercial products freely.
Download Free SDK- ✓LFile — media file playout
- ✓LLive — DeckLink SDI/HDMI + NDI
- ✓LRecorder — MP4/MKV/MOV/MXF
- ✓LStream — RTMP / SRT / NDI out
- ✓LMixer — OpenGL GPU compositor
- ✓LCharacter — Cairo CG / tickers
- ✓LOutput — DeckLink hardware out
- ✓LFrame — raw frame grabber
- ✓Qt6 + GTK4 preview widgets
- ✓All Linux distros — no install
- ✓Commercial use allowed
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.
cmake -DCMAKE_PREFIX_PATH=./now2sdk .. && make