// the find
shaka-project/shaka-packager
A media packaging and development framework for VOD and Live DASH and HLS applications, supporting Common Encryption for Widevine and other DRM Systems.
Shaka Packager is Google's production-grade tool and C++ SDK for packaging video into DASH and HLS with DRM encryption (Widevine, PlayReady, FairPlay). It's the packaging counterpart to Shaka Player — if you're building a VOD or live streaming pipeline and need to produce encrypted, multi-bitrate manifests without licensing a commercial encoder, this is the serious open-source option.
1. Codec and container coverage is genuinely broad: H264/H265/VP9/AV1/IAMF across ISO-BMFF, WebM, and MPEG2-TS, plus Dolby AC3/EAC3/AC4 and DTS — this isn't a toy packager. 2. Usable three ways: CLI binary, Docker image, and C++ SDK via a clean public header in include/packager/ — so you can embed it in a pipeline without shelling out. 3. The test suite uses golden-file segment comparison (actual .m4s/.ts output files checked in) which catches real bitstream regressions, not just API shape. 4. Actively maintained by Google's Shaka team with proper release automation (release-please, matrix builds, Docker publishing) and a security policy.
1. PlayReady, FairPlay, and Marlin are marked 'limited support' — fine for Widevine-first deployments, a problem if you're targeting iOS FairPlay as a first-class requirement. 2. Building from source is a CMake+depot_tools setup inherited from Chromium; it's not a standard cmake configure+make, and onboarding is noticeably harder than most C++ projects. 3. No transcoding — it packages what you give it, so you need a separate FFmpeg/encoding step; the pipeline boundary is explicit but the tutorials undersell how much glue you need. 4. TTML subtitle input is pass-through only (DASH), and WebVTT-in-MP4 input is still an open issue — subtitle handling is the weakest part of an otherwise solid feature set.