{"adoption": {"forks": 123, "observed_at": "2026-09-03T02:15:14.919418+00:00", "stars": 1160}, "canonical_url": "https://ross.abutalabs.com/products/torchcodec", "card": {"archived": false, "artifact_type": "library", "description": "Media decoding and encoding for PyTorch: videos, images, and audio, on CPU and GPU.", "domain": ["machine-learning", "deep-learning", "media", "image-processing"], "enriched": true, "function": ["video-processing", "audio-processing", "image-processing", "machine-learning"], "health_score": 100, "homepage": "http://meta-pytorch.org/torchcodec/", "language": "Python", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["meta-pytorch/torchcodec"], "name": "meta-pytorch/torchcodec", "platform": ["python", "windows", "cross-platform"], "pushed_at": "2026-09-02T23:55:58+00:00", "repo": "meta-pytorch/torchcodec", "stars": 1160, "tags": ["pytorch", "ffmpeg", "tensor", "media-decoding", "media-encoding", "cuda", "video-decoder", "data-loading", "video", "audio", "linux", "macos", "gpu"], "topics": [], "urls": [], "use_cases": ["decode video files into pytorch tensors for training", "load video frames by index or timestamp for model training", "decode audio into tensors for speech models", "encode tensors back into video or audio files", "gpu-accelerated video decoding with cuda", "convert images to tensors without ffmpeg", "build video data loading pipelines for pytorch"], "what_it_is": "TorchCodec is a PyTorch-native library for decoding and encoding videos, audio, and images into PyTorch tensors on CPU and CUDA GPU, built on top of FFmpeg. It provides Pythonic APIs for frame-level video access, audio decoding, and encoding, designed for ML training and inference pipelines.", "when_to_avoid": ["you need a general-purpose media tool like ffmpeg CLI", "your project does not use PyTorch", "you need exotic codecs or container formats outside FFmpeg's coverage", "you need streaming playback rather than tensor decoding"], "when_to_choose": ["you train or run inference with PyTorch on video, audio, or image data", "you want tensors directly instead of numpy arrays or raw frames", "you need fast GPU (CUDA) media decoding", "you want a simple Pythonic API over FFmpeg's complexity"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/torchcodec", "repo": "meta-pytorch/torchcodec", "role": "main", "score": 87}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.919418+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:31:58.134186+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd7c5813daa4a924784caa3f217aaaf817f5902d9d1f09a8feadb7f3209423e", "fetched_at": "2026-09-03T02:15:14.919418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/meta-pytorch/torchcodec"}, {"content_hash": "fc4bcdccfb7cbab5a5410487883394bcf902ecbdd82e73933a79c67d025ccc55", "fetched_at": "2026-08-29T12:36:46.545529+00:00", "kind": "homepage", "missing": false, "url": "http://meta-pytorch.org/torchcodec/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 59, "rhythm": 85}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 826, "days_push": 0, "days_rel": 20, "gap_med": 32, "n_releases_24m": 20}, "score": 87, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}