- From: Joe Steele <steele@adobe.com>
- Date: Tue, 16 Oct 2012 14:44:46 -0700
- To: "<public-html-media@w3.org>" <public-html-media@w3.org>
- CC: Aaron Colwell <acolwell@google.com>
- Message-ID: <E4FEC1A9-9B45-424C-8315-FF70D0B15D3E@adobe.com>
If no-one has any comments on this example code -- would the editors please take an action to add this to the spec in the appropriate place? I think adding this as section 8.5 with a title of "Pre-loading keys during page-load" would work well. Joe Steele steele@adobe.com On Oct 15, 2012, at 11:54 AM, Joe Steele wrote: > I had an request from two meetings ago to produce some example code for pre-loading a MediaKeys instance independent of the HTMLMediaElements that the MediaKeys object may later be attached to. > > Here is the example I propose: > -------- > <script> > > var cdm; > > // Preload some keys when page loads > function load() > { > // Create a MediaKeys instance for the desired CDM not associated with an HTMLMediaElement > cdm = new MediaKeys("com.example.somesystem"); > if (!cdm) > throw "Could not create MediaKeys"; > > // Create a new key session using the MediaKeys instance > var keySession = cdm.createSession(NULL, NULL); > if (!keySession) > throw "Could not create MediaKeySession"; > keySession.onkeymessage="handleMessage(event)"; > > // Load an application defined key package into the key session > // The key package can be hard-coded into the page or loaded as a resource > // Loading the key package may cause additional key messages to be sent > var Uint8Array keyToPreload; > keySession.addKey(keyToPreload); > keySession.close(); > } > > // Respond to key message > function handleMessage(event) > { > var keySession = event.target; > var message = event.message; > > var xmlhttp = new XMLHttpRequest(); > xmlhttp.open("POST", "http://.../getkey", false); > xmlhttp.send(message); > > var key = new Uint8Array(xmlhttp.response); > keySession.addKey(key); > } > > // Attach pre-initialized MediaKeys to an HTMLMediaElement > function setMediaKeys() > { > var video = event.target; > var initData = event.initData; > > if (!cdm) > throw "MediaKeys was not already created!"; > if (!video.keys) > video.keys = cdm; > > // Create a new key session using the mimeType and initData > var keySession = video.keys.createSession(mimeType, initData); > if (!keySession) > throw "Could not create MediaKeySession"; > keySession.onkeymessage="handleMessage(event)"; > } > > <body onload="load()"> > <video src="foo.dash" autoplay onneedkey="setMediaKeys(event)" onkeymessage="handleMessage(event)"></video> > </body> > > </script> > -------- > > I believe this should all work within the confines of the current draft. I am intentionally leaving how the preloaded key package is derived as an exercise for the application developer, since there are many possible ways to handle that. > > Joe Steele > steele@adobe.com >
Received on Tuesday, 16 October 2012 21:45:45 UTC