Hi Guys,
We are currently looking into implementing Common encryption for DASH stream. I have read this article about common encryption support on DRM Add on (https://www.wowza.com/docs/how-to-secure-mpeg-dash-streaming-using-common-encryption-cenc), but it seems like the implementation is pretty tied to playready. I checked the API docs for details of CencDRMInfo, CencDRMInfoPlayready and CencInfo but I couldn’t find a complete reference to extend their behaviour. Just BAsed on observation, I can see that the KeyID and Encryption keys are defined twice. One for PlayReadyKeyInfo and the other for CencInfo, for example.
public void onHTTPMPEGDashEncryptionKeyLiveChunk(ILiveStreamPacketizer liveStreamPacketizer, String streamName, CencInfo cencInfo, long chunkId) throws Base64DecodingException
{
PlayReadyKeyInfo playReadyKeyInfo = new PlayReadyKeyInfo();
playReadyKeyInfo.setLicenseURL("http://myplayreadyserver.com/authenticate.aspx");
playReadyKeyInfo.setChecksum(Base64.decode("vbxgstjfSQY="));
playReadyKeyInfo.setKeyId(BufferUtils.decodeHexString("F6005DCF-7F93-4B8E-85C7-F977740DA059".replace("-", "")));
playReadyKeyInfo.setContentKey(Base64.decode("Tc2cQBPC/paTkftvaITCSQ=="));
CencDRMInfoPlayready prInfo = new CencDRMInfoPlayready();
prInfo.setPlayReadyKeyInfo(playReadyKeyInfo);
cencInfo.addDRM("myDRM:9a04f079-9840-4286-ab92-e65be0885f95", prInfo);
cencInfo.setAlgorithm(CencInfo.ALGORITHMID_CTR);
cencInfo.setKID("F6005DCF-7F93-4B8E-85C7-F977740DA059");
cencInfo.setEncKeyBytes(Base64.decode("Tc2cQBPC/paTkftvaITCSQ=="));
}
My questions are:
-
Is it really necessary to create PlayReadyKeyInfo object?
-
Can I get away with just defining CencInfo.setKID and CencInfo.SetEncKeyBytes if for example I am using a widevine DRM license server?
-
Is there any article or document to implement CENC on a none Playready based License server?
-
Is there any documentation of the APIs CencDRMInfo, CencDRMInfoPlayready and CencInfo on how to use and extend their behaviour?
Best regards,
Ferdinand