当前位置: 首页 > 文档资料 > Electron 中文文档 >

使用 Pepper Flash 插件

优质
小牛编辑
157浏览
2023-12-01

Electron 现在支持 Pepper Flash 插件。要在 Electron 里面使用 Pepper Flash 插件,你需 要手动设置 Pepper Flash 的路径和在你的应用里启用 Pepper Flash。

Using Pepper Flash Plugin

Electron supports the Pepper Flash plugin. To use the Pepper Flash plugin in Electron, you should manually specify the location of the Pepper Flash plugin and then enable it in your application.

保留一份 Flash 插件的副本

在 macOS 和 Linux 上,您可以通过在 Chrome 浏览器的 chrome://flash 页面上找到 Pepper Flash 插件的信息。 插件的路径和版本会对 Election 对其的支持有帮助。 你也可以把插件 复制到另一个路径以保留一份副本。

Prepare a Copy of Flash Plugin

On macOS and Linux, the details of the Pepper Flash plugin can be found by navigating to chrome://flash in the Chrome browser. Its location and version are useful for Electron's Pepper Flash support. You can also copy it to another location.

添加插件在 Electron 里的开关

你可以直接在命令行中用 --ppapi-flash-path--ppapi-flash-version 或者 在 app 的准备事件前调用 app.commandLine.appendSwitch 这个方法。 同时, 打开 BrowserWindowplugins选项。

例如:

const { app, BrowserWindow } = require('electron')
const path = require('path')
// 指定 flash 路径,假定它与 main.js 放在同一目录中。
let pluginName
switch (process.platform) {
  case 'win32':
    pluginName = 'pepflashplayer.dll'
    break
  case 'darwin':
    pluginName = 'PepperFlashPlayer.plugin'
    break
  case 'linux':
    pluginName = 'libpepflashplayer.so'
    break
}
app.commandLine.appendSwitch('ppapi-flash-path', path.join(__dirname, pluginName))
// 可选:指定 flash 的版本,例如 v17.0.0.169
app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169')
app.on('ready', () => {
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {plugins: true
    }
  })
  win.loadURL(`file://${__dirname}/index.html`)
  // 一些别的什么
})

您也可以尝试加载系统安装的 Pepper Flash 插件,而不是装运 插件,其路径可以通过调用 app.getPath('pepperFlashSystemPlugin') 获取。

Add Electron Switch

You can directly add --ppapi-flash-path and --ppapi-flash-version to the Electron command line or by using the app.commandLine.appendSwitch method before the app ready event. Also, turn on plugins option of BrowserWindow.

For example:

const { app, BrowserWindow } = require('electron')
const path = require('path')
// Specify flash path, supposing it is placed in the same directory with main.js.
let pluginName
switch (process.platform) {
  case 'win32':
    pluginName = 'pepflashplayer.dll'
    break
  case 'darwin':
    pluginName = 'PepperFlashPlayer.plugin'
    break
  case 'linux':
    pluginName = 'libpepflashplayer.so'
    break
}
app.commandLine.appendSwitch('ppapi-flash-path', path.join(__dirname, pluginName))
// Optional: Specify flash version, for example, v17.0.0.169
app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169')
app.on('ready', () => {
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {plugins: true
    }
  })
  win.loadURL(`file://${__dirname}/index.html`)
  // Something else
})

You can also try loading the system wide Pepper Flash plugin instead of shipping the plugins yourself, its path can be received by calling app.getPath('pepperFlashSystemPlugin').

使用 <webview> 标签启用 Flash 插件

<webview> 标签里添加 plugins 属性。

<webview src="https://www.adobe.com/software/flash/about/" plugins></webview>

Enable Flash Plugin in a <webview> Tag

Add plugins attribute to <webview> tag.

<webview src="https://www.adobe.com/software/flash/about/" plugins></webview>

故障排查

您可以通过在控制台打印 navigator.plugins 来检查 Pepper Flash 插件是否加载 (虽然你不知道插件的路径是正确的)。

Pepper Flash 插件的操作系统必须和 Electron 的操作系统匹配。在 Windows 中, 一个常见的错误是对64位版本的 Electron 使用 32bit 版本的 Flash 插件。

在 Windows 中,传递给 --ppapi-flash-path 的路径必须使用 作为路径分隔符,使用 POSIX-style 的路径将无法工作。

对于一些操作,例如使用 RTMP 的流媒体,有必要向播放器的 .swf 文件授予更多的权限。 实现这一点的一种方式是使用 nw-flash-trust.

Troubleshooting

You can check if Pepper Flash plugin was loaded by inspecting navigator.plugins in the console of devtools (although you can't know if the plugin's path is correct).

The architecture of Pepper Flash plugin has to match Electron's one. On Windows, a common error is to use 32bit version of Flash plugin against 64bit version of Electron.

On Windows the path passed to --ppapi-flash-path has to use as path delimiter, using POSIX-style paths will not work.

For some operations, such as streaming media using RTMP, it is necessary to grant wider permissions to players’ .swf files. One way of accomplishing this, is to use nw-flash-trust.