動画加工関連のAndroidアプリです。使用されているライブラリはffmpeg + x264
であり、ffmpeg_vitamio の作業に基づいて大まかにコンパイルされています
ffmpeg のコンパイルは良好で、以下に従って libffmpeg.so が作成されます。
$CC -lx264 -lm -lz -shared --sysroot=$SYSROOT -Wl,--no-undefined -Wl,-z,noexecstack $EXTRA_LDFLAGS libavutil/*.o libavutil/arm/*.o libavcodec/*.o libavcodec/arm/*.o libavformat/*.o libswresample/*.o libswresample/arm/*.o libswscale/*.o -o $PREFIX/libffmpeg.so
ここに含まれる libx264 は、libx264.so.130 から名前が変更された共有ライブラリです。
次にlibffmpeg.so
、Android プロジェクトを入れます。コンパイルは問題ありません。しかし、実行時のエラーは次のとおりです。
05-21 13:17:45.066: E/AndroidRuntime(3973): FATAL EXCEPTION: main
05-21 13:17:45.066: E/AndroidRuntime(3973): java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libx264.so.130" needed by "libffmpeg.so"; caused by load_library(linker.cpp:745): library "libx264.so.130" not found
libffmpeg.so を作成するときに、-lx264 を使用したと思います。すべてのリンク ライブラリが最終的な出力ライブラリに含まれると思いました。
とにかく、解決策を見つけようとしましょう。libx264.so または libx264.so.130 を /jni、/libs、/obj などのいくつかのディレクトリに配置しました。
または、jni の Android.mk に -lx264 を追加しようとしました。
しかし、同じエラーが存在します。
私の質問は次のとおりです。(1) gcc が共有ライブラリを作成するとき、出力 .so ライブラリには、リンクされた共有ライブラリ、ここでは libx264.so が含まれていますか?
(2) 上記のプロジェクトの何が問題になっていますか?