{"adoption": {"forks": 592, "observed_at": "2026-08-28T04:08:39.378883+00:00", "stars": 4226}, "canonical_url": "https://ross.abutalabs.com/products/v4l2loopback", "card": {"archived": false, "artifact_type": "library", "description": "v4l2-loopback device ", "domain": ["operating-systems", "developer-tools", "media"], "enriched": true, "function": ["video-processing", "graphics", "developer-tools"], "health_score": 79, "homepage": null, "language": "C", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "stable", "member_repos": ["v4l2loopback/v4l2loopback"], "name": "v4l2loopback/v4l2loopback", "platform": ["c"], "pushed_at": "2026-08-18T10:48:23+00:00", "repo": "v4l2loopback/v4l2loopback", "stars": 4226, "tags": ["kernel-module", "v4l2", "virtual-video-device", "loopback", "webcam", "streaming", "video", "linux"], "topics": [], "urls": [], "use_cases": ["create a virtual webcam for video calls", "pipe GStreamer or OBS output into a fake camera", "apply video effects to a Zoom call", "add streaming capabilities to an application via a loopback device", "feed screen capture into apps that only accept camera input", "test video pipelines without real capture hardware"], "what_it_is": "A Linux kernel module that creates virtual V4L2 loopback video devices. Applications can write video into these devices while other applications read them as if they were ordinary cameras or capture cards.", "when_to_avoid": ["you are on Windows or macOS", "you need a userspace-only solution without kernel module compilation", "you cannot install matching kernel headers or load kernel modules"], "when_to_choose": ["you need a virtual video device on Linux", "you want to route generated or processed video into camera-consuming applications", "you are building video streaming or effects tooling on Linux"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/v4l2loopback", "repo": "v4l2loopback/v4l2loopback", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "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:08:39.378883+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.378883+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:22:22.464511+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3bb1803bf8e0cc4237cbe4945f1ebdaf2159105f94d01ec9a45077596714c0b", "fetched_at": "2026-08-28T04:08:39.378883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/v4l2loopback/v4l2loopback"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5822, "days_push": 15, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}