samuelmaddock / metastream

Watch streaming media with friends.

Home Page:https://getmetastream.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support Widevine CDM

odebroqueville opened this issue · comments

I recently read the following article:
https://blog.samuelmaddock.com/posts/google-widevine-blocked-my-browser/

and thought the two following links could help you:
https://castlabs.com/news/downstream-open-source-downloader-electron/
which shows that Castlabs implemented Widevine support in their custom Electron build

https://electronjs.org/docs/tutorial/testing-widevine-cdm

It looks like Samuel is aware of this fork. #1

Wait to hear back from Widevine DRM about licensing agreement for Castlabs fork (emailed 28/12/2018 sob).

Thanks, @odebroqueville. I am aware and it's what I was planning to use. Without a license agreement with Widevine though, I won't be able to playback content from Netflix, Hulu, etc.

Even in the worst case, I think we still have a solution, although it may be heavy. The solution is switching to the Gecko kernel written by Mozilla for Firefox.

The logic of this solution is this:

  1. Firefox (and Gecko) is free software, so you can modify it and republish it.
  2. Google personally wrote the Widevine extension for Firefox. Therefore legal risks are borne by Google, not Firefox.
  3. Google will not give up support for this extension in the near future, because if they give up, Firefox users of video sites will complain, and Google as a technology partner will be under pressure.
  4. If your browser is compatible with Firefox's Widevine extension, users can install it themselves so that you can avoid all licensing problems.

A few days ago, I saw Microsoft's decision to use Chromium core in their Edge browser, and they also suggested that Mozilla use the same core for Firefox. Mozilla is of course categorically rejected.

It now appears that this decision is undoubtedly correct and valuable. Google has begun to show what it once hates. It began to use its proprietary technology to set obstacles for competitors (Just like what Microsoft did previously on Intelnet Explorer). It seems that now, whether it is Microsoft or Google, the Web will not have a bright future if the browser market is monopolized.

It's time to launch an Electron-like technology built with other cores.

@SwimmingTiger There is no (legal) technological solution with using the Widevine CDM. Verified Media Path (VMP) requires browsers to be identifiable and whitelisted by Google. According to the latest news on Widevine's website, it will soon be more strictly enforced as well.

I'd love for a Firefox version of Electron to exist, but it would still run into the same gatekeeping by Widevine for playback of DRM-enabled media.

commented

As per your blog (@samuelmaddock):

I’m now only left with two options regarding the fate of Metastream: stop development of a desktop browser version, or pivot my project to a browser extension with reduced features. The latter requiring publishing to the Google Chrome Web Store which would further entrench the project into a Google walled garden.

So ever heard of Firefox? Why not implement a Firefox extension? (actually, you Chrome/ium and Firefox extensions are largely compatible, so you could still publish to Google's app store.)

Of course, it's Widevine there too, as mentioned in this thread, but at least you need no license, as it is in the browser (if the user did not opted-out downloading it).

@rugk I had thought about implementing Metastream with a browser extension, but it would limit the vision I originally had for it. Anyway now that I'm forced to by the gatekeeping process, I'm doing just that. See #94

I would recommend giving Castlabs Electron EVS service a look. Its documentation can be found here. A quote from the linked documentation.

The Electron for Content Security VMP signing, EVS, service provides production Widevine/VMP signing of macOS/Windows application packages derived from official releases of Electron for Content Security, from v6 and onwards.

Note: This is a service that works with the normal Castlabs Electron fork, I am not just recommending using the fork by itself because as you know that would still require a certificate from Widevine.

I would recommend giving Castlabs Electron EVS service a look. Its documentation can be found here. A quote from the linked documentation.

The Electron for Content Security VMP signing, EVS, service provides production Widevine/VMP signing of macOS/Windows application packages derived from official releases of Electron for Content Security, from v6 and onwards.

Note: This is a service that works with the normal Castlabs Electron fork, I am not just recommending using the fork by itself because as you know that would still require a certificate from Widevine.

I've looked into it and it indeed works for a use case like Metastream. However, there a number of problems that come with shipping an Electron browser which I'm still considering. Ongoing related work is happening in electron-browser-shell.