Posted by Amir Mazzarella on March 26, 2018
You may have noticed a new page sitting at the top of the navigation bar: a "utilities" page! I've been writing it for a while and deployed it a few weeks ago, but haven't had the time to write about it. I plan to put anything I make that can be used in a browser (pretty much anything I make in JS) over there. Right now there's an EME license request generator for Playready and Widevine. You can find the code here: https://amirmazzarella.com/static/scripts/eme.js. The Widevine CDM DLL natively has a way of generating license requests, but what's useful to me is the Playready one, since the Playready one isn't as sandboxed as Widevine; it's baked into Windows 10. I added code to prevent generation of license requests if the CDM isn't present (kind of a hack-job now, but I'll fix it later, I promise!), as well as code to display your Widevine version. Widevine versions 1.4.8.984 and above need service certificates to generate a license request, so if one is on that version and a certificate is not provided, it will use the Amazon service certificate by default. Initialization data should be presented in base64 encoding, and with the Playready generator, make sure your initialization data is in the form of a base64 encoded pssh
MP4 box with proper MP4 box headers. If it isn't, it will throw an error and won't generate the request. I plan to implement code to make the initialization data conform to such standards automatically, but the status quo requires the user to do it instead.
There is a lot to be done, but I think this is a good start! I'm also planning to make another page, a "projects" page, with a list of projects I'm working on or have finished in any language, not just projects that can be run in the browser. That's all for this post, have fun with the generator!