【发布时间】:2016-11-16 15:36:27
【问题描述】:
我正在尝试在电子应用程序中包含一个预编译的二进制文件。我从电子快速启动应用程序开始,并修改了我的 renderer.js 文件以包含此代码,该代码在文件被拖放到正文时触发:
spawn = require('child_process').spawn,
ffmpeg = spawn('node_modules/.bin/ffmpeg', ['-i', clips[0], '-an', '-q:v', '1', '-vcodec', 'libx264', '-y', '-pix_fmt', 'yuv420p', '-vf', 'setsar=1,scale=trunc(iw/2)*2:trunc(ih/2)*2,crop=in_w:in_h-50:0:50', '/tmp/out21321.mp4']);
ffmpeg.stdout.on('data', data => {
console.log(`stdout: ${data}`);
});
ffmpeg.stderr.on('data', data => {
console.log(`stderr: ${data}`);
});
我已将预编译的 ffmpeg 二进制文件放入 node_modules/.bin/。在开发面板中一切正常,但是当我使用电子打包器设置应用程序时,它会在触发时向控制台抛出 spawn error ENOENT。我确实在 SO 上找到了very similar question,但这个问题似乎没有得到明确的回答。 npm page on electron-packager 确实表明它们可以捆绑,但我找不到任何有关如何捆绑的文档。
【问题讨论】:
-
这个页面告诉你你需要知道的:electron.atom.io/docs/tutorial/application-packaging 所以要么:使用 child_process.execFile,或者不使用 asar 打包