Electron 使用Widevine CDM插件

Electron 中 ,我们可以使用 Widevine CDM 插件装载 Chrome 浏览器 。

获取插件

Electron 没有为 Widevine CDM 插件配制许可 reasons,为了获得它,首先需要安装官方的 chrome 浏览器,这匹配了体系架构和 Electron 构建使用的 chrome 版本 。

注意 Chrome 浏览器的主要版本必须和 Electron 使用的版本一样,否则插件不会有效,虽然 navigator.plugins 会显示你已经安装了它 。

Windows & OS X

Chrome 浏览器中打开 chrome://components/ ,找到 WidevineCdm 并且确定它更新到最新版本,然后就可以从 APP_DATA/Google/Chrome/WidevineCDM/VERSION/_platform_specific/PLATFORM_ARCH/ 路径找到所有的插件二进制文件 。

APP_DATA 是系统存放数据的位置,在 Windows 上为 %LOCALAPPDATA%。在 OS X 上为 ~/Library/Application Support

VERSIONWidevine CDM 插件的版本字符串,类似 1.4.8.866PLATFORMmacwinARCHx86x64

Windows 中,必要的二进制文件是 widevinecdm.dllwidevinecdmadapter.dll。在 OS X 中,则是 libwidevinecdm.dylibwidevinecdmadapter.plugin。我们可以将它们复制到任何地方,但是它们必须要放在一起。

Linux

Linux 中,Chrome 浏览器将插件的二进制文件装载在一起 ,我们可以在 /opt/google/chrome 路径下找到,文件名为 libwidevinecdm.solibwidevinecdmadapter.so

使用插件

在获得了插件文件后,我们可以使用 --widevine-cdm-path 命令行开关来将 widevinecdmadapter 的路径传递给 Electron , 插件版本使用 --widevine-cdm-version 开关。

注意虽然只有 widevinecdmadapter 的二进制文件传递给了 Electronwidevinecdm 二进制文件应当放在它的旁边。

必须在 app 模块的 ready 事件触发之前使用命令行开关,并且 page 使用的插件必须激活。

示例:
const {app, BrowserWindow} = require('electron')
app.commandLine.appendSwitch('widevine-cdm-path', '/path/to/widevinecdmadapter.plugin')
app.commandLine.appendSwitch('widevine-cdm-version', '1.4.8.866')

let win = null
app.on('ready', () => {
  win = new BrowserWindow({
    webPreferences: {
      plugins: true
    }
  })
  win.show()
})

验证插件

为了验证插件是否工作,可以使用下面的方法 :

  • 打开 devtools 开发者工具查看是否 navigator.plugins 包含了 WidevineCDM 插件。
  • 打开 https://shaka-player-demo.appspot.com/ 并加载一个使用Widevinemanifest
  • 打开 http://www.dash-player.com/de...,检查页面是否显示 bitdash uses Widevine in your browser,然后播放视频。

你可能感兴趣的:(Electron 使用Widevine CDM插件)