java - 如何为 .SO 文件设置相对路径?

标签 java android ffmpeg android-ndk configure

这是我的错误:

06-29 16:52:37.729 24144-24144/com.my.app E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.my.app, PID: 24144 java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "build/obj/local/armeabi/libavformat.so" needed by "libFFmpegWrapper.so"; caused by library "build/obj/local/armeabi/libavformat.so" not found



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

最佳答案

通过加载所有必需的库而不是让系统自己尝试找到它们来解决。

System.loadLibrary("x264");
System.loadLibrary("avutil");
System.loadLibrary("avcodec");
System.loadLibrary("avformat");
System.loadLibrary("swresample");
System.loadLibrary("swscale");
System.loadLibrary("FFmpegWrapper");

关于java - 如何为 .SO 文件设置相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31120428/

相关文章:

java - 如何使用 Maven 构建用于生产的 Javafx + Spring

java - android http URL 连接适用于 https,不适用于 http

android - 1mb 文件大小限制的方式?

node.js - 如何将 Opus 流从 Discord 传输到 RTP

python - 将视频帧与另一个图像python进行比较?

FFMpeg Concat 过滤器 - 设置文件的起始位置

java - readUTF 在套接字文件传输 JAVA 中不从第二次读取

java - 想要在java中显示从mysql数据库检索到的多个数据

java - 为什么我收到输入不匹配错误 (Java)

java - 我不能选择我创建的其他单选按钮?