首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在电子应用程序中捆绑ffmpeg

如何在电子应用程序中捆绑ffmpeg
EN

Stack Overflow用户
提问于 2017-12-17 02:11:27
回答 2查看 2.5K关注 0票数 3

我正在从electron-webpack样板开始构建一个电子应用程序。

我找到了这个节点模块@ffmpeg-installer/ffmpeg,它将一个兼容的预编译二进制文件安装到/node_modules目录中,然后通过访问该可执行文件的路径。

代码语言:javascript
复制
const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path

这在开发期间工作得很好,但是当我构建可分发文件并运行它时,我在尝试使用该路径派生一个子进程时出现错误。可能是因为路径不指向二进制文件。

在运行可分发文件时,路径设置为以下内容。

代码语言:javascript
复制
/Users/me/project/dist/mac/AppName.app/Contents/Resources/app.asar/node_modules/@ffmpeg-installer/darwin-x64/ffmpeg

但是,在查看AppName.app包内容时,我在以下路径中找到了该二进制文件。

代码语言:javascript
复制
/Users/me/project/dist/mac/AppName.app/Contents/Resources/app.asar.unpacked/node_modules/@ffmpeg-installer/darwin-x64/ffmpeg

如何在使用electron-webpackelectron-builder的电子应用程序中包含二进制依赖项

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-17 02:15:24

这很可能是因为电子会将应用程序捆绑在一个asar归档中(类似于zip/tar/jar)。因此,无法解析可执行文件的路径。尝试将asar: false传递给electron-builder (在electron-builder.json中)。

票数 2
EN

Stack Overflow用户

发布于 2020-12-28 22:23:39

From here:

安装:npm i ffmpeg-static ffprobe-static

包括在您package.json

代码语言:javascript
复制
build{
...
    "asarUnpack":[
        "node_modules/ffmpeg-static/bin/${os}/${arch}/ffmpeg",
        "node_modules/ffmpeg-static/index.js",
        "node_modules/ffmpeg-static/package.json"
        ]
    }

在您的JS中设置路径:

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47848621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档