我正在从electron-webpack样板开始构建一个电子应用程序。
我找到了这个节点模块@ffmpeg-installer/ffmpeg,它将一个兼容的预编译二进制文件安装到/node_modules目录中,然后通过访问该可执行文件的路径。
const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path这在开发期间工作得很好,但是当我构建可分发文件并运行它时,我在尝试使用该路径派生一个子进程时出现错误。可能是因为路径不指向二进制文件。
在运行可分发文件时,路径设置为以下内容。
/Users/me/project/dist/mac/AppName.app/Contents/Resources/app.asar/node_modules/@ffmpeg-installer/darwin-x64/ffmpeg但是,在查看AppName.app包内容时,我在以下路径中找到了该二进制文件。
/Users/me/project/dist/mac/AppName.app/Contents/Resources/app.asar.unpacked/node_modules/@ffmpeg-installer/darwin-x64/ffmpeg如何在使用electron-webpack和electron-builder的电子应用程序中包含二进制依赖项
发布于 2017-12-17 02:15:24
这很可能是因为电子会将应用程序捆绑在一个asar归档中(类似于zip/tar/jar)。因此,无法解析可执行文件的路径。尝试将asar: false传递给electron-builder (在electron-builder.json中)。
发布于 2020-12-28 22:23:39
安装:npm i ffmpeg-static ffprobe-static
包括在您package.json中
build{
...
"asarUnpack":[
"node_modules/ffmpeg-static/bin/${os}/${arch}/ffmpeg",
"node_modules/ffmpeg-static/index.js",
"node_modules/ffmpeg-static/package.json"
]
}在您的JS中设置路径:
const ffmpeg = require('fluent-ffmpeg');
//Get the paths to the packaged versions of the binaries we want to use
const ffmpegPath = require('ffmpeg-static').replace(
'app.asar',
'app.asar.unpacked'
);
const ffprobePath = require('ffprobe-static').path.replace(
'app.asar',
'app.asar.unpacked'
);
//tell the ffmpeg package where it can find the needed binaries.
ffmpeg.setFfmpegPath(ffmpegPath);
ffmpeg.setFfprobePath(ffprobePath);https://stackoverflow.com/questions/47848621
复制相似问题