{"adoption": {"forks": 420, "observed_at": "2026-08-28T04:06:25.054226+00:00", "stars": 2194}, "canonical_url": "https://ross.abutalabs.com/products/sgplayer", "card": {"archived": false, "artifact_type": "library", "description": "A powerful media play framework for iOS, macOS, and tvOS.", "domain": ["media", "apple-ecosystem", "cross-platform"], "enriched": true, "function": ["video-processing", "audio-processing", "graphics"], "health_score": 25, "homepage": null, "language": "Objective-C", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["libobjc/SGPlayer"], "name": "libobjc/SGPlayer", "platform": ["cpp"], "pushed_at": "2025-02-21T05:41:46+00:00", "repo": "libobjc/SGPlayer", "stars": 2194, "tags": ["media-player", "ffmpeg", "360-video", "objective-c", "hardware-acceleration", "streaming", "rtmp", "rtsp", "metal", "video", "ios", "macos", "swift"], "topics": ["player", "ios", "macos", "tvos", "ffmpeg", "360-video"], "urls": [], "use_cases": ["play video files in an iOS app with hardware acceleration", "build a 360-degree panorama video player", "stream RTMP or RTSP live video on Apple platforms", "play videos in the background on iOS", "support multiple audio and video tracks with adjustable playback speed", "build a custom media player for macOS or tvOS"], "what_it_is": "SGPlayer is a powerful media playback framework for iOS, macOS, and tvOS built on FFmpeg, Metal, and AudioToolbox. It supports 360° panorama video, hardware-accelerated H.264/H.265 decoding, RTMP/RTSP streaming, and multi-track audio/video playback.", "when_to_avoid": ["you only need simple local or HLS playback that AVPlayer already handles", "your project targets platforms outside iOS, macOS, or tvOS", "you want to avoid bundling FFmpeg and OpenSSL dependencies"], "when_to_choose": ["you need a native Apple-platform media player beyond what AVPlayer offers", "you need 360° video playback or RTMP/RTSP streaming support", "you want hardware-accelerated H.264/H.265 decoding with FFmpeg flexibility"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sgplayer", "repo": "libobjc/SGPlayer", "role": "main", "score": 35}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "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:25.054226+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.054226+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:47:16.746478+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30e8ce2fecd0f692b84a6716ebf6dc6782a6b5693e71effbacce47cd4e169614", "fetched_at": "2026-08-28T04:06:25.054226+00:00", "kind": "readme", "missing": false, "url": "https://github.com/libobjc/SGPlayer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 7, "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": 3464, "days_push": 558, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 35, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}