{"adoption": {"forks": 1375, "observed_at": "2026-08-28T04:09:31.655311+00:00", "stars": 5852}, "canonical_url": "https://ross.abutalabs.com/products/ffmpegandroid", "card": {"archived": false, "artifact_type": "application", "description": "FFmpeg实现视频裁剪、水印、转码、编解码、转Gif动图；FFmpeg本地推流、H264与RTMP实时推流直播；OpenGL滤镜特效，视频拍摄。音视频学习路线，音视频知识总结、流媒体协议", "domain": ["media", "android-tools", "tutorials", "developer-tools"], "enriched": true, "function": ["video-processing", "audio-processing", "image-processing", "streaming", "developer-tools"], "health_score": 77, "homepage": null, "language": "C", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["xufuji456/FFmpegAndroid"], "name": "xufuji456/FFmpegAndroid", "platform": ["cpp", "c"], "pushed_at": "2026-07-25T08:19:46+00:00", "repo": "xufuji456/FFmpegAndroid", "stars": 5852, "tags": ["ffmpeg", "rtmp", "rtsp", "transcoding", "watermark", "gif", "live-streaming", "opengl-filters", "jni", "ndk", "h264", "x264", "video-editing", "audio-effects", "learning-roadmap", "video", "audio", "android"], "topics": ["ffmpeg", "transcode", "watermark", "rtmp", "rtsp", "filter", "live", "screenshot", "gif", "ffprobe", "x264", "lyrics", "mixer", "videoeditor", "audioeffect"], "urls": [], "use_cases": ["crop and trim videos on android with ffmpeg", "add a watermark to a video in an android app", "transcode video files on android", "convert video to gif on android", "push rtmp live stream from an android device", "apply opengl filter effects to camera video", "learn ffmpeg and audio video development for android", "extract screenshots or frames from video"], "what_it_is": "An Android demo application integrating FFmpeg via JNI/NDK for video cropping, watermarking, transcoding, encoding/decoding, GIF conversion, screenshotting, local and RTMP/RTSP live streaming, plus OpenGL filter effects and video recording. It also serves as a multimedia learning resource with extensive docs on FFmpeg compilation, command lines, source code analysis, streaming protocols, and audio/video career roadmaps.", "when_to_avoid": ["you need an iOS, desktop, or server-side FFmpeg solution", "you want a polished production video editor rather than a demo/learning project", "you need a no-code library you can drop in without C/JNI integration work"], "when_to_choose": ["you are building an Android app that needs FFmpeg-based video editing or streaming", "you want a working JNI/NDK example of compiling and using FFmpeg on Android", "you are learning audio/video development and streaming protocols with practical demos"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ffmpegandroid", "repo": "xufuji456/FFmpegAndroid", "role": "main", "score": 75}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "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:31.655311+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.655311+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:51:53.233127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e561f9b4e5b6ca0bc149b59ccb1bcd3151ee879c367308492f73733506bb384b", "fetched_at": "2026-08-28T04:09:31.655311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xufuji456/FFmpegAndroid"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+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": 3144, "days_push": 39, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}