DRM: Support Manifest Delivered DRM Keys
Now that #2735 is merged, the Fragment class encrypted property now reports true for DRM signalled keys.
During the implementation of this, something I didn't address was MultiDRM streams. Currently, the data model assumes one levelkey per fragment. However, it's possible for there to be multiple levelkey(s) per fragment.
MultiDRM manifests I have found are relatively common and currently are unsupported due to the fact that we only store a single level key on a fragment. This will need to change if we want to support manifest delivered keys in a multi-key system manifest.
After we update the data model from an AES-128 Identity key centric style to support a DRM case, I see the steps roughly as;
- Discuss the extension property naming for the hls.js public config to signal a preference for manifest delivered keys or initialization segment delivered
- Add preemptive MediaKeySession negotiation for manifest delivered DRM keys if the preference is given to use them over EME "encrypted" event keys
Originally posted by @itsjamie in https://github.com/video-dev/hls.js/issues/2700#issuecomment-648527932