当前位置: 首页 > 面试题库 >

如何将预编译的二进制文件与电子捆绑在一起

沃侯林
2023-03-14
问题内容

我正尝试在电子应用程序中包含预编译的二进制文件。我从电子快速启动应用程序开始,然后修改了我的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/。一切在开发面板中都运行良好,但是当我使用electronic-
packager设置应用程序时,spawn error ENOENT在触发时会向控制台抛出a,但是似乎并没有得到明确的答案。electronic-
packager上

npm页面确实显示它们可以捆绑在一起,但是我找不到任何有关捆绑方法的文档。


问题答案:

如果有人碰巧需要这个问题的答案:我确实有解决方案,但是我不知道这是否被认为是最佳实践。我找不到包含第三方预编译二进制文件的任何好的文档,因此我一直在弄弄它直到最终起作用。这是我做的(从电子快速入门,node.js
v6开始):

在app目录中,我运行了以下命令以将ffmpeg二进制文件包含为模块:

mkdir node_modules/ffmpeg
cp /usr/local/bin/ffmpeg node_modules/ffmpeg/
ln -s ../ffmpeg/ffmpeg node_modules/.bin/ffmpeg

(将/ usr / local / bin /
ffmpeg替换为您当前的二进制路径,然后从此处下载)放置链接允许电子打包程序包括我保存到node_modules / ffmpeg /的二进制文件。

然后,为了获取捆绑的应用程序路径,我通过运行以下命令安装了npm软件包app-root-dir:

npm i -S app-root-dir

由于可以获取应用程序路径,因此我只为二进制文件添加了子文件夹并从那里生成了。这是我放在renderer.js中的代码:

var appRootDir = require('app-root-dir').get();
var ffmpegpath=appRootDir+'/node_modules/ffmpeg/ffmpeg';
console.log(ffmpegpath);

const
    spawn = require( 'child_process' ).spawn,
    ffmpeg = spawn( ffmpegpath, ['-i',clips_input[0]]);  //add whatever switches you need here

ffmpeg.stdout.on( 'data', data => {
     console.log( `stdout: ${data}` );
    });
   ffmpeg.stderr.on( 'data', data => {
console.log( `stderr: ${data}` );
    });


 类似资料:
  • 问题内容: 关于如何将像imagemagick这样的第三方预编译二进制文件包含到电子应用程序中,是否有很好的解决方案?有node.js模块,但它们都是包装程序或与系统范围内已安装库的本地绑定。我想知道是否可以在发行版中捆绑预编译的二进制文件。 问题答案: 请参阅 下面的 UPDATE (此方法现在并不理想)。 我确实找到了解决方案,但是我不知道这是否被视为最佳实践。我找不到包含第三方预编译二进制文

  • 问题内容: 正如在回答我的问题提到这里,设置在道路chromedriver 在Pyinstaller规范文件()没有效果(除非它被设置不正确)。也就是说,只要chromedriver在PATH中(本例中为/ usr/ bin),就可以对其进行访问。我的问题涉及在后台捆绑chromedriver的可能性,因此不必手动将其安装在另一台计算机上。 问题答案: 我成功地将chromedriver与pyin

  • 问题内容: 我尝试使用go-bindata和packr,但是这些软件包没有显示如何将SQLite数据库文件打包为二进制文件。 我不需要以任何方式更新数据库,我只想在启动时从中读取数据。 如何将SQLite数据库文件嵌入Go二进制文件中? 问题答案: SQLite驱动程序无法从内存(例如,从字节片)读取数据库文件。但是您可以将数据写入临时文件,然后打开该文件: 您可以使用以下方式将数据库写入: 如果

  • 如何创建一个预Compiled二进制框架,类似于在这个git repo上使用cloud firestore所做的事情:https://github.com/invertase/firestore-ios-sdk-frameworks 谢谢!

  • 我从。jar文件创建了。exe文件。现在我的客户机要求运行应用程序而不在系统中安装jre。我听说使用捆绑的jre是可能的...但我不知道如何将jre与。exe文件捆绑...

  • 我正在为Mac计算机创建一个JAVA桌面应用程序,使用jpack将所需的JRE捆绑到应用程序中,最后将. app发送给客户。 对于新的m1苹果arm硅计算机,我不想使用正确的JRE(intel)为每个处理器架构创建不同的应用程序 我试图创建两个。应用程序和使用mac命令行中的lipo工具,但这并不能真正起作用。 有什么建议吗?