首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaCV & FFmpegMediaMetadataRetriever : DuplicateFileException

JavaCV & FFmpegMediaMetadataRetriever : DuplicateFileException
EN

Stack Overflow用户
提问于 2017-08-02 21:40:19
回答 1查看 366关注 0票数 0

在我的安卓项目中,我使用JavaCV,我还需要FFmpegMediaMetadataRetriever来检索给定位置的帧:

代码语言:javascript
运行
复制
dependencies {
    ...
    compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.3.3'
    compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-arm'
    compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-x86'
    compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-arm'
    compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-x86'
    compile 'com.github.wseemann:FFmpegMediaMetadataRetriever:1.0.14'
    ...
}

gradle编译失败,出现DuplicateFileException错误:

代码语言:javascript
运行
复制
Error:Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK lib/x86/libavcodec.so
    File1: C:\Users\pingu\.gradle\caches\modules-2\files-2.1\org.bytedeco.javacpp-presets\ffmpeg\3.2.1-1.3\65a0880fd927fe901cead47b9c4be9ae76a28764\ffmpeg-3.2.1-1.3-android-x86.jar
    File2: C:\Users\pingu\.android\build-cache\957befefe8a63ddc13213dcddf7f709338e00edc\output\jni

有没有办法在我的android应用程序中同时拥有这个库?提前感谢

EN

回答 1

Stack Overflow用户

发布于 2017-08-10 17:44:20

下面的步骤对我很有效。

首先,将以下行添加到build.gradle文件中:

代码语言:javascript
运行
复制
packagingOptions {
    pickFirst 'lib/x86/libavcodec.so'
    pickFirst 'lib/x86/libavformat.so'
    pickFirst 'lib/x86/libavutil.so'
    pickFirst 'lib/x86/libswscale.so'
    pickFirst 'lib/armeabi/libavcodec.so'
    pickFirst 'lib/armeabi/libavformat.so'
    pickFirst 'lib/armeabi/libavutil.so'
    pickFirst 'lib/armeabi/libswscale.so'
    ...
}

然后编译看起来是可以的,但是在运行时得到一个错误:

代码语言:javascript
运行
复制
java.lang.UnsatisfiedLinkError: [...] couldn't find "libjniopencv_core.so"

要修复它,请执行以下操作:

opencv-3.2.0-1.3-android-x86.jarapp/src/main/jniLibs/x86

  • extract创建应用程序文件夹/src///jniLibs/{arm,armeabi-v7a,从opencv-3.2.0-1.3-android-arm.jar到app/src/main/jniLibs/x86
  • extract *.so /src/main/jniLibs/{arm,armeabi -v7a,armeabi-v7a}

然后重新生成项目

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45462553

复制
相关文章

相似问题

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