Open HugoCrd opened 7 years ago
dash.js doesn't support AES encryption of whole segments. MPEG Common Encryption is supported on platforms where EME is available.
I don't know the DASH-IF position on this, so I'm not sure if it would be a feature that would ever be added. Perhaps @wilaw or similar can comment then either close or label as appropriate.
None of the current DASH interop points (DASH IF, DVB DASH, HbbTV) support envelope encryption, so the drive to add this would not come from DASh IF. However, I'm all for dash.js serving the market, in addition to being a reference player. So if there is market demand to support this Azure implementation of urn:mpeg:dash:sea:aes128-cbc:2013, then we should add it. I'd prefer it was added behind a general flag, along the lines of "dashifcompliant". This can be set true by default, but it could be turned off to enable useful features like muxed A/V content and envelope encryption.
Adding some external reference https://docs.microsoft.com/en-us/azure/media-services/media-services-protect-with-aes128, keeping this issue open and re-labeling as feature request.
I'll also ask Microsoft is they are willing to do the work to support this.
Any updates on this feature? Thanks!
Any updates on supporting AES-128-CBC?
Hi,
When using AES ClearKey, does the DASH protocol mandate putting the key acquisition url in the manifest or make it optional, as I see that some players like Exoplayer allow keys to be configured with the keys direclty like so:
player.configure({
drm: {
clearKeys: {
'91341951696b5e1ba232439ecec1f12a': '0a247b0751cbf1a827e2fedfb87479a2'
}
}
});
@azeemmohd dash.js allows you to set the keys via the API as well:
function init() {
const protData = {
"org.w3.clearkey": {
"clearkeys": {
"nrQFDeRLSAKTLifXUIPiZg": "FmY0xnWCPCNaSpRG-tUuTQ"
}
}
};
var video,
player,
url = "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_ClearKey.mpd";
video = document.querySelector("video");
player = dashjs.MediaPlayer().create();
player.initialize(video, url, true);
player.setProtectionData(protData);
}
@dsilhavy Can we use a custom license delivery url in dash.js instead of providing AES key directly?
Tried: var laUrl = 'https://protectionkey.free.beeceptor.com/my/api/path'; player.setProtectionData({ "org.w3.clearkey": { "serverURL" : laUrl } //"org.w3.clearkey": { "clearkeys": { "QyFWeBI0EjQSNBI0EjQSNA":"EjQSNBI0EjQSNBI0EjQSNA" } } // KID=KEY });
Here, the dash.js player doesn't invoke the LAUrl at all, and video play doesn't start even though all segments are fetched. There are no errors thrown either in browser console. (On using Inspect)
See this example for ClearkeyDRM(Firefox,Chrome) with LaUrl address, so in the end this is using a similar to Playready and Widevine systems would use.
https://m.dtv.fi/dash/index_clearkey2.html?video=33
Study this script how to handle clearkey license request, script has a hardcoded KID=KEY lookup list but you should get the idea. Also F12 debug firefox-chrome http requests to see http payloads. https://github.com/HbbTV-Association/ReferenceApplication/blob/master/tools/test/laurl_ck.php
You should not signal any other <ContentProtection>
DRM in a manifest, just a generic CENC marker and ClearkeyDRM elements should be found. Player may still use playready or widevine if found in a manifest.
Thanks.
@Murmur \ All
Is it possible to 1) Read LaUrl from MPD file for ClearKey instead of Application\System specific settings to the player? (And is this ability implemented as a choice by players?)
We wanted to explore if the manifest file can be the source of truth, so that any additional params are not required to passed to the player separately.
The DashIF and W3C documentation calls out for LaUrl to be provided via MPD when SystemId: e2719d58-a985-b3c9-781a-b030af78d30e is used.
Tried the same, but the LaUrl is not being picked up from MPD file.
<!-- Clear Key -->
<ContentProtection schemeIdUri="urn:uuid:e2719d58-a985-b3c9-781a-b030af78d30e" value="ClearKey1.0">
<clearkey:Laurl Lic_type="EME-1.0">https://protectionkey.free.beeceptor.com/my/api/path</clearkey:Laurl>
<dashif:laurl>https://protectionkey.free.beeceptor.com/my/api/path</dashif:laurl>
</ContentProtection>
Hi!
Here's a question about how to use AES encryption (from Azure) with Dash.js. Can't find out if it's a supported feature or not.
Thanks a lot for your work!
Environment
Steps to reproduce
Go to http://dashif.org/reference/players/javascript/v2.5.0/samples/dash-if-reference-player/index.html
Use http://melusynsandbox-melusynsandbox.streaming.mediaservices.windows.net/178b0989-5e2f-4f56-8516-9ddabc28ce1a/big_buck_bunny_480p_2mb.ism/manifest(format=mpd-time-csf)
This MPD contains:
Observed behaviour
Dash does not seem to understand where to get AES key to decode the stream.
I saw here that that kind of thing was allowed: https://github.com/Dash-Industry-Forum/Conformance-and-reference-source/blob/master/conformance/MPDCrypto/test/input/encrypted/future_work/test2_protected.mpd
No request to
https://melusynsandbox.keydelivery.mediaservices.windows.net/?kid=297665ac-80af-4389-b20f-81b492b0a7c3
was madeConsole output
Thanks a lot! Best,