2017-12-04 16 views
1

私はMac AppStoreに公開された電子アプリを持っており、サンドボックス化されています。FfmpegがElectronサンドボックスアプリケーションで中止される

私はElectronのコンテキストでより多くのビデオフォーマットをストリーミングできるように、ビデオを即座にエンコード/デコードする新しい機能を追加しようとしています。

私はfluent-ffmpegstatic exec of ffmpegを使用しています。

私はAppleにサンドボックスアプリケーションをアップロードしていますが、ffmpegはデフォルトで非公開APIを使用している安全なトランスポートプロトコルを使用しているため、拒否されました。 :

Your app uses or references the following non-public API(s):

'/System/Library/Frameworks/Security.framework/Versions/A/Security'

: SecIdentityCreate

よしは、多くの研究の後に、私が--disable-securetransportフラグを使用して自分自身をffmpegのコンパイルする必要があることが表示されます。簡単に言えば、静的ビルドと同じ設定を使用して、新しいフラグを追加するだけでダウンロードできます。

私が推測すると、単純にconfigureコマンドからそのフラグを削除し、libxavsを除き、必要なすべての依存関係をインストールするには大したを管理していない:予想通り

./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の幹部で、すべてがまだ動作します。しかし、私は、包装、署名やアプリをサンドボックス化していたら、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を使用すると、サンドボックスでは機能しませんが、静的なものを使用すると、すべてのようにxattrの後には問題ありません。

私が気づいた唯一のことは、自分のカスタムコンパイルが20m程度で、ダウンロードした静的インストールが43moであることです。

私は本当にこれに固執しています。

+0

'--enable-static'と' --extra-ldflags = -static'を追加してみてください。 – Mulvya

+0

ありがとう、私はそれを試しています。 '--extra-ldflags = -static'は使用できませんでしたが、 'Cコンパイラテストに失敗しました'というエラーが表示され、クロスコンパイルが行われました。なしで試してみてください。 – YoannM

+0

@Mulvya動作しませんでしたが、結果は同じです:( – YoannM

答えて

0

私は最終的に静的なffmpeg実行可能ファイルをコンパイルすることができました。

this answerのおかげで解決策が見つかりました。

明らかに、OSXには/usr/local/binにあるダイナミックライブラリがあり、他のすべてよりも優先されます。したがって、静的にffmpegをコンパイルしようとしても、途中でこれらのライブラリでは動作しません。

これらのファイルをすべて削除すると、/usr/local/bin/*.dylibビルドが完全に静的になり、サンドボックスで完全に機能しました。

関連する問題