报错:More than one file was found with OS independent path 'lib/armeabi-v7a/libavutil.so'
在ffmpeg移植到Android平台中遇到的坑,参考这个问题:More than one file was found with OS independent path 'lib/armeabi-v7a/xxxx.so'_teleger的博客-优快云博客
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
buildToolsVersion '28.0.2'
defaultConfig {
applicationId "cc.dewdrop.ffplayer"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions"
}
}
ndk {
//, 'arm64-v8a', 'x86', 'x86_64'
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
productFlavors {
}
packagingOptions {
//armeabi-v7a
pickFirst "lib/armeabi-v7a/libavdevice.so"
pickFirst "lib/armeabi-v7a/libavcodec.so"
pickFirst "lib/armeabi-v7a/libavfilter.so"
pickFirst "lib/armeabi-v7a/libavformat.so"
pickFirst "lib/armeabi-v7a/libavutil.so"
pickFirst "lib/armeabi-v7a/libswresample.so"
pickFirst "lib/armeabi-v7a/libswscale.so"
//arm64-v8a
pickFirst "lib/arm64-v8a/libavdevice.so"
pickFirst "lib/arm64-v8a/libavcodec.so"
pickFirst "lib/arm64-v8a/libavfilter.so"
pickFirst "lib/arm64-v8a/libavformat.so"
pickFirst "lib/arm64-v8a/libavutil.so"
pickFirst "lib/arm64-v8a/libswresample.so"
pickFirst "lib/arm64-v8a/libswscale.so"
//x86
pickFirst "lib/x86/libavdevice.so"
pickFirst "lib/x86/libavcodec.so"
pickFirst "lib/x86/libavfilter.so"
pickFirst "lib/x86/libavformat.so"
pickFirst "lib/x86/libavutil.so"
pickFirst "lib/x86/libswresample.so"
pickFirst "lib/x86/libswscale.so"
//x86_64
pickFirst "lib/x86_64/libavdevice.so"
pickFirst "lib/x86_64/libavcodec.so"
pickFirst "lib/x86_64/libavfilter.so"
pickFirst "lib/x86_64/libavformat.so"
pickFirst "lib/x86_64/libavutil.so"
pickFirst "lib/x86_64/libswresample.so"
pickFirst "lib/x86_64/libswscale.so"
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.blankj:utilcode:1.30.6'
}
即可运行,在Android11上需要对读取文件单独处理
引入工具类
implementation 'com.blankj:utilcode:1.30.6'
case R.id.button_play:
//String videoPath = Environment.getExternalStorageDirectory() + "/Movies/PERU.MP4";
// String videoPath = Environment.getExternalStorageDirectory() + "/DCIM/Camera/VID_157.mp4";
String path = Utils.getApp().getExternalFilesDir("") + File.separator;
FileUtils.createOrExistsDir(path);
path += "VID_157.mp4";
LogUtils.i(path);
mVideoView.playVideo(path);
break;
效果: