Javascript Ffmpeg在电子沙盒应用程序中中止

Javascript Ffmpeg在电子沙盒应用程序中中止,javascript,macos,ffmpeg,electron,appstore-sandbox,Javascript,Macos,Ffmpeg,Electron,Appstore Sandbox,我有一个Electron应用程序,发布在Mac AppStore上,并安装了沙盒 我正在尝试添加一个新功能,可以动态编码/解码视频,这样我就可以在电子环境中传输更多的视频格式 我正在使用和一个 一切都运行得很好,我已经将沙盒应用程序上传到苹果,但被拒绝了,因为ffmpeg默认使用的是一个使用非公共API的安全传输协议,这是他们发送给我的拒绝: 您的应用程序使用或引用以下非公共API: “/System/Library/Frameworks/Security.framework/Versions/

我有一个Electron应用程序,发布在Mac AppStore上,并安装了沙盒

我正在尝试添加一个新功能,可以动态编码/解码视频,这样我就可以在电子环境中传输更多的视频格式

我正在使用和一个

一切都运行得很好,我已经将沙盒应用程序上传到苹果,但被拒绝了,因为ffmpeg默认使用的是一个使用非公共API的安全传输协议,这是他们发送给我的拒绝:

您的应用程序使用或引用以下非公共API:

“/System/Library/Frameworks/Security.framework/Versions/A/Security”

:SecIdentityCreate

好的,经过大量的调查,似乎我必须自己用一个
--disable securetransport
标志编译ffmpeg。很简单,我使用与我下载的静态构建相同的配置,只需添加新标志

我设法安装了所需的所有依赖项,除了
libxavs
,我想这没什么大不了的,只需从configure命令中删除它的标志:

./configure \
--cc=/usr/bin/clang \
--prefix=/opt/ffmpeg \
--extra-version=tessus \
--enable-avisynth \
--enable-fontconfig \
--enable-gpl \
--enable-libass \
--enable-libbluray \
--enable-libfreetype \
--enable-libgsm \
--enable-libmodplug \
--enable-libmp3lame \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libopus \
--enable-libsnappy \
--enable-libsoxr \
--enable-libspeex \
--enable-libtheora \
--enable-libvidstab \
--enable-libvo-amrwbenc \
--enable-libvorbis \
--enable-libvpx \
--enable-libwavpack \
--enable-libx264 \
--enable-libx265 \
--enable-libxvid \
--enable-libzmq \
--enable-libzvbi \
--enable-version3 \
--pkg-config-flags=--static \
--disable-securetransport \
--disable-ffplay
有了新的ffmpeg exec,一切仍按预期工作。但一旦我对应用程序进行打包、签名和沙箱处理,ffmpeg就会在我尝试启动它时停止工作,并抛出以下错误:

An error occurred ffmpeg was killed with signal SIGABRT Error: ffmpeg was killed with signal SIGABRT
    at ChildProcess.eval (webpack:///../node_modules/fluent-ffmpeg/lib/processor.js?:180:22)
    at emitTwo (events.js:125:13)
    at ChildProcess.emit (events.js:213:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
我已尝试删除
--disable securetransport
标志,看看它是否会弄乱某些东西,同样的结果

我试着在Linux机器上编译,只是想看看它是否有帮助,同样的事情

当我使用自定义编译的exec时,它在沙箱中不起作用,但是当使用静态exec时,一切都正常(在我使用它之后,因为)

我注意到的唯一一件奇怪的事情是,当我下载的静态安装是43mo时,我的自定义编译只有20mo左右


我真的被这个问题困扰了。

所以我终于能够编译我的静态ffmpeg可执行文件了

多亏了你,我找到了解决办法

显然,OSX的动态库位于
/usr/local/bin
中,它优先于其他所有库。因此,即使您试图将ffmpeg编译为静态的,它也无法与这些库一起工作


一旦我删除了所有这些
/usr/local/bin/*.dylib
我的构建就变成了完全静态的,并且在沙箱中工作得很好。

尝试使用
--启用静态
和添加
--额外的ldflags=-静态
。谢谢,我正在尝试。无法使用
--extra-ldflags=-static
,但始终会收到关于“C编译器测试失败”和交叉编译的错误。尝试不使用。@Mulvya它不起作用,我得到了相同的结果:(你的全局CFLAG是什么,LDFLAGS?我没有,是吗?(害怕愚蠢的问题)你好,我正在尝试解决这个问题(这里报道:)在本地构建ffmpeg之前,您是否删除了本地计算机上的文件?我正在尝试查找`/usr/local/bin/*.dylib`文件,但没有找到任何文件。我没有删除这些文件,只是移动了它们,运行了配置脚本,然后将文件放回。我在
/usr/local/bin/*.dylib
中也没有看到它们,但在
/usr>中看到了一堆/lib/*.dylib
。可能它们在更新后被移动了,我的脚本是3年前的,此后一定发生了更改。你能让我保持更新以便我可以向解决方案中添加更新吗?我正在尝试这样做,但我无法从文件夹
/usr/lib
中写入或复制文件,这涉及到SIP apple security?尝试查看我是否可以禁用le此安全性禁用SIP安全性,并将所有
/usr/lib/*.dylib
文件移动到我桌面上的其他文件夹中,但这会导致我的终端和finder窗口无法工作,无法打开notes应用程序。可能会进行工厂重置。移动这些lib的时间不应超过编译脚本的持续时间。并立即放回原位呃编译已经完成了。我自己做的就是编写脚本,首先移动lib,然后编译,最后将lib放回原位。系统需要这些lib。