{"adoption": {"forks": 795, "observed_at": "2026-08-28T04:07:32.370109+00:00", "stars": 2962}, "canonical_url": "https://ross.abutalabs.com/products/caincamera", "card": {"archived": false, "artifact_type": "application", "description": "CainCamera is an Android Project to learn about development of beauty camera, image and short video", "domain": ["mobile-development", "image-processing", "computer-vision", "media"], "enriched": true, "function": ["image-processing", "video-processing", "computer-vision", "graphics", "audio-processing"], "health_score": 20, "homepage": null, "language": "Java", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["CainKernel/CainCamera"], "name": "CainKernel/CainCamera", "platform": ["cpp", "jvm"], "pushed_at": "2021-10-01T12:53:27+00:00", "repo": "CainKernel/CainCamera", "stars": 2962, "tags": ["beauty-camera", "real-time-filters", "face-beautification", "opengles", "ffmpeg", "short-video-editing", "camera-app", "sticker-overlays", "learning-project", "video", "android", "mobile"], "topics": ["android", "opengles", "ffmpeg", "android-camera-surfaceview", "egl", "onpreviewframe", "videoeditor", "imageeditor"], "urls": [], "use_cases": ["build a real-time beauty camera app on android", "add live filters and face beautification to camera preview", "implement dynamic stickers over camera feed", "edit short videos with effects like tiktok", "learn opengles camera rendering on android", "build a custom ffmpeg video player with real-time effects", "segmented video recording with delete-last-clip"], "what_it_is": "An open-source Android app and set of libraries demonstrating how to build a beauty camera, image editor, and short-video editor. It implements real-time face beautification, dynamic filters and stickers, face reshaping, and TikTok-style video editing with a custom FFmpeg-based player.", "when_to_avoid": ["production use - the author warns the player has bugs and parts are unfinished", "need a stable, licensed SDK - the repo has no license and depends on a trial Face++ SDK", "need complete image or video editing - several modules are incomplete"], "when_to_choose": ["learning how beauty camera and short-video editing features are implemented on Android", "need reference code for OpenGL ES camera rendering, filters, or face landmarks", "want a TikTok-style editing UI with real-time effect preview"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/caincamera", "repo": "CainKernel/CainCamera", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "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:32.370109+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:32.370109+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:32:08.282303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d41439a3f641b19932d27daf48a3803b20fedc2ebe8f2653fed21f3669bc4d8", "fetched_at": "2026-08-28T04:07:32.370109+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CainKernel/CainCamera"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3333, "days_push": 1797, "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}}