Electron 使用Widevine CDM插件

Posted 知否

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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插件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用DOWNstream For Electron获取离线内容的受保护播放?

Electron 使用Pepper Flash插件

我有一个使用 VUE CLI 创建的项目,并且我已经安装了 vue-electron-builder 插件

使用Vue 插件 vue-cli-plugin-electron-builder 打包原生模板时报错解决

如何在android webview中播放widevine drm内容

iOS 和 AirPlay 上的 Widevine 视频流