{"adoption": {"forks": 462, "observed_at": "2026-08-28T04:06:31.831827+00:00", "stars": 2261}, "canonical_url": "https://ross.abutalabs.com/products/ycvideoplayer", "card": {"archived": false, "artifact_type": "library", "description": "🔥🔥🔥 基础封装视频播放器player，可以在ExoPlayer、MediaPlayer原生MediaPlayer可以自由切换内核；该播放器整体架构：播放器内核(自由切换) + 视频播放器 + 边播边缓存 + 高度定制播放器UI视图层。支持视频简单播放，列表播放，仿抖音滑动播放，自动切换播放，使用案例丰富，拓展性强。", "domain": ["android-tools", "media", "mobile-development"], "enriched": true, "function": ["video-processing", "ui-components", "caching", "plugin-system"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["yangchong211/YCVideoPlayer"], "name": "yangchong211/YCVideoPlayer", "platform": ["jvm"], "pushed_at": "2022-04-02T08:43:14+00:00", "repo": "yangchong211/YCVideoPlayer", "stars": 2261, "tags": ["video-player", "exoplayer", "mediaplayer", "ijkplayer", "video-cache", "list-playback", "tiktok-style-playback", "customizable-ui", "android-library", "video", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["play videos in an Android app with switchable playback kernels", "implement video playback in a RecyclerView list with floating small-window playback", "build a TikTok-style vertical swipe video feed", "cache video while streaming for offline-friendly playback", "fully customize the player UI without touching player logic", "record and restore video playback positions locally", "add danmaku, ads, or trial-preview views on top of the player"], "what_it_is": "A highly extensible Android video player library that wraps multiple playback kernels (MediaPlayer, ExoPlayer, IjkPlayer) behind a unified API with free kernel switching. Its architecture separates the player kernel, video player core, cache-while-playing layer, and a fully customizable UI view layer, supporting simple playback, list playback, and TikTok-style swipe playback.", "when_to_avoid": ["you need an iOS, web, or cross-platform player", "you need playback speed with the MediaPlayer kernel (unsupported)", "you need a maintained solution with frequent updates and recent releases", "you need RTC or Tencent player kernels today (planned but not implemented)"], "when_to_choose": ["you need an Android video player with swappable MediaPlayer/ExoPlayer/IjkPlayer kernels", "you want strict decoupling between player logic, business logic, and UI views", "you need list playback, small-window playback, or swipe-based video feeds", "you want cache-while-playing and playback position persistence out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ycvideoplayer", "repo": "yangchong211/YCVideoPlayer", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "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:31.831827+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.831827+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:42:38.038417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "991983e47c5c2a4df08a261078809ee12fd08a37c31aa185e4de44ffaf50f8fc", "fetched_at": "2026-08-28T04:06:31.831827+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCVideoPlayer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3170, "days_push": 1614, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}