Electron

使用Widevine CDM插件 | Using Widevine CDM Plugin

Using Widevine CDM Plugin

在Electron中,您可以使用Chrome浏览器附带的Widevine CDM插件。

获取插件

由于许可原因,Electron未附带Widevine CDM插件,为了获得它,您需要首先安装官方的Chrome浏览器,该浏览器应该与您使用的Electron版本的架构和Chrome版本相匹配。

注意:主要版本的Chrome浏览器必须与Electron使用的Chrome版本相同,否则该插件即使navigator.plugins显示已加载,也不会运行。

Windows&MacOS

chrome://components/在Chrome浏览器中打开,找到WidevineCdm并确保它是最新的,然后您可以从APP_DATA/Google/Chrome/WidevineCDM/VERSION/_platform_specific/PLATFORM_ARCH/目录中找到所有插件二进制文件。

APP_DATA是系统存储应用程序数据的位置,在Windows上是%LOCALAPPDATA%macOS ~/Library/Application SupportVERSION是Widevine CDM插件的版本字符串,就像1.4.8.866PLATFORMmacwinARCHx86x64

在Windows所需的二进制文件widevinecdm.dllwidevinecdmadapter.dll,在Mac OS它们是libwidevinecdm.dylibwidevinecdmadapter.plugin。你可以将它们复制到你喜欢的任何地方,但它们必须放在一起。

Linux

在Linux插件二进制文件与Chrome浏览器一起发货,您可以在其中找到/opt/google/chrome,文件名是libwidevinecdm.solibwidevinecdmadapter.so

使用插件

获取插件文件后,您应该通过命令行开关widevinecdmadapter将Electron的路径传递给Electron --widevine-cdm-path,并将插件的版本与--widevine-cdm-version开关一起传递。

注意:虽然只有widevinecdmadapter二进制文件传递给Electron,但widevinecdm二进制文件必须放在一边。

命令行开关必须在模块ready事件app发出之前传递,并且使用此插件的页面必须启用插件。

示例代码:

const {app, BrowserWindow} = require('electron') // You have to pass the filename of `widevinecdmadapter` here, it is // * `widevinecdmadapter.plugin` on macOS, // * `libwidevinecdmadapter.so` on Linux, // * `widevinecdmadapter.dll` on Windows. app.commandLine.appendSwitch('widevine-cdm-path', '/path/to/widevinecdmadapter.plugin') // The version of plugin can be got from `chrome://plugins` page in Chrome. app.commandLine.appendSwitch('widevine-cdm-version', '1.4.8.866') let win = null app.on('ready', () => { win = new BrowserWindow{ webPreferences: { // The `plugins` have to be enabled. plugins: true } }) win.show() })

验证插件

要验证插件是否工作,可以使用以下方法:

  • 打开devtools并检查是否navigator.plugins包含Widevine CDM插件。

  • 打开https://shaka-player-demo.appspot.com/并加载使用的清单Widevine

  • 打开http://www.dash-player.com/demo/drm-test-area/,检查页面是否显示bitdash uses Widevine in your browser,然后播放视频。