非常教程

Electron参考手册

指南 | Guides

使用Widevine CDM插件 | 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,然后播放视频。
Electron

Electron 是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。

主页 https://electron.atom.io/
源码 https://github.com/electron/electron
发布版本 1.7.9

Electron目录

1.指南 | Guides
2.指南·开发 | Guides: Development
3.Webview 组件 |
4.加速器 | Accelerator
5.API
6.API·对象 | API·Objects
7.app
8.autoUpdater
9.浏览器总览 | BrowserView
10.浏览器窗口 | BrowserWindow
11.浏览器窗口代理 | BrowserWindowProxy)
12.ClientRequest
13.剪贴板 | clipboard
14.内容追踪 | contentTracing
15.小型文字档案 | Cookies
16.crashReporter
17.调试器 | Debugger
18.desktopCapturer
19.dialog
20.电子下载 | DownloadItem
21.环境变量 | Environment Variables
22.无框窗口 | Frameless Window
23.globalShortcut
24.IncomingMessage
25.ipcMain
26.IPC渲染器 | ipcRenderer
27.语言环境 | Locales
28.画面 | Menu
29.MenuItem
30.本地图像 | nativeImage
31.net
32.通知 | Notification
33.权限监控 | powerMonitor
34.权限存储拦截器 | powerSaveBlocker
35.处理 | process
36.协议 | protocol
37.远程 | remote
38.sandbox
39.屏幕 | screen
40.会话 | session
41.shell
42.系统表现 | systemPreferences
43.触摸板 | TouchBar
44.触摸板按钮 | TouchBarButton
45.触摸板颜色选择器 | TouchBarColorPicker
46.触摸板组 | TouchBarGroup
47.触摸板标签 | TouchBarLabel
48.触摸板弹出框 | TouchBarPopover
49.触摸板清理 | TouchBarScrubber
50.触摸板分段控制 | TouchBarSegmentedControl
51.触摸板滑块 | TouchBarSlider
52.触摸板间隔 | TouchBarSpacer
53.Tray
54.网页内容 | webContents
55.网页框架 | webFrame
56.网页要求 | WebRequest
57.窗口开启 | window.open