这是我的错误:
06-29 16:52:37.729 24144-24144 / com.my.app E / AndroidRuntime:FATAL 例外:主要 过程:com.my.app,PID:24144 java.lang.UnsatisfiedLinkError:dlopen失败:无法加载库" build / obj / local / armeabi / libavformat.so"需要的 " libFFmpegWrapper.so&#34 ;;由图书馆引起的 "建立/ OBJ /本地/ armeabi / libavformat.so"找不到
build / obj / local / armeabi / libavformat.so看起来对我不对。该代码使用了早期版本的ffmpeg - 所以我怀疑它与我构建ffmpeg的方式有关。
libavformat.so文件位于我期望的APK中。
这是我的ffmpeg构建脚本:
#!/bin/bash
NDK=/Users/eran/Downloads/android-ndk-r10e
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
PLATFORM=$NDK/platforms/android-12/arch-arm
PREFIX=/usr/local
function build_one
{
./configure --target-os=android --prefix=$PREFIX \
--pkg-config=./fake-pkg-config \
--enable-cross-compile \
--cpu=armv7-a \
--enable-shared \
--disable-static \
--disable-asm \
--arch=arm \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--disable-stripping \
--nm=$PREBUILT/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--disable-nonfree \
--disable-version3 \
--disable-everything \
--enable-gpl \
--disable-doc \
--enable-avresample \
--disable-demuxer=rtsp \
--disable-muxer=rtsp \
--disable-ffplay \
--disable-ffserver \
--enable-ffmpeg \
--disable-ffprobe \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--disable-protocol=rtp \
--enable-hwaccels \
--enable-zlib \
--disable-devices \
--disable-avdevice \
--extra-cflags="-I/usr/local/include -fPIC -DANDROID -Wno-deprecated -mfloat-abi=softfp -mfpu=neon -march=armv7-a" \
--extra-ldflags="-L/usr/local/lib -Wl,--fix-cortex-a8" \
--extra-cxxflags='-Wno-multichar -fno-exceptions -fno-rtti'
make -j4 install
}
build_one
答案 0 :(得分:0)
通过加载所有必需的库来解决,而不是让系统尝试自己找到它们。
System.loadLibrary("x264");
System.loadLibrary("avutil");
System.loadLibrary("avcodec");
System.loadLibrary("avformat");
System.loadLibrary("swresample");
System.loadLibrary("swscale");
System.loadLibrary("FFmpegWrapper");