使用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%
mac
OS ~/Library/Application Support
。VERSION
是Widevine CDM插件的版本字符串,就像1.4.8.866
。PLATFORM
是mac
或win
。ARCH
是x86
或x64
。
在Windows所需的二进制文件widevinecdm.dll
和widevinecdmadapter.dll
,在Mac OS它们是libwidevinecdm.dylib
和widevinecdmadapter.plugin
。你可以将它们复制到你喜欢的任何地方,但它们必须放在一起。
Linux
在Linux插件二进制文件与Chrome浏览器一起发货,您可以在其中找到/opt/google/chrome
,文件名是libwidevinecdm.so
和libwidevinecdmadapter.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
,然后播放视频。