{"adoption": {"forks": 603, "observed_at": "2026-08-28T04:07:16.123815+00:00", "stars": 2733}, "canonical_url": "https://ross.abutalabs.com/products/html5_rtsp_player", "card": {"archived": false, "artifact_type": "library", "description": "Play RTSP stream from IP camera in browser in this HTML5 player without plugins", "domain": ["web-development", "media"], "enriched": true, "function": ["video-processing", "http-client", "websocket"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["Streamedian/html5_rtsp_player"], "name": "Streamedian/html5_rtsp_player", "platform": ["browser"], "pushed_at": "2024-01-18T07:32:39+00:00", "repo": "Streamedian/html5_rtsp_player", "stars": 2733, "tags": ["rtsp", "html5-video", "mse", "ip-camera", "h264", "aac", "streaming", "websocket-proxy", "video", "nodejs", "web-server"], "topics": ["aac", "h264", "html5", "ip-cameras", "javascript", "mp4", "mse", "nvr", "rtsp", "rtsp-client", "rtsp-player", "sdp", "stream", "video", "webscocket", "angular", "react"], "urls": [], "use_cases": ["play rtsp ip camera stream in browser", "view cctv cameras on a web page without plugins", "embed rtsp stream in html5 video element", "low latency camera monitoring without transcoding server", "watch nvr streams in chrome or firefox", "javascript rtsp client for web dashboard"], "what_it_is": "Streamedian is a JavaScript library implementing an RTSP client that plays IP camera streams directly in the browser over a standard HTML5 <video> element using Media Source Extensions. It muxes RTP H264/AAC payloads into MP4 fragments in the browser, relying on a lightweight server-side WebSocket proxy to retransmit RTSP streams without transcoding.", "when_to_avoid": ["you need iOS Safari or Internet Explorer support", "your streams use codecs other than H264/AAC", "you need HLS, MPEG-DASH, or WebRTC playback instead of RTSP", "you cannot deploy any server-side WebSocket proxy component"], "when_to_choose": ["you need to display RTSP IP camera feeds in modern desktop or Android browsers", "you want to avoid heavy transcoding servers and preserve full video quality", "your streams use H264 video and AAC audio", "you can run a small WebSocket proxy alongside your web server"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/html5_rtsp_player", "repo": "Streamedian/html5_rtsp_player", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "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:07:16.123815+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.123815+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:14:29.523260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c162151a0f2c4db4ad5dc29cc9b7da4deeb3e95e3399513bf425dac7214aa3a2", "fetched_at": "2026-08-28T04:07:16.123815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Streamedian/html5_rtsp_player"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 3822, "days_push": 958, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}