{"adoption": {"forks": 1767, "observed_at": "2026-08-28T04:09:56.101920+00:00", "stars": 7128}, "canonical_url": "https://ross.abutalabs.com/products/zfplayer", "card": {"archived": false, "artifact_type": "library", "description": "Support customization of any player SDK and control layer(支持定制任何播放器SDK和控制层)", "domain": ["media", "mobile-development"], "enriched": true, "function": ["video-processing", "ui-components", "plugin-system"], "health_score": 20, "homepage": null, "language": "Objective-C", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["renzifeng/ZFPlayer"], "name": "renzifeng/ZFPlayer", "platform": ["cpp"], "pushed_at": "2024-05-24T02:29:56+00:00", "repo": "renzifeng/ZFPlayer", "stars": 7128, "tags": ["video-player", "objective-c", "cocoapods", "avplayer", "ijkplayer", "custom-control-layer", "media-playback", "ios", "mobile", "swift"], "topics": ["custom", "player", "controlview"], "urls": [], "use_cases": ["build a custom video player UI on iOS", "swap between AVPlayer and ijkplayer without rewriting playback code", "play videos in a scrolling list of cells", "customize player control layer (progress bar, gestures, fullscreen)", "support rotation and fullscreen video in an iOS app"], "what_it_is": "ZFPlayer is an iOS media player template library that decouples the player SDK from the control layer via the ZFPlayerMediaPlayback and ZFPlayerMediaControl protocols, letting developers plug in any player (AVPlayer, ijkplayer) and fully customize the UI. It supports both normal single-player and list-style (tableView/collectionView) playback scenarios.", "when_to_avoid": ["you need video playback on Android or cross-platform", "you want a ready-made player without custom UI work", "your project targets platforms other than iOS"], "when_to_choose": ["you need a customizable iOS video player with pluggable playback backends", "you want list/cell-based video playback with floating window support", "you're building an Objective-C or Swift iOS app needing video controls"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/zfplayer", "repo": "renzifeng/ZFPlayer", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "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:09:56.101920+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.101920+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:40:03.973578+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "928811eca7a56b1fc465a567fedaa9a6e4688f0f880902e82a9b572c873e6eab", "fetched_at": "2026-08-28T04:09:56.101920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/renzifeng/ZFPlayer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3835, "days_push": 832, "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}}