Streamer Comparison - themactep/thingino-firmware GitHub Wiki
Streamer Comparison
Thingino offers four interchangeable streamer backends. Which ones you can choose depends on the branch; the branches differ in which one they ship as the default. This page summarizes features, WebUI integration, documentation, and reliability to help you pick. Branch tips and package pins move quickly — treat specifics below as accurate as of 2026-10.
Branches and defaults
| Branch | Default streamer | Streamers offered | Status |
|---|---|---|---|
ciao |
Prudynt-T | all four | User-facing stable line — releases are cut from here; recommended |
master |
Raptor | all four | Main development branch |
aperto |
timps on dev-camera profiles | all four | Development branch for the open IMP/V4L2 stack |
figata |
Raptor | Prudynt-T, Raptor, Strero (no timps) | Experimental branch on the master line |
piuma |
timps on dev-camera profiles | all four | Experimental branch built around timps |
Notes:
- The streamer is a single-choice menu (
make menuconfig-> Thingino Firmware -> Streamer Packages -> Streamer). Selecting one excludes the others. - No streamer is built for toolchain-only or
a1SoC profiles (explicitNonedefault). Onapertoandpiumathe timps default applies to dev-camera profiles; others default to no streamer. - Per-camera defconfigs can override the branch default — for example, the Wyze Cam v3 rt5370 variant pins Raptor, and the A1N NVR profile pins None.
- The old
stablebranch is frozen (last commit 2026-08-15) and is no longer offered in the image builder or docs. Builds and advice now targetciao. - On
aperto, Raptor can be selected and builds against the open IMP stack (V4L2_OPENIMP=1) instead of the vendor libimp.
At a glance
| Prudynt-T | Raptor | timps | Strero | |
|---|---|---|---|---|
| Source | themactep/prudynt-t | gtxaspec/raptor | Lu-Fi/timps | themactep/strero |
| Architecture | Monolithic daemon | Modular microservices (rhd, rsd, rwd, rmr, rvd + raptorctl) |
Single minimal daemon | Single daemon |
| Default on | ciao |
master, figata |
aperto, piuma (dev profiles) |
none |
| Protocols | RTSP (TCP/UDP, IPv6 optional), HTTP MJPEG, fMP4 over HTTP, optional WebRTC | RTSP, HTTP/MJPEG, WebRTC, SRT, raw UDP/RSP output | RTSP (H.264/H.265), SRT, fMP4 over HTTP (MSE), MJPEG, WebRTC/WHEP | RTSP |
| Video codecs | H.264, H.265, MJPEG | H.264, H.265, MJPEG | H.264, H.265, MJPEG | H.264, MJPEG |
| Audio | AAC, Opus, MP3, FLAC, G.711 (codec set is build-time configurable) | AAC and others per sink | AAC (with FAAC), G.711 | G.711A, G.711U, Opus (optional module) |
| OSD | SEI metadata (players need support) + optional burn-in (BR2_PACKAGE_PRUDYNT_T_OSD_BURNIN) |
Burned into the video — visible in every player | Burn-in with built-in TrueType rasterizer | Basic |
| Motion detection | Yes (IVS-based) | Yes | Yes (IMP_IVS) | No |
| Config file | /etc/prudynt.json (jct) |
/etc/raptor.conf (raptorctl) |
/etc/timps.conf |
JSON via jct |
| Init script | S31prudynt |
S31raptor |
S95timps |
S31strero |
| WebUI integration | Richest, most mature | Good and improving | Good, native plugin pages | None shipped |
| Documentation | Wiki + user manual chapters | raptor-docs + wiki pages | In-repo docs/ incl. AI-oriented reference, config keys, troubleshooting |
Minimal (package help text) |
| Reliability track record | Longest; the long-time default | Solid on master; most-tested pairing there |
Newer, actively maturing | Experimental |
Prudynt-T
Traditional monolithic streamer, the thingino default for most of the project's life.
Pros
- Default on
ciao, the recommended branch — the most-tested streamer/branch pairing. - Deepest WebUI integration: dedicated OSD (including timestamp burn-in options), motion, audio, and image settings pages built around it.
- Rich build-time option set: AAC/Opus/MP3/FLAC, RTSP over IPv6, recording prebuffer, optional WebRTC (libpeer), multiple OSD font backends.
- Mature motion-detection and notification plumbing (
send2telegram, speaker hooks).
Cons
- OSD is SEI metadata by default: standard players (VLC, NVRs) do not render it — you see it in the WebUI preview or via the SEI helper scripts. Burn-in exists but is an opt-in build option.
- The WebUI fMP4 browser player is H.264-only; if a stream runs H.265, preview with MJPEG mode or an external player.
- Monolithic design: one process does everything, so a fault takes down all functions.
Raptor
Modular "streaming system" of small cooperating daemons, default on master (and figata).
Pros
- OSD is burned into the video — timestamps and labels appear in any player or NVR.
- Per-stream control and rich CLI (
raptorctl), timelapse tooling, on-camera recording and ring buffers (rvd), standalone WebRTC and SRT daemons. - Full set of WebUI pages (main/sub stream, sensor, image, audio, OSD, timelapse).
- Very active development; the default on the branch where new camera features land first.
Cons
- More moving parts: several daemons plus a camera agent, so more surface to debug.
- WebUI config pages historically show only keys present in the shipped sparse
raptor.conf; unset fields can look empty even though compiled-in defaults apply (a fix showing defaults is in flight via PR #1794). - RTSP concurrent-client default is conservative (4; code cap 8 per daemon) — NVR
stacks that open many sessions may need
rtsp.max_clientsraised. - OSD WebUI page covers fewer elements than Prudynt's; some settings still done via
raptorctl/ direct config edits.
timps
"Tiny IMP Streamer" — minimal-dependency, pure-C streamer. Default on aperto and piuma.
Pros
- Small footprint and fast startup; single daemon, few dependencies.
- Modern protocol set out of the box: RTSP with H.264/H.265 and AAC/G.711, SRT, fragmented-MP4 browser preview via MSE (handles H.265 where Prudynt's player does not), MJPEG, WebRTC/WHEP.
- Built-in motion detection, on-demand encoding, optional native day/night switching.
- Ships its own WebUI plugin pages (encoder, image, OSD, audio, motion, recordings, privacy, talkback, ROI crop) — integration is native, not a fork of core pages.
- Best in-repo documentation of the four: a full config-key reference (defaults, ranges, live-vs-restart semantics per key), a features overview, and a symptom-based troubleshooting guide.
Cons
- Newest streamer with the shortest field history; expect churn, though it now has tagged releases pinned per branch.
- Some features vary per SoC or are compile-time optional — check the config-key reference for your chip before assuming a key works.
- WebUI page coverage is newer and still expanding compared to Prudynt's.
Strero
Small experimental streaming stack from themactep.
Pros
- Very small and simple; JSON configuration through the standard
jcttooling. - Optional audio module (G.711A/G.711U/Opus).
Cons
- No WebUI pages ship with it — configuration is manual.
- No dedicated documentation beyond package help text.
- Least proven of the four; treat as experimental/developer option.
Which one should you pick?
- Flashing a camera for daily use: stay on
ciaoand keep its default, Prudynt-T. It is the combination with the longest reliability record and the smoothest WebUI experience. - You need burn-in OSD that every player shows, or you live on
master: Raptor. - You want the leanest stack, H.265 browser preview, or SRT/WHEP: timps (also
the natural choice on
aperto/piumafor open-ISP work). - Curiosity/testing only: Strero.
See also Media Streaming Endpoints for the URL formats each streamer exposes.