我正在使用为 android 编译的 ffmpeg 并且目前可以正常工作,但是有时会出现错误(基于某些 android 手机配置)并且应用程序只是强制关闭并显示以下消息:
Fatal signal 11 (SIGSEGV) at 0x00000001 (code=1), thread 20745 (AsyncTask #2)
ffmpeg 调用在 try/catch 中;然而,它似乎并不关心。
那么,我该如何防止这种强制关闭并向用户显示消息呢?
最佳答案
I'm afraid I can't do that.另请参阅此答案 hints at why .
当 ffmpeg 死亡时,它会带走您的整个程序。事情就是这样。用 Java 编程时,您不必考虑程序会以那种方式崩溃,但是当用 C 编写的 ffmpeg 死掉时,它可能会毁掉您的整个 Java 程序。
try/catch
没有帮助,因为 ffmpeg 不知道也不关心 Java 异常。留在 Java 程序中的唯一解决方案是找到导致 ffmpeg 死亡的错误,或者找到触发错误的原因并以不会崩溃的方式调用 ffmpeg。正如 Alex Cohn 所指出的,另一种解决方案是在另一个进程中运行 ffmpeg,这样它就只能关闭自己的进程。
关于android - C JNI 库使整个 Android 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161122/