3
- 我建立一个混合模式的Android项目,该项目使用原生的ffmpeg
- 的利布斯是
2.1。 libavutil.so - > libavutil.so.51
2.2。 libavcodec.so - > libavcodec.so.54
2.3。 libavformat.so - > libavformat.so.54 - 我的Java代码包括以下JNI部加载天然库:
静态{
的System.loadLibrary( “avutil”);
System.loadLibrary(“avcodec”);
System.loadLibrary(“avformat”);
} - 'libavcodec.so'取决于'libavutil.so.51'而不是'libavutil.so'。
- 运行我的活动时System.loadLibrary(“avcodec”);节选与“无法加载所需的库‘libavutil.so.51’为‘libavcodec.so’(图书馆libavutil.so.51'未找到)”
- 在我的Android.mk我有以下部分有天然库加入到APK:
包括$(CLEAR_VARS)
LOCAL_MODULE:= MYLIB
LOCAL_SRC_FILES:= ../../../mylib/libmylib.so
包括$(PREBUILT_SHARED_LIBRARY )
- 将libmylib.so替换为libmylib.so。%some num BER%导致构建失败,[LOCAL_SRC_FILES应指向与“所以”结尾的文件]
铭记上述情况,我怎么能有libavcodec的加载W/O的依赖问题吗?
- 我可以修复libavcodec.so依赖项来指向libavutil.so而不是libavutil.so.51吗?
- 我可以更改Android.mk,以便能够打包libavutil.so.51(非.SO延长)吗?那么它会使用'System.loadLibrary'加载吗?
任何帮助将不胜感激!
Nadav在Sophin
- 我可以修复libavcodec.so依赖项来指向libavutil.so而不是libavutil.so.51吗?
有没有找到一个真正的解决方案呢?由于LGPL,我处于同一个漏洞并面临同样的限制。 – spartygw 2013-06-06 02:32:49
好吧,我终于找到了解决方案,通过更改ffmpeg的发行版中的Makefile来生成没有版本后缀的库。所以我有真正的libavutil.so,libavcodec.so,libswscale.so和所有的工作在我的nexus 4! – spartygw 2013-06-06 04:21:45
嗨买,我使用最新的FFMPEG时面临同样的问题,你的观点非常有用,但是我还没有完成,由于我不知道如何改变,你能帮我指出如何改变它吗? – Sean 2014-10-24 05:44:22