{"adoption": {"forks": 456, "observed_at": "2026-08-28T04:06:09.070870+00:00", "stars": 2049}, "canonical_url": "https://ross.abutalabs.com/products/v4l2rtspserver", "card": {"archived": false, "artifact_type": "application", "description": "RTSP Server for V4L2 device capture supporting HEVC/H264/JPEG/VP8/VP9", "domain": ["media", "iot", "embedded-systems"], "enriched": true, "function": ["video-processing", "http-server", "streaming"], "health_score": 99, "homepage": null, "language": "C++", "license": "Unlicense", "license_family": "permissive", "maturity": "active", "member_repos": ["mpromonet/v4l2rtspserver"], "name": "mpromonet/v4l2rtspserver", "platform": ["cpp", "cli"], "pushed_at": "2026-08-18T18:18:42+00:00", "repo": "mpromonet/v4l2rtspserver", "stars": 2049, "tags": ["rtsp-server", "v4l2", "hls", "mpeg-dash", "rtp", "webcam-streaming", "alsa-audio", "video", "linux", "docker"], "topics": ["rtsp-server", "v4l2", "rtsp", "c-plus-plus", "hls", "v4l2-device", "mpeg-dash"], "urls": [], "use_cases": ["stream a webcam over rtsp", "serve v4l2 camera feed as hls", "stream raspberry pi camera to network", "multicast video from capture device", "rtsp server for ip camera setup", "stream camera with audio over network"], "what_it_is": "A C++ RTSP streaming server that captures video from V4L2 devices (H264, HEVC, JPEG, VP8, VP9) and optionally audio from ALSA devices, serving it over RTP/RTSP with unicast, multicast, TCP, and HTTP tunneling support. It also provides HLS and MPEG-DASH output via an HTTP server for compatible capture formats.", "when_to_avoid": ["you need to transcode video formats rather than stream native device capture", "you want a GUI-based streaming solution", "your platform is not Linux or lacks V4L2 support", "you need WebRTC playback directly without an additional gateway"], "when_to_choose": ["you need to stream V4L2 camera devices over RTSP with low latency", "you want HLS or MPEG-DASH output from a capture device", "you need multicast or RTP-over-HTTP transport options", "you run Linux-based embedded or IoT devices with cameras"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/v4l2rtspserver", "repo": "mpromonet/v4l2rtspserver", "role": "main", "score": 85}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.070870+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:57:37.839006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a05142539498daa743df9d0d6758803a907eb731b04861ae827eb38db9b318a8", "fetched_at": "2026-08-28T04:06:09.070870+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mpromonet/v4l2rtspserver"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 61}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4680, "days_push": 15, "days_rel": 45, "gap_med": 258, "n_releases_24m": 2}, "score": 85, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}